<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>만들면서 배워가는 프로그래머</title>
    <link>https://aries574.tistory.com/</link>
    <description>만들면서 부딪치며 배워가는 이야기를 담는 공간입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 21:10:05 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>aries574</managingEditor>
    <image>
      <title>만들면서 배워가는 프로그래머</title>
      <url>https://tistory1.daumcdn.net/tistory/2186566/attach/114019a0beef4980bb052e87f38651bb</url>
      <link>https://aries574.tistory.com</link>
    </image>
    <item>
      <title>[안드로이드 코틀린] Compose - 버튼 클릭해서 숫자 카운트 하는 방법</title>
      <link>https://aries574.tistory.com/492</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-Counter-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F0pmq/btslhdyGx5c/e8A8EmM0TkhyAZrSko81FK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F0pmq/btslhdyGx5c/e8A8EmM0TkhyAZrSko81FK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F0pmq/btslhdyGx5c/e8A8EmM0TkhyAZrSko81FK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF0pmq%2FbtslhdyGx5c%2Fe8A8EmM0TkhyAZrSko81FK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Compose-Counter-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 버튼을 눌러 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;숫자 카운트&lt;/span&gt; &lt;/b&gt;하는 방법을 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 카운트 기능 함수&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 레이아웃 함수&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 전체 코드&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;컴포즈-카운트.webp&quot; data-origin-width=&quot;411&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buiXst/btslqhG73Vt/q3YkjFZcaz6h5g7MOXns81/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buiXst/btslqhG73Vt/q3YkjFZcaz6h5g7MOXns81/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buiXst/btslqhG73Vt/q3YkjFZcaz6h5g7MOXns81/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuiXst%2FbtslqhG73Vt%2Fq3YkjFZcaz6h5g7MOXns81%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;411&quot; height=&quot;875&quot; data-filename=&quot;컴포즈-카운트.webp&quot; data-origin-width=&quot;411&quot; data-origin-height=&quot;875&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 카운트 기능 함수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. remember&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- Compose의&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;상태&amp;nbsp;보존&lt;/span&gt;&lt;/b&gt;&amp;nbsp;함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 화면이&amp;nbsp;다시&amp;nbsp;그려져도&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;상태&lt;/b&gt;&lt;/span&gt;를&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;유지&lt;/b&gt;&lt;/span&gt;하고&amp;nbsp;일관성&amp;nbsp;있는&amp;nbsp;동작을&amp;nbsp;보장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. mutableStateOf(값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- Compose에서&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가변&amp;nbsp;상태를&amp;nbsp;생성&lt;/span&gt;&lt;/b&gt;하는&amp;nbsp;함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- Compose가&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;상태&lt;/span&gt;&lt;/b&gt;를&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;추적&lt;/span&gt;&lt;/b&gt;하고&amp;nbsp;상태&amp;nbsp;변경&amp;nbsp;시&amp;nbsp;UI를&amp;nbsp;업데이트&lt;/p&gt;
&lt;pre id=&quot;code_1687755786418&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun CounterComponent(){

    var count by remember { mutableStateOf(0) }
    
    Button(onClick = { count++ }) {
        Text(text = &quot;숫자 증가&quot;)
    }
    
    Text(text = &quot;Counter: $count&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1341581400505483&quot;&gt;&lt;/script&gt;
&lt;!-- 디스플레이 수평 상단 광고_애드센스 --&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-slot=&quot;1959973104&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 레이아웃 함수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. fillMaxSize() : 세로, 가로 &lt;span style=&quot;color: #ee2323;&quot;&gt;최대 크기&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. verticalArrangement : &lt;span style=&quot;color: #ee2323;&quot;&gt;세로&lt;/span&gt; 위치 정렬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3. horizontalAlignment: &lt;span style=&quot;color: #ee2323;&quot;&gt;가로&lt;/span&gt; 위치 설정&lt;/p&gt;
&lt;pre id=&quot;code_1687755795425&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun MyApp(){
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        CounterComponent()
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 전체 코드&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1687755806122&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeSampleTheme {
                MyApp()
            }
        }
    }
}

@Composable
fun CounterComponent(){

    var count by remember { mutableStateOf(0) }
    
    Button(onClick = { count++ }) {
        Text(text = &quot;숫자 증가&quot;)
    }
    
    Text(text = &quot;Counter: $count&quot;)
}

@Composable
fun MyApp(){
    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        CounterComponent()
    }
}


@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {
        MyApp()
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/491&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.06.19 - [안드로이드] - [안드로이드 코틀린] Compose - 커스텀 텍스트뷰 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687756212873&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose - 커스텀 텍스트뷰 만드는 방법&quot; data-og-description=&quot;이번 시간에는 텍스트뷰 커스텀 하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 텍스트 스타일링 3. 텍스트 정렬 4. 텍스트뷰 가로, 세로 5. 텍스트 글자 간격 6. 텍스트 줄 간격 7. 텍스트 최대 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/491&quot; data-og-url=&quot;https://aries574.tistory.com/491&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bn8Zz7/hyS8sHNeBL/MKrL2HYgLT2LEDhfg9nG0k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/Xtf6D/hyS8lBUa71/1rovLdPe28FKThHegLTiH1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/491&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/491&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bn8Zz7/hyS8sHNeBL/MKrL2HYgLT2LEDhfg9nG0k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/Xtf6D/hyS8lBUa71/1rovLdPe28FKThHegLTiH1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose - 커스텀 텍스트뷰 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 텍스트뷰 커스텀 하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 텍스트 스타일링 3. 텍스트 정렬 4. 텍스트뷰 가로, 세로 5. 텍스트 글자 간격 6. 텍스트 줄 간격 7. 텍스트 최대&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/490&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.06.12 - [안드로이드] - [안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687756218545&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림&quot; data-og-description=&quot;이번 시간에는 클릭 이벤트(Click Event) 설정과 메시지(Toast) 알림 설정하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메시지 함수 3. 버튼 클릭 컴포저블 4. 이미지 클릭 컴포저블 5. 텍스트 클릭&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/490&quot; data-og-url=&quot;https://aries574.tistory.com/490&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwJTA3/hyS6GnnQp3/KGixoGWlanNwf4XRIDrOQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bkNAqr/hyS8ztnUQF/EAVMaEKkQUtaxot9PF3yVk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/490&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/490&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwJTA3/hyS6GnnQp3/KGixoGWlanNwf4XRIDrOQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bkNAqr/hyS8ztnUQF/EAVMaEKkQUtaxot9PF3yVk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 클릭 이벤트(Click Event) 설정과 메시지(Toast) 알림 설정하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메시지 함수 3. 버튼 클릭 컴포저블 4. 이미지 클릭 컴포저블 5. 텍스트 클릭&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.06.05 - [안드로이드] - [안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687756222581&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&quot; data-og-description=&quot;이번 시간에는 박스(Box)를 통해 모양(shape) 변경과 외곽선(shape) 주는 방법을 알아보겠습니다. 목차 1. 미리 보기 2. 박스 함수 3. 모양 변경(shape) 4. 외곽선 설정(border) 5. 전체 코드 1. 미리 보기 2. 박&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/488&quot; data-og-url=&quot;https://aries574.tistory.com/488&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lB5p9/hyS8uli9y9/XqZlekm7VITFa9lHeghjG1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/djb4iK/hyS6FhHydW/pgPpaaaUBFZrlL284ReohK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/eJkBRN/hyS8r3bSCV/otgdDiEcDrLKkPH56HFBIk/img.jpg?width=417&amp;amp;height=881&amp;amp;face=0_0_417_881&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/488&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lB5p9/hyS8uli9y9/XqZlekm7VITFa9lHeghjG1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/djb4iK/hyS6FhHydW/pgPpaaaUBFZrlL284ReohK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/eJkBRN/hyS8r3bSCV/otgdDiEcDrLKkPH56HFBIk/img.jpg?width=417&amp;amp;height=881&amp;amp;face=0_0_417_881');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 박스(Box)를 통해 모양(shape) 변경과 외곽선(shape) 주는 방법을 알아보겠습니다. 목차 1. 미리 보기 2. 박스 함수 3. 모양 변경(shape) 4. 외곽선 설정(border) 5. 전체 코드 1. 미리 보기 2. 박&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=yRGO7wl-mYs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/LRy3u/hyS6EJRMWH/RH5U3cPFY8qjmAc4PFNKZK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/yRGO7wl-mYs&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>compose</category>
      <category>Kotlin</category>
      <category>mutableStateOf</category>
      <category>remember</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/492</guid>
      <comments>https://aries574.tistory.com/492#entry492comment</comments>
      <pubDate>Mon, 26 Jun 2023 14:12:52 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose - 커스텀 텍스트뷰 만드는 방법</title>
      <link>https://aries574.tistory.com/491</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-CustomText-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9AjJy/btskDhUL1SM/cMnxHsof0iYOBVRQWZGLkk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9AjJy/btskDhUL1SM/cMnxHsof0iYOBVRQWZGLkk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9AjJy/btskDhUL1SM/cMnxHsof0iYOBVRQWZGLkk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9AjJy%2FbtskDhUL1SM%2FcMnxHsof0iYOBVRQWZGLkk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Compose-CustomText-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;텍스트뷰 커스텀&lt;/b&gt;&lt;/span&gt; 하는 방법을 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 텍스트 스타일링&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 텍스트 정렬&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 텍스트뷰 가로, 세로&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 텍스트 글자 간격&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 텍스트 줄 간격&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 텍스트 최대 줄 개수&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-CustomText-결과.webp&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;779&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UpVF7/btskCrwC52H/J1pMcwr0kFRDNrUZyB5RJ0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UpVF7/btskCrwC52H/J1pMcwr0kFRDNrUZyB5RJ0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UpVF7/btskCrwC52H/J1pMcwr0kFRDNrUZyB5RJ0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUpVF7%2FbtskCrwC52H%2FJ1pMcwr0kFRDNrUZyB5RJ0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;779&quot; data-filename=&quot;Compose-CustomText-결과.webp&quot; data-origin-width=&quot;360&quot; data-origin-height=&quot;779&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 텍스트 스타일링&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; color: 텍스트 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;색상&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; fontSize: 텍스트 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;크기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; fontWeight: 텍스트 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;굵기&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; background: &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;배경 색상&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173626002&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;텍스트 스타일링&quot;,
    style = TextStyle(
        color = Color.Red,
        fontSize = 20.sp,
        fontWeight = FontWeight.Bold
    ),
    modifier = Modifier.background(Color.Black)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1341581400505483&quot;&gt;&lt;/script&gt;
&lt;!-- 디스플레이 수평 상단 광고_애드센스 --&gt; &lt;/p&gt;
&lt;p&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-slot=&quot;1959973104&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 텍스트 정렬&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; textAlign: 정렬 [ &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Start&lt;/span&gt;&lt;/b&gt;(왼쪽), &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Center&lt;/span&gt;&lt;/b&gt;(가운데), &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;End&lt;/span&gt;&lt;/b&gt;(오른쪽)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; fillMaxWidth: &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가로 크기 최대&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173647429&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;텍스트 정렬&quot;,
    textAlign = TextAlign.Center,
    modifier = Modifier
        .fillMaxWidth()
        .background(Color.Yellow)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 텍스트뷰 가로, 세로&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; width: 가로 크기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173663756&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;가로 크기 설정&quot;,
    textAlign = TextAlign.Center,
    modifier = Modifier
        .width(100.dp)
        .background(Color.LightGray)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; height: 세로 크기&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173675101&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;세로 크기 설정&quot;,
    textAlign = TextAlign.Center,
    modifier = Modifier
        .height(100.dp)
        .background(Color.Magenta)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; size: 가로, 세로 크기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173687004&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;가로 세로 한 번에 설정&quot;,
    textAlign = TextAlign.Center,
    modifier = Modifier
        .size(150.dp)
        .background(Color.Green)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1341581400505483&quot;&gt;&lt;/script&gt;
&lt;!-- 디스플레이 수평 상단 광고_애드센스 --&gt; &lt;/p&gt;
&lt;p&gt;&lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-slot=&quot;1959973104&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 텍스트 글자 간격&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; letterSpacing: &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;글자 간격&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173706157&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;텍스트 글자 간격 조절&quot;,
    style = TextStyle(letterSpacing = 0.2.em),
    modifier = Modifier
        .size(150.dp)
        .background(Color.Red)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 텍스트 줄 간격&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; lineHeight: &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;줄 간격&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173720045&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(
    text = &quot;1.텍스트 줄 간격 조절 2.텍스트 줄 간격 조절 3.텍스트 줄 간격 조절 4.텍스트 줄 간격 조절&quot;,
    style = TextStyle(lineHeight = 30.sp),
    modifier = Modifier
        .size(150.dp)
        .background(Color.Cyan)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 텍스트 최대 줄 개수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; maxLine: &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;최대 줄 개수&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1687173732740&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Text(text = &quot;1. 최대 표시 줄 수 제한 2. 최대 표시 줄 수 제한 3. 최대 표시 줄 수 제한 4. 최대 표시 줄 수 제한 5. 최대 표시 줄 수 제한 6. 최대 표시 줄 수 제한&quot;,
    maxLines = 3,
    modifier = Modifier.background(Color.Gray)
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=XPoopQwsHR8&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/HVC8P/hyS2Cyf6cY/Xorg4ciS3z3q6bMZ4k4nTk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[안드로이드 코틀린] Compose - 커스텀 텍스트뷰 만드는 방법&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/XPoopQwsHR8&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/490&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.06.12 - [안드로이드] - [안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1687174245628&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림&quot; data-og-description=&quot;이번 시간에는 클릭 이벤트(Click Event) 설정과 메시지(Toast) 알림 설정하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메시지 함수 3. 버튼 클릭 컴포저블 4. 이미지 클릭 컴포저블 5. 텍스트 클릭&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/490&quot; data-og-url=&quot;https://aries574.tistory.com/490&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6UXJd/hyS2FodkCd/QICtLXeUrxWHOIfKlCfnNK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b0LNGP/hyS2CkIiur/Av1k3Lub6rirYPO5E6oq3K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/490&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/490&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6UXJd/hyS2FodkCd/QICtLXeUrxWHOIfKlCfnNK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b0LNGP/hyS2CkIiur/Av1k3Lub6rirYPO5E6oq3K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 클릭 이벤트(Click Event) 설정과 메시지(Toast) 알림 설정하는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 메시지 함수 3. 버튼 클릭 컴포저블 4. 이미지 클릭 컴포저블 5. 텍스트 클릭&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.06.05 - [안드로이드] - [안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687174250499&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&quot; data-og-description=&quot;이번 시간에는 박스(Box)를 통해 모양(shape) 변경과 외곽선(shape) 주는 방법을 알아보겠습니다. 목차 1. 미리 보기 2. 박스 함수 3. 모양 변경(shape) 4. 외곽선 설정(border) 5. 전체 코드 1. 미리 보기 2. 박&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/488&quot; data-og-url=&quot;https://aries574.tistory.com/488&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ReSMY/hyS2IZx6V4/Lws4yk7ZUKDGx2Cw8Bbn41/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/NsZ8G/hyS2J5eY8d/S5oEKArboWHNCdl2SJa6k0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lGezx/hyS2KXnRT9/Vf67VsVraBbxFNdcAR3JA0/img.jpg?width=417&amp;amp;height=881&amp;amp;face=0_0_417_881&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/488&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ReSMY/hyS2IZx6V4/Lws4yk7ZUKDGx2Cw8Bbn41/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/NsZ8G/hyS2J5eY8d/S5oEKArboWHNCdl2SJa6k0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lGezx/hyS2KXnRT9/Vf67VsVraBbxFNdcAR3JA0/img.jpg?width=417&amp;amp;height=881&amp;amp;face=0_0_417_881');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 박스(Box)를 통해 모양(shape) 변경과 외곽선(shape) 주는 방법을 알아보겠습니다. 목차 1. 미리 보기 2. 박스 함수 3. 모양 변경(shape) 4. 외곽선 설정(border) 5. 전체 코드 1. 미리 보기 2. 박&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.29 - [안드로이드] - [안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1687174258348&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&quot; data-og-description=&quot;이번 시간에는 Modifier(수정자)를 사용해서 컴포저블 크기, 간격, 가중치 설정하는 방법을 알아보겠습니다. 목차 1. 크기 2. 간격 3. 가중치 1. 크기 1-1 너비, 높이 최대 - fillMaxSize(): 너비, 높이 최대 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/487&quot; data-og-url=&quot;https://aries574.tistory.com/487&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dw7Vb1/hyS2xDKfAr/ijVn9tssIKMKCYUvE665J1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/AlspO/hyS2KiLUCh/atTkNGxqEyBgkEr6eV80k0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dabCus/hyS2D4ZUcn/HtdFohdEUOKlIDgyFExrUK/img.jpg?width=444&amp;amp;height=888&amp;amp;face=0_0_444_888&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/487&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dw7Vb1/hyS2xDKfAr/ijVn9tssIKMKCYUvE665J1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/AlspO/hyS2KiLUCh/atTkNGxqEyBgkEr6eV80k0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dabCus/hyS2D4ZUcn/HtdFohdEUOKlIDgyFExrUK/img.jpg?width=444&amp;amp;height=888&amp;amp;face=0_0_444_888');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Modifier(수정자)를 사용해서 컴포저블 크기, 간격, 가중치 설정하는 방법을 알아보겠습니다. 목차 1. 크기 2. 간격 3. 가중치 1. 크기 1-1 너비, 높이 최대 - fillMaxSize(): 너비, 높이 최대&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>compose</category>
      <category>custom</category>
      <category>TextView</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/491</guid>
      <comments>https://aries574.tistory.com/491#entry491comment</comments>
      <pubDate>Mon, 19 Jun 2023 20:33:53 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose - 클릭 이벤트(Click Event)와 메시지(Toast) 알림</title>
      <link>https://aries574.tistory.com/490</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-Click-_-Toast-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LBzAf/btsjm96Fwct/BKBkhsJ46KBKMoiJzYdqtk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LBzAf/btsjm96Fwct/BKBkhsJ46KBKMoiJzYdqtk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LBzAf/btsjm96Fwct/BKBkhsJ46KBKMoiJzYdqtk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLBzAf%2Fbtsjm96Fwct%2FBKBkhsJ46KBKMoiJzYdqtk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Compose-Click-_-Toast-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;클릭 이벤트&lt;/span&gt;&lt;/b&gt;(Click Event) 설정과 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;메시지&lt;/span&gt;&lt;/b&gt;(Toast) 알림 설정하는 방법을 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 메시지 함수&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 버튼 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 이미지 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 텍스트 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 박스 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 전체 코드&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-Click-_-Toast-실행-화면.webp&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;877&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PcYb3/btsjsgxrEse/JbRrDDqpU5yNY9kcThYPsk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PcYb3/btsjsgxrEse/JbRrDDqpU5yNY9kcThYPsk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PcYb3/btsjsgxrEse/JbRrDDqpU5yNY9kcThYPsk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPcYb3%2FbtsjsgxrEse%2FJbRrDDqpU5yNY9kcThYPsk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;877&quot; data-filename=&quot;Compose-Click-_-Toast-실행-화면.webp&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;877&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 메시지 함수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. &lt;span style=&quot;color: #ee2323;&quot;&gt;context&lt;/span&gt;: Context 정보&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. &lt;span style=&quot;color: #ee2323;&quot;&gt;message&lt;/span&gt;: 메시지 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3. &lt;span style=&quot;color: #ee2323;&quot;&gt;Toast.LENGTH_SHORT&lt;/span&gt;: 메시지 지속 시간&lt;/p&gt;
&lt;pre id=&quot;code_1686548125446&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun customToast(context:Context, message: String){

    Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 버튼 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. &lt;span style=&quot;color: #ee2323;&quot;&gt;LocalContext.current&lt;/span&gt;: context 정보 가져오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. Modifier.&lt;span style=&quot;color: #ee2323;&quot;&gt;size&lt;/span&gt;(100.dp): 가로, 세로 크기 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3. &lt;span style=&quot;color: #ee2323;&quot;&gt;onClick&lt;/span&gt;: 클릭 이벤트 설정&lt;/p&gt;
&lt;pre id=&quot;code_1686548138222&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun ButtonClick(){

    val context = LocalContext.current

    Button(
        modifier = Modifier.size(100.dp),
        onClick = { customToast(context, &quot;버튼 클릭&quot;) })
    {
        Text(text = &quot;버튼&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1341581400505483&quot;&gt;&lt;/script&gt;
&lt;!-- 디스플레이 수평 상단 광고_애드센스 --&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 이미지 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. &lt;span style=&quot;color: #ee2323;&quot;&gt;painter&lt;/span&gt;: 이미지 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. &lt;span style=&quot;color: #ee2323;&quot;&gt;painterResource&lt;/span&gt;: 이미지 위치 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 3. &lt;span style=&quot;color: #ee2323;&quot;&gt;contentDescription&lt;/span&gt;: 이미지 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 4. Modifier.&lt;span style=&quot;color: #ee2323;&quot;&gt;clickable&lt;/span&gt;: 클릭 이벤트 설정&lt;/p&gt;
&lt;pre id=&quot;code_1686548150957&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun ImageClick(){
    val context = LocalContext.current

    Image(
        painter = painterResource(id = R.drawable.ic_launcher_background),
        contentDescription = &quot;이미지&quot;,
        modifier = Modifier.clickable { customToast(context, &quot;이미지 클릭&quot;) }
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 텍스트 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. &lt;span style=&quot;color: #ee2323;&quot;&gt;text&lt;/span&gt;: 텍스트 설정&lt;/p&gt;
&lt;pre id=&quot;code_1686548161805&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun TextClick(){
    val context = LocalContext.current
    
    Text(
        text = &quot;클릭 텍스트&quot;,
        modifier = Modifier.clickable { customToast(context, &quot;텍스트 클릭&quot;) }

        )
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 박스 클릭 컴포저블&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1686548171598&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun BoxClick(){
    val context = LocalContext.current

    Box(modifier = Modifier
        .size(200.dp)
        .background(Color.Blue)
        .clickable { customToast(context, &quot;박스 클릭&quot;) }
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1341581400505483&quot;&gt;&lt;/script&gt;
&lt;!-- 디스플레이 수평 상단 광고_애드센스 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-slot=&quot;1959973104&quot; data-ad-format=&quot;auto&quot; data-full-width-responsive=&quot;true&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/b&gt;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 전체 코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1686548188502&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeSampleTheme {
                Column(
                    modifier = Modifier.fillMaxSize(),
                    verticalArrangement = Arrangement.SpaceEvenly,
                    horizontalAlignment = Alignment.CenterHorizontally
                ) {
                    ButtonClick()
                    ImageClick()
                    TextClick()
                    BoxClick()
                }
            }
        }
    }
}

fun customToast(context:Context, message: String){

    Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}

@Composable
fun ButtonClick(){

    val context = LocalContext.current

    Button(
        modifier = Modifier.size(100.dp),
        onClick = { customToast(context, &quot;버튼 클릭&quot;) })
    {
        Text(text = &quot;버튼&quot;)
    }
}

@Composable
fun ImageClick(){
    val context = LocalContext.current

    Image(
        painter = painterResource(id = R.drawable.ic_launcher_background),
        contentDescription = &quot;이미지&quot;,
        modifier = Modifier.clickable { customToast(context, &quot;이미지 클릭&quot;) }
    )
}

@Composable
fun TextClick(){
    val context = LocalContext.current
    
    Text(
        text = &quot;클릭 텍스트&quot;,
        modifier = Modifier.clickable { customToast(context, &quot;텍스트 클릭&quot;) }

        )
}

@Composable
fun BoxClick(){
    val context = LocalContext.current

    Box(modifier = Modifier
        .size(200.dp)
        .background(Color.Blue)
        .clickable { customToast(context, &quot;박스 클릭&quot;) }
    )
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {
        Column(
            modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.SpaceEvenly,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            ButtonClick()
            ImageClick()
            TextClick()
            BoxClick()
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.06.05 - [안드로이드] - [안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686548198955&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&quot; data-og-description=&quot;이번 시간에는 박스(Box)를 통해 모양(shape) 변경과 외곽선(shape) 주는 방법을 알아보겠습니다. 목차 1. 미리 보기 2. 박스 함수 3. 모양 변경(shape) 4. 외곽선 설정(border) 5. 전체 코드 1. 미리 보기 2. 박&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/488&quot; data-og-url=&quot;https://aries574.tistory.com/488&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bhq0dM/hySW76zGjC/LXVSAvBcepmyKakYkuu27K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b7Ug8f/hySW8ErwiM/g7V4nHr6kFk2rk5nmdP8fK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KbhBQ/hySW9QQNhm/xq9cSnBpEWfmWKJJO6qV70/img.jpg?width=417&amp;amp;height=881&amp;amp;face=0_0_417_881&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/488&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/488&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bhq0dM/hySW76zGjC/LXVSAvBcepmyKakYkuu27K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b7Ug8f/hySW8ErwiM/g7V4nHr6kFk2rk5nmdP8fK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KbhBQ/hySW9QQNhm/xq9cSnBpEWfmWKJJO6qV70/img.jpg?width=417&amp;amp;height=881&amp;amp;face=0_0_417_881');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 박스(Box)를 통해 모양(shape) 변경과 외곽선(shape) 주는 방법을 알아보겠습니다. 목차 1. 미리 보기 2. 박스 함수 3. 모양 변경(shape) 4. 외곽선 설정(border) 5. 전체 코드 1. 미리 보기 2. 박&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.29 - [안드로이드] - [안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686548201642&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&quot; data-og-description=&quot;이번 시간에는 Modifier(수정자)를 사용해서 컴포저블 크기, 간격, 가중치 설정하는 방법을 알아보겠습니다. 목차 1. 크기 2. 간격 3. 가중치 1. 크기 1-1 너비, 높이 최대 - fillMaxSize(): 너비, 높이 최대 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/487&quot; data-og-url=&quot;https://aries574.tistory.com/487&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fas5t/hySYIxk4Zl/qaf124kWpv1kK18q0ZGzu1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/IKarG/hySW1eeN2j/U2W8l7AKveIq9ZpEWKSkLk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/yLWns/hySYyuIWLk/ukklMKBml6c4Xp78aipK20/img.jpg?width=357&amp;amp;height=630&amp;amp;face=0_0_357_630&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/487&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fas5t/hySYIxk4Zl/qaf124kWpv1kK18q0ZGzu1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/IKarG/hySW1eeN2j/U2W8l7AKveIq9ZpEWKSkLk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/yLWns/hySYyuIWLk/ukklMKBml6c4Xp78aipK20/img.jpg?width=357&amp;amp;height=630&amp;amp;face=0_0_357_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Modifier(수정자)를 사용해서 컴포저블 크기, 간격, 가중치 설정하는 방법을 알아보겠습니다. 목차 1. 크기 2. 간격 3. 가중치 1. 크기 1-1 너비, 높이 최대 - fillMaxSize(): 너비, 높이 최대&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/486&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.22 - [안드로이드] - [안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1686548206833&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 LazyColumn를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다. RecyclerView를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/486&quot; data-og-url=&quot;https://aries574.tistory.com/486&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ccCdGt/hySYMT3ab9/jKFmmXwr1aBYiV04ey2XwK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cvCOaR/hySYCql7y5/9mtRTVK0I3nmkisjLUNlKK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/Ab4cQ/hySYBydrg2/GXYE5cIfNJuyjkbMsPdywk/img.jpg?width=413&amp;amp;height=868&amp;amp;face=0_0_413_868&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/486&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/486&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ccCdGt/hySYMT3ab9/jKFmmXwr1aBYiV04ey2XwK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cvCOaR/hySYCql7y5/9mtRTVK0I3nmkisjLUNlKK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/Ab4cQ/hySYBydrg2/GXYE5cIfNJuyjkbMsPdywk/img.jpg?width=413&amp;amp;height=868&amp;amp;face=0_0_413_868');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 LazyColumn를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다. RecyclerView를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=ps02omOIxn0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dVjV92/hySW7FwpSs/HDS44kHHibpO7L62Aa755K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/ps02omOIxn0&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>click</category>
      <category>compose</category>
      <category>Kotlin</category>
      <category>TOAST</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/490</guid>
      <comments>https://aries574.tistory.com/490#entry490comment</comments>
      <pubDate>Mon, 12 Jun 2023 14:48:20 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법</title>
      <link>https://aries574.tistory.com/488</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-shape-border-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eL7Exg/btsiwlfcyuy/cNzNcuc7XWVKpc99Dzi430/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eL7Exg/btsiwlfcyuy/cNzNcuc7XWVKpc99Dzi430/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eL7Exg/btsiwlfcyuy/cNzNcuc7XWVKpc99Dzi430/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeL7Exg%2Fbtsiwlfcyuy%2FcNzNcuc7XWVKpc99Dzi430%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Compose-shape-border-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 박스(Box)를 통해 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;모양(shape) &lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;변경&lt;/span&gt;&lt;/span&gt;과 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;외곽선(shape)&lt;/span&gt;&lt;/b&gt; 주는 방법을 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 박스 함수&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 모양 변경(shape)&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 외곽선 설정(border)&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 전체 코드&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모양 외곽선.JPG&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;881&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H1VqP/btsiwjuWjmz/4CJy6KXwQGSmDnTwt2qPuk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H1VqP/btsiwjuWjmz/4CJy6KXwQGSmDnTwt2qPuk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H1VqP/btsiwjuWjmz/4CJy6KXwQGSmDnTwt2qPuk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH1VqP%2FbtsiwjuWjmz%2F4CJy6KXwQGSmDnTwt2qPuk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;417&quot; height=&quot;881&quot; data-filename=&quot;모양 외곽선.JPG&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;881&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 박스 함수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. size: 가로, 세로 크기 150&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. background: 색상과 모양 설정&lt;/p&gt;
&lt;pre id=&quot;code_1685938626253&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun ShapeCompose(shape: Shape){
    Box(modifier = Modifier
        .size(150.dp)
        .background(Color.Red, shape)
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 모양 변경(shape)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. RectangleShape : &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;네모&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. CircleShape : &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;동그라미&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. RoundedCornerShape(20.dp) : &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;네모 모서리 둥글게&lt;/span&gt;&lt;/b&gt;(둥근 정도)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. CutCornerShape(20.dp) : &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;네모 모서리 각지게&lt;/span&gt;&lt;/b&gt;(각진 정도)&lt;/p&gt;
&lt;pre id=&quot;code_1685938674853&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {

        Column(modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.SpaceEvenly,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            ShapeCompose(shape = RectangleShape) //네모
            ShapeCompose(shape = CircleShape) //동그라미
            ShapeCompose(shape = RoundedCornerShape(20.dp)) //둥근(모서리) 모서리
            ShapeCompose(shape = CutCornerShape(20.dp)) // 각진 모서리
            LineCompose()
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 외곽선 설정(border)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;2. &lt;b&gt;border( 두께, 색상, 모양 )&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1685938685717&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun ShapeCompose(shape: Shape){
    Box(modifier = Modifier
        .size(150.dp)
        .background(Color.Red, shape)
        .border(10.dp, Color.Green, shape)
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 전체 코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1685939046014&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeSampleTheme {
                Column(
                    modifier = Modifier.fillMaxSize(),
                    verticalArrangement = Arrangement.SpaceEvenly,
                    horizontalAlignment = Alignment.CenterHorizontally
                ) {
                    ShapeCompose(RectangleShape)
                    ShapeCompose(CircleShape)
                    ShapeCompose(RoundedCornerShape(20.dp))
                    ShapeCompose(CutCornerShape(20.dp))
                }
            }
        }
    }
}

@Composable
fun ShapeCompose(shape: Shape){
    Box(modifier = Modifier
        .size(150.dp)
        .background(color = Color.Red, shape = shape)
        .border(10.dp, Color.Green, shape)
    )
}


@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {

        Column(
            modifier = Modifier.fillMaxSize(),
            verticalArrangement = Arrangement.SpaceEvenly,
            horizontalAlignment = Alignment.CenterHorizontally
        ) {
            ShapeCompose(RectangleShape)
            ShapeCompose(CircleShape)
            ShapeCompose(RoundedCornerShape(20.dp))
            ShapeCompose(CutCornerShape(20.dp))
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.29 - [안드로이드] - [안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685939063527&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&quot; data-og-description=&quot;이번 시간에는 Modifier(수정자)를 사용해서 컴포저블 크기, 간격, 가중치 설정하는 방법을 알아보겠습니다. 목차 1. 크기 2. 간격 3. 가중치 1. 크기 1-1 너비, 높이 최대 - fillMaxSize(): 너비, 높이 최대 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/487&quot; data-og-url=&quot;https://aries574.tistory.com/487&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b7YldN/hySTTeyJOX/yqBqAH9aX2JuAqQKvboUE1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cs9Edd/hySRSavhEh/0XWVp876NQmMWZch2tDKk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/TTw7p/hySR1ZBvVD/uSfJYmuKNDK08G3oOKuDek/img.jpg?width=444&amp;amp;height=888&amp;amp;face=0_0_444_888&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/487&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/487&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b7YldN/hySTTeyJOX/yqBqAH9aX2JuAqQKvboUE1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cs9Edd/hySRSavhEh/0XWVp876NQmMWZch2tDKk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/TTw7p/hySR1ZBvVD/uSfJYmuKNDK08G3oOKuDek/img.jpg?width=444&amp;amp;height=888&amp;amp;face=0_0_444_888');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Modifier(수정자)를 사용해서 컴포저블 크기, 간격, 가중치 설정하는 방법을 알아보겠습니다. 목차 1. 크기 2. 간격 3. 가중치 1. 크기 1-1 너비, 높이 최대 - fillMaxSize(): 너비, 높이 최대&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/486&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.22 - [안드로이드] - [안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685939070247&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 LazyColumn를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다. RecyclerView를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/486&quot; data-og-url=&quot;https://aries574.tistory.com/486&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZqM7d/hySTMNg203/FXK9zfkOueUSmzEAizs06k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dowdI1/hySTL1TMB5/E2XUYiKZFztwpkYoo8oEp0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b9y6GP/hySRY9DZhv/IaFSjrcKEUCHcJHyJDGlC1/img.jpg?width=413&amp;amp;height=868&amp;amp;face=0_0_413_868&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/486&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/486&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZqM7d/hySTMNg203/FXK9zfkOueUSmzEAizs06k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dowdI1/hySTL1TMB5/E2XUYiKZFztwpkYoo8oEp0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b9y6GP/hySRY9DZhv/IaFSjrcKEUCHcJHyJDGlC1/img.jpg?width=413&amp;amp;height=868&amp;amp;face=0_0_413_868');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 LazyColumn를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다. RecyclerView를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.15 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685939072024&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&quot; data-og-description=&quot;이번 시간에는 요소들을 겹치게 하는 Box에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - DummyBox(color: Color, dp: Dp) 색상과 크기를 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/485&quot; data-og-url=&quot;https://aries574.tistory.com/485&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxFw56/hySRQ4QRoD/3kqxtiEzJ8vZdDT4fbY1k1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bmIMzJ/hySTSfEybl/9w0fYJucgP9ogxlIHjYRNk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/c2jefK/hySRV6aeAi/FLGObkZqF2RdTzwGZ4nzIK/img.jpg?width=383&amp;amp;height=796&amp;amp;face=0_0_383_796&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/485&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxFw56/hySRQ4QRoD/3kqxtiEzJ8vZdDT4fbY1k1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bmIMzJ/hySTSfEybl/9w0fYJucgP9ogxlIHjYRNk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/c2jefK/hySRV6aeAi/FLGObkZqF2RdTzwGZ4nzIK/img.jpg?width=383&amp;amp;height=796&amp;amp;face=0_0_383_796');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 요소들을 겹치게 하는 Box에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - DummyBox(color: Color, dp: Dp) 색상과 크기를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=I5cR1NT_rmM&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/FDlwL/hySR4Pxqbf/qAH3eNpKQnBFZ41ZvBvrcK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[안드로이드 코틀린] Compose - 박스 모양(shape) 변경과 외곽선(border) 주는 방법&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/I5cR1NT_rmM&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>border</category>
      <category>compose</category>
      <category>Kotlin</category>
      <category>shape</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/488</guid>
      <comments>https://aries574.tistory.com/488#entry488comment</comments>
      <pubDate>Mon, 5 Jun 2023 13:28:52 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose Modifier - 크기, 간격, 가중치 설정하는 방법</title>
      <link>https://aries574.tistory.com/487</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-Modifier1-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNzrow/btshz1bvd08/VIhks8HuYlqIKl42q41qVk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNzrow/btshz1bvd08/VIhks8HuYlqIKl42q41qVk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNzrow/btshz1bvd08/VIhks8HuYlqIKl42q41qVk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNzrow%2Fbtshz1bvd08%2FVIhks8HuYlqIKl42q41qVk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Compose-Modifier1-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Modifier&lt;/b&gt;&lt;/span&gt;(수정자)를 사용해서 컴포저블 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;크기&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;간격&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가중치&lt;/span&gt;&lt;/b&gt; 설정하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;크기 &lt;br /&gt;2.&amp;nbsp;간격 &lt;br /&gt;3.&amp;nbsp;가중치&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;크기&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;1-1 너비, 높이 최대&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - fillMaxSize(): 너비, 높이 최대 설정&lt;/p&gt;
&lt;pre id=&quot;code_1685338064460&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier.fillMaxSize()){
        Box(modifier = Modifier
            .background(Color.Green)
            .fillMaxSize()
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;compose size.JPG&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;888&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beaYVN/btshBjib3ET/BHQVDEodzN1PkscXvlg2I0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beaYVN/btshBjib3ET/BHQVDEodzN1PkscXvlg2I0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beaYVN/btshBjib3ET/BHQVDEodzN1PkscXvlg2I0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeaYVN%2FbtshBjib3ET%2FBHQVDEodzN1PkscXvlg2I0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;444&quot; height=&quot;888&quot; data-filename=&quot;compose size.JPG&quot; data-origin-width=&quot;444&quot; data-origin-height=&quot;888&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-2 너비 최대, 높이 사용자 정의&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - fillMaxWidth: 너비 최대&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - height: 높이 설정&lt;/p&gt;
&lt;pre id=&quot;code_1685338174251&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier.fillMaxSize()){
        Box(modifier = Modifier
            .background(Color.Green)
            .fillMaxWidth()
            .height(100.dp)
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;size 너비 최대.JPG&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfMpCS/btshPovODqs/4hIHHLYtUkGkuz5pqdmEf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfMpCS/btshPovODqs/4hIHHLYtUkGkuz5pqdmEf1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfMpCS/btshPovODqs/4hIHHLYtUkGkuz5pqdmEf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfMpCS%2FbtshPovODqs%2F4hIHHLYtUkGkuz5pqdmEf1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;317&quot; height=&quot;628&quot; data-filename=&quot;size 너비 최대.JPG&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-3 높이 최대, 너비 사용자 정의&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - fillMaxHeight: 높이 최대&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - width: 너비 설정&lt;/p&gt;
&lt;pre id=&quot;code_1685338465284&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier.fillMaxSize()){
        Box(modifier = Modifier
            .background(Color.Green)
            .fillMaxHeight()
            .width(100.dp)
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;size 높이 최대.JPG&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYoPR4/btshMVAwA8g/2g0xCCvsehC7xHDKQlsql1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYoPR4/btshMVAwA8g/2g0xCCvsehC7xHDKQlsql1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYoPR4/btshMVAwA8g/2g0xCCvsehC7xHDKQlsql1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYoPR4%2FbtshMVAwA8g%2F2g0xCCvsehC7xHDKQlsql1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;321&quot; height=&quot;626&quot; data-filename=&quot;size 높이 최대.JPG&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-4 높이(사용자 정의), 너비(사용자, 정의)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - width: 너비 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - height: 높이 설정&lt;/p&gt;
&lt;pre id=&quot;code_1685338424164&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier.fillMaxSize()){
        Box(modifier = Modifier
            .background(Color.Green)
            .width(200.dp)
            .height(200.dp)
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - size(너비 설정, 높이 설정)&lt;/p&gt;
&lt;pre id=&quot;code_1685340284545&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier.fillMaxSize()){
        Box(modifier = Modifier
            .background(Color.Green)
            .size(width = 200.dp, height = 200.dp)
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;size 각각.JPG&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TSxyp/btshVBIdTeR/HgZPaYfwKKLDJ6FA4nRRx1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TSxyp/btshVBIdTeR/HgZPaYfwKKLDJ6FA4nRRx1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TSxyp/btshVBIdTeR/HgZPaYfwKKLDJ6FA4nRRx1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTSxyp%2FbtshVBIdTeR%2FHgZPaYfwKKLDJ6FA4nRRx1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;357&quot; height=&quot;630&quot; data-filename=&quot;size 각각.JPG&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;간격&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;2-1 전체 간격&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - padding( all = 전체 간격 설정)&lt;/p&gt;
&lt;pre id=&quot;code_1685340064392&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier
        .fillMaxSize()
    ){
        Box(modifier = Modifier
            .background(Color.Green)
            .fillMaxWidth()
            .height(300.dp)
            .padding(all = 50.dp)
        ){
            Box(modifier = Modifier
                .background(Color.Red)
                .size(width = 100.dp, height = 100.dp)
            )
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;전체 간격.JPG&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkOylF/btshBk2DxFT/InbCJkuBmbM6816QKCxcoK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkOylF/btshBk2DxFT/InbCJkuBmbM6816QKCxcoK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkOylF/btshBk2DxFT/InbCJkuBmbM6816QKCxcoK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkOylF%2FbtshBk2DxFT%2FInbCJkuBmbM6816QKCxcoK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;631&quot; data-filename=&quot;전체 간격.JPG&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-2 부분 간격&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - start = 왼쪽 간격&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - top = 상단 간격&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - bottom = 하단 간격&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - end = 오른쪽 간격&lt;/p&gt;
&lt;pre id=&quot;code_1685340404312&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Box(modifier = Modifier
        .fillMaxSize()
    ){
        Box(modifier = Modifier
            .background(Color.Green)
            .fillMaxWidth()
            .height(300.dp)
            .padding(start = 50.dp)
        ){
            Box(modifier = Modifier
                .background(Color.Red)
                .size(width = 100.dp, height = 100.dp)
            )
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;부분 간격.JPG&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kPGdp/btshz1CEkYe/zriTt9che7Mt0kwZtKDsxK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kPGdp/btshz1CEkYe/zriTt9che7Mt0kwZtKDsxK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kPGdp/btshz1CEkYe/zriTt9che7Mt0kwZtKDsxK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkPGdp%2Fbtshz1CEkYe%2FzriTt9che7Mt0kwZtKDsxK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;347&quot; height=&quot;629&quot; data-filename=&quot;부분 간격.JPG&quot; data-origin-width=&quot;347&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;가중치&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;b&gt;3-1 똑같은 비중&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 2개의 박스 1f로 설정하면 1:1 비율로 같은 크기 설정&lt;/p&gt;
&lt;pre id=&quot;code_1685340761793&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Column(modifier = Modifier
        .fillMaxSize()
    ) {
        Box(modifier = Modifier
            .background(Color.Red)
            .weight(1f)
            .fillMaxWidth()
        )
        Box(modifier = Modifier
            .background(Color.Green)
            .weight(1f)
            .fillMaxWidth()
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;같은 비중.JPG&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhsdqK/btshCfz0dOa/egwKQAH5dWaZs0ZEidxA0K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhsdqK/btshCfz0dOa/egwKQAH5dWaZs0ZEidxA0K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhsdqK/btshCfz0dOa/egwKQAH5dWaZs0ZEidxA0K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhsdqK%2FbtshCfz0dOa%2FegwKQAH5dWaZs0ZEidxA0K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;325&quot; height=&quot;630&quot; data-filename=&quot;같은 비중.JPG&quot; data-origin-width=&quot;325&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;b&gt;3-2 2:1 비중&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 하나는 2f, 하나는 1f 설정하면 총 3칸 크기 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - 2f는 2칸, 1f는 1칸 차지&lt;/p&gt;
&lt;pre id=&quot;code_1685340830793&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    Column(modifier = Modifier
        .fillMaxSize()
    ) {
        Box(modifier = Modifier
            .background(Color.Red)
            .weight(2f)
            .fillMaxWidth()
        )
        Box(modifier = Modifier
            .background(Color.Green)
            .weight(1f)
            .fillMaxWidth()
        )
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2대일 비중.JPG&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTv3wd/btshA1hNX1B/kARLBYmq9Puz27X2OoFrjk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTv3wd/btshA1hNX1B/kARLBYmq9Puz27X2OoFrjk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTv3wd/btshA1hNX1B/kARLBYmq9Puz27X2OoFrjk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTv3wd%2FbtshA1hNX1B%2FkARLBYmq9Puz27X2OoFrjk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;311&quot; height=&quot;636&quot; data-filename=&quot;2대일 비중.JPG&quot; data-origin-width=&quot;311&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/486&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.22 - [안드로이드] - [안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685340850748&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 LazyColumn를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다. RecyclerView를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/486&quot; data-og-url=&quot;https://aries574.tistory.com/486&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bKmZAx/hySM8cGBvR/etr1R2oKT8SN9ru0Lb9A8K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/I7omU/hySM8cGBxA/MJKYjRmAO9ORgwT6komoY1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cA4Wyw/hySNlpAkS9/A9hiAUgc6RUo6u9vzVXU9K/img.jpg?width=413&amp;amp;height=868&amp;amp;face=0_0_413_868&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/486&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/486&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bKmZAx/hySM8cGBvR/etr1R2oKT8SN9ru0Lb9A8K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/I7omU/hySM8cGBxA/MJKYjRmAO9ORgwT6komoY1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cA4Wyw/hySNlpAkS9/A9hiAUgc6RUo6u9vzVXU9K/img.jpg?width=413&amp;amp;height=868&amp;amp;face=0_0_413_868');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 LazyColumn를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다. RecyclerView를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.15 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685340853057&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&quot; data-og-description=&quot;이번 시간에는 요소들을 겹치게 하는 Box에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - DummyBox(color: Color, dp: Dp) 색상과 크기를 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/485&quot; data-og-url=&quot;https://aries574.tistory.com/485&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brfZRs/hySNahgj2U/3PoX4vlkNPcWfjNhNCPKU0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bXYeHv/hySNifickp/KpjHMheUDYcqPsGELHORlK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cL6ua4/hySNiTUafP/6yMuRj5BOwtmzTbQknpr8K/img.jpg?width=383&amp;amp;height=796&amp;amp;face=0_0_383_796&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/485&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brfZRs/hySNahgj2U/3PoX4vlkNPcWfjNhNCPKU0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bXYeHv/hySNifickp/KpjHMheUDYcqPsGELHORlK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cL6ua4/hySNiTUafP/6yMuRj5BOwtmzTbQknpr8K/img.jpg?width=383&amp;amp;height=796&amp;amp;face=0_0_383_796');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 요소들을 겹치게 하는 Box에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - DummyBox(color: Color, dp: Dp) 색상과 크기를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.08 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1685340855914&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 컴포넌트들을 세로 정렬하는 Column에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/484&quot; data-og-url=&quot;https://aries574.tistory.com/484&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bpvf0y/hySNc7ezvp/jJ5HSC49IlgmZ0RsNEH370/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/imZGB/hySM8qf9P8/wr5SXICwG7vOQlva2bygU0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/rIziI/hySNghvaJG/T8GxJN0BHAI1o5HwD9eBlk/img.jpg?width=269&amp;amp;height=585&amp;amp;face=0_0_269_585&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/484&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bpvf0y/hySNc7ezvp/jJ5HSC49IlgmZ0RsNEH370/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/imZGB/hySM8qf9P8/wr5SXICwG7vOQlva2bygU0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/rIziI/hySNghvaJG/T8GxJN0BHAI1o5HwD9eBlk/img.jpg?width=269&amp;amp;height=585&amp;amp;face=0_0_269_585');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 컴포넌트들을 세로 정렬하는 Column에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=cg_j-c05wNY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/pZc1c/hySNeDXgZG/GU777uhmL6jnG68xUtSTg1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/cg_j-c05wNY&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>compose</category>
      <category>Kotlin</category>
      <category>Modifier</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/487</guid>
      <comments>https://aries574.tistory.com/487#entry487comment</comments>
      <pubDate>Mon, 29 May 2023 15:23:08 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법</title>
      <link>https://aries574.tistory.com/486</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose-LazyColumn-blog_1.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biTBTn/btsg0NKu0wT/6BbLyEQt0FEWMfseZthhEK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biTBTn/btsg0NKu0wT/6BbLyEQt0FEWMfseZthhEK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biTBTn/btsg0NKu0wT/6BbLyEQt0FEWMfseZthhEK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiTBTn%2Fbtsg0NKu0wT%2F6BbLyEQt0FEWMfseZthhEK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Compose-LazyColumn-blog_1.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;LazyColumn&lt;/b&gt;&lt;/span&gt;를 통해서 정보를 리스트로 보여주는 방법에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;RecyclerView&lt;/span&gt;&lt;/b&gt;를 사용했던 xml 방식보다 훨씬 쉽게 구현할 수 있다는 사실을 알 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;데이터&amp;nbsp;클래스 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;UserView&amp;nbsp;함수 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;4.&amp;nbsp;SimpleListView&amp;nbsp;함수 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;5.&amp;nbsp;전체&amp;nbsp;코드&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Compose LazyColumn.JPG&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhkhtr/btsgYiEeiwi/CoTmQrqpNuvoO6Kn7209KK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhkhtr/btsgYiEeiwi/CoTmQrqpNuvoO6Kn7209KK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhkhtr/btsgYiEeiwi/CoTmQrqpNuvoO6Kn7209KK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdhkhtr%2FbtsgYiEeiwi%2FCoTmQrqpNuvoO6Kn7209KK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;413&quot; height=&quot;868&quot; data-filename=&quot;Compose LazyColumn.JPG&quot; data-origin-width=&quot;413&quot; data-origin-height=&quot;868&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;데이터&amp;nbsp;클래스&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; - &lt;b&gt;설명&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. name : 사용자 이름&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. age: 사용자 나이&lt;/p&gt;
&lt;pre id=&quot;code_1684752024044&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class Users(
    val name: String,
    val age: String
)&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;UserView&amp;nbsp;함수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. padding(8.dp) : 외부와 간격&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. fillMaxWidth() : 가로 크기 최대&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. elevation : 음영 정도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. shape : 둥근 정도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. Column : 세로 정렬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. users: Users: 사용자 정보 리스트&lt;/p&gt;
&lt;pre id=&quot;code_1684752039408&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun UserView(users: Users){

    //카드뷰
    Card(
        modifier = Modifier
            .padding(8.dp)
            .fillMaxWidth(),
        elevation = 10.dp, //음영
        shape = RoundedCornerShape(5.dp) //둥근정도

    ) {
        Column() {
            Text(text =  users.name, fontSize = 20.sp, modifier = Modifier.padding(10.dp))
            Text(text =  users.age, fontSize = 15.sp, modifier = Modifier.padding(10.dp))
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;SimpleListView&amp;nbsp;함수&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;b&gt;설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. (20..80).random() : 20 ~ 80 사이 랜덤한 숫자 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. fillMaxSize() : 화면 최대 크기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. LazyColumn : 스크롤 목록 생성(세로)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. items(users) : 데이터 개수만큼 리스트로 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. it : 사용자 정보 리스트&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684752050865&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun SimpleListView(){

    //1. 샘플 데이터 생성
    val users = ArrayList&amp;lt;Users&amp;gt;()

    for (i in 1..100){
        val user = Users(&quot;user-$i&quot;, (20..80).random().toString())
        users.add(user)
    }

    //2. 리스트 생성
    LazyColumn(
        modifier = Modifier.fillMaxSize()
    ){
        items(users){
            UserView(users = it)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;전체&amp;nbsp;코드&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1684752086327&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            ComposeSampleTheme {
                SimpleListView()
            }
        }
    }
}

@Composable
fun SimpleListView(){

    //1. 샘플 데이터
    val users = ArrayList&amp;lt;Users&amp;gt;()

    for(i in 1..100){
        val user = Users(&quot;user-$i&quot;, (20..80).random().toString())
        users.add(user)
    }

    //2. 리스트 생성
    LazyColumn(
        modifier = Modifier.fillMaxSize()
    ){
        items(users) {
            UserView(it)
        }
    }
}

@Composable
fun UserView(user: Users){

    //카드뷰
    Card(
        modifier = Modifier
            .padding(8.dp)
            .fillMaxWidth(),
        elevation = 10.dp,
        shape = RoundedCornerShape(5.dp)
    ) {
        Column() {
            Text(text = user.name, fontSize = 20.sp, modifier = Modifier.padding(10.dp))
            Text(text = user.age, fontSize = 15.sp, modifier = Modifier.padding(10.dp))
        }
    }
}


@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {
        SimpleListView()
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.15 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684752099352&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&quot; data-og-description=&quot;이번 시간에는 요소들을 겹치게 하는 Box에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - DummyBox(color: Color, dp: Dp) 색상과 크기를 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/485&quot; data-og-url=&quot;https://aries574.tistory.com/485&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Oo6cY/hySHbaxGoe/0Y9zXuBKCoRgwGRUaKOmHK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/F5Arp/hySG9X5Qb7/YZiFHD1sYertrJUNqAwt30/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WoIRz/hySJaVnurh/4TCCHBJ7lbpEDIjssDxgGK/img.jpg?width=383&amp;amp;height=796&amp;amp;face=0_0_383_796&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/485&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/485&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Oo6cY/hySHbaxGoe/0Y9zXuBKCoRgwGRUaKOmHK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/F5Arp/hySG9X5Qb7/YZiFHD1sYertrJUNqAwt30/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WoIRz/hySJaVnurh/4TCCHBJ7lbpEDIjssDxgGK/img.jpg?width=383&amp;amp;height=796&amp;amp;face=0_0_383_796');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 요소들을 겹치게 하는 Box에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - DummyBox(color: Color, dp: Dp) 색상과 크기를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.08 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684752104324&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 컴포넌트들을 세로 정렬하는 Column에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/484&quot; data-og-url=&quot;https://aries574.tistory.com/484&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/u68F2/hySG3cwQiD/bcvdO4YuYdv46XqozctqXk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mXkIA/hySG3p1VQ3/6OT3NqB9Fb8ChksWOIq1P0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cOCAjX/hySJbmr7rS/2nmp6y6X2GraygqtpqkZTk/img.jpg?width=269&amp;amp;height=585&amp;amp;face=0_0_269_585&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/484&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/u68F2/hySG3cwQiD/bcvdO4YuYdv46XqozctqXk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mXkIA/hySG3p1VQ3/6OT3NqB9Fb8ChksWOIq1P0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cOCAjX/hySJbmr7rS/2nmp6y6X2GraygqtpqkZTk/img.jpg?width=269&amp;amp;height=585&amp;amp;face=0_0_269_585');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 컴포넌트들을 세로 정렬하는 Column에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.01 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684752110540&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 컴포넌트들을 가로 정렬하는 Row에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Row 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 설정&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/483&quot; data-og-url=&quot;https://aries574.tistory.com/483&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfOGd9/hySG9Kz0DX/e4PVwp5BmwUqVN9DGfLCYk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dAGyYJ/hySHhaLQV3/rmt6hXu9L0eo7EiQElYuuk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bhKYxb/hySJfbi7D7/bbppt60Kxj4Q7eOEHs4HT1/img.jpg?width=359&amp;amp;height=772&amp;amp;face=0_0_359_772&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/483&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfOGd9/hySG9Kz0DX/e4PVwp5BmwUqVN9DGfLCYk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dAGyYJ/hySHhaLQV3/rmt6hXu9L0eo7EiQElYuuk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bhKYxb/hySJfbi7D7/bbppt60Kxj4Q7eOEHs4HT1/img.jpg?width=359&amp;amp;height=772&amp;amp;face=0_0_359_772');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 컴포넌트들을 가로 정렬하는 Row에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Row 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 설정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=1RuAGfDoW1Y&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cvvCkt/hySG43ySgv/pqLvZeTJBv7JzpH17xIkWK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[안드로이드 코틀린] Compose LazyColumn - 간단한 리스트 보여주는 방법&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/1RuAGfDoW1Y&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>compose</category>
      <category>Kotlin</category>
      <category>LazyColumn</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/486</guid>
      <comments>https://aries574.tistory.com/486#entry486comment</comments>
      <pubDate>Mon, 22 May 2023 19:52:36 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기</title>
      <link>https://aries574.tistory.com/485</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;compose-box-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dc0YBQ/btsfjKa54fB/jpys2Y2bU7MOLJu9GMnTmK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dc0YBQ/btsfjKa54fB/jpys2Y2bU7MOLJu9GMnTmK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dc0YBQ/btsfjKa54fB/jpys2Y2bU7MOLJu9GMnTmK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdc0YBQ%2FbtsfjKa54fB%2Fjpys2Y2bU7MOLJu9GMnTmK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;compose-box-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 요소들을 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;겹치게&lt;/span&gt;&lt;/b&gt; 하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Box&lt;/b&gt;&lt;/span&gt;에 대하여 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 샘플 박스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Column 사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 샘플 박스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- DummyBox(&lt;span style=&quot;color: #ee2323;&quot;&gt;color&lt;/span&gt;:&amp;nbsp;Color,&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;dp&lt;/span&gt;:&amp;nbsp;Dp)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;색상&lt;/span&gt;&lt;/b&gt;과 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;크기&lt;/span&gt;&lt;/b&gt;를 매개변수로 전달받는다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1684112759583&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun DummyBox(color: Color, dp: Dp){
    Box(modifier = Modifier
        .background(color)
        .size(dp)
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;-&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;background(색상)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;배경색상&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- fillMaxSize()&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;전체 화면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;꽉 차게&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;pre id=&quot;code_1684113049100&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {

        Box(modifier = Modifier
            .background(Color.White)
            .fillMaxSize(),
        ){
            DummyBox(Color.Red, 200.dp)
            DummyBox(Color.Blue, 150.dp)
            DummyBox(Color.Green, 100.dp)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;box.JPG&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;796&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6j7rT/btsfe6Z2wHX/FTKb0pw5X7eEWxUnQScAX0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6j7rT/btsfe6Z2wHX/FTKb0pw5X7eEWxUnQScAX0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6j7rT/btsfe6Z2wHX/FTKb0pw5X7eEWxUnQScAX0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6j7rT%2Fbtsfe6Z2wHX%2FFTKb0pw5X7eEWxUnQScAX0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;796&quot; data-filename=&quot;box.JPG&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;796&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Box사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; 3-1 컴포넌트 위치 - contentAlignment&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;- 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment = Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TopCenter&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;상단&lt;/b&gt; 중앙&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TopEnd&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;상단&lt;/b&gt; 오른쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TopStart&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;상단&lt;/b&gt; 왼쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;Center&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;정중앙&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;CenterEnd&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;중앙&lt;/b&gt; 오른쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;CenterStart&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;중앙&lt;/b&gt; 왼쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;BottomCenter&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;하단&lt;/b&gt; 중앙&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;BottomStart&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;하단&lt;/b&gt; 왼쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;contentAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;BottomEnd&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- &lt;b&gt;하단&lt;/b&gt; 오른쪽&lt;/p&gt;
&lt;pre id=&quot;code_1684113467340&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {

        Box(modifier = Modifier
            .background(Color.White)
            .fillMaxSize(),
            contentAlignment = Alignment.TopStart
        ){
            DummyBox(Color.Red, 200.dp)
            DummyBox(Color.Blue, 150.dp)
            DummyBox(Color.Green, 100.dp)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=lZY4WllY7zk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bft6Gy/hySBHU5lS0/kziWjWm8KyRb7L4QewltIK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Box 요소 겹치기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/lZY4WllY7zk&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.08 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684113511058&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 컴포넌트들을 세로 정렬하는 Column에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/484&quot; data-og-url=&quot;https://aries574.tistory.com/484&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MTO4d/hySBu2x2hr/RSXXLNyHpnZk2hrm66EM10/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lP6Wh/hySC1La4tq/z6vMpYonLZSigkQf8UZNUK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b4tdsC/hySBEKOHd7/JpK4PLsXfjFa9C6LomSAkk/img.jpg?width=269&amp;amp;height=585&amp;amp;face=0_0_269_585&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/484&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MTO4d/hySBu2x2hr/RSXXLNyHpnZk2hrm66EM10/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lP6Wh/hySC1La4tq/z6vMpYonLZSigkQf8UZNUK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b4tdsC/hySBEKOHd7/JpK4PLsXfjFa9C6LomSAkk/img.jpg?width=269&amp;amp;height=585&amp;amp;face=0_0_269_585');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 컴포넌트들을 세로 정렬하는 Column에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Column 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.01 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684113516195&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 컴포넌트들을 가로 정렬하는 Row에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Row 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 설정&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/483&quot; data-og-url=&quot;https://aries574.tistory.com/483&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/clN3jA/hySCT7rrxi/AQGZppcKyRaSOQWGkxGEyK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bcnfNK/hySCWwksum/fi5amupYYoUdQET3N28tZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lWmSj/hySCWpyRvF/BCVov9FEGXaPwAPKkaOQJK/img.jpg?width=359&amp;amp;height=772&amp;amp;face=0_0_359_772&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/483&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/clN3jA/hySCT7rrxi/AQGZppcKyRaSOQWGkxGEyK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bcnfNK/hySCWwksum/fi5amupYYoUdQET3N28tZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lWmSj/hySCWpyRvF/BCVov9FEGXaPwAPKkaOQJK/img.jpg?width=359&amp;amp;height=772&amp;amp;face=0_0_359_772');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 컴포넌트들을 가로 정렬하는 Row에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Row 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 설정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>Box</category>
      <category>compose</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/485</guid>
      <comments>https://aries574.tistory.com/485#entry485comment</comments>
      <pubDate>Mon, 15 May 2023 10:25:02 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose 레이아웃 - Column 세로 정렬하는 방법</title>
      <link>https://aries574.tistory.com/484</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;compose-layout-column-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TpPJt/btseqLnnJTl/LawSZfPeGpEzQTYpTeWQYK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TpPJt/btseqLnnJTl/LawSZfPeGpEzQTYpTeWQYK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TpPJt/btseqLnnJTl/LawSZfPeGpEzQTYpTeWQYK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTpPJt%2FbtseqLnnJTl%2FLawSZfPeGpEzQTYpTeWQYK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;compose-layout-column-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 컴포넌트들을 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;세로 정렬&lt;/span&gt;&lt;/b&gt;하는 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Column&lt;/span&gt;&lt;/b&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 샘플 박스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Column 사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 샘플 박스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- background&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;배경색상&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- size(80.dp)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가로&lt;/span&gt;&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;세로&lt;/b&gt; &lt;span style=&quot;color: #000000;&quot;&gt;길이&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;80으로 설정&lt;/p&gt;
&lt;pre id=&quot;code_1683525914986&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun DummyBox(color: Color){
    Box(modifier = Modifier
        .background(color)
        .size(80.dp)
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;-&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;background(색상)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;배경색상&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- fillMaxSize()&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;전체 화면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;꽉 차게&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;pre id=&quot;code_1683526079250&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {

        Column(
            modifier = Modifier
                .background(Color.White)
                .fillMaxSize()
        ) {
            DummyBox(Color.Red)
            DummyBox(Color.Blue)
            DummyBox(Color.Green)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Column.JPG&quot; data-origin-width=&quot;269&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qBGbE/btsecvfYaTk/qtf6vPgeZteIsi1JRwgRJ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qBGbE/btsecvfYaTk/qtf6vPgeZteIsi1JRwgRJ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qBGbE/btsecvfYaTk/qtf6vPgeZteIsi1JRwgRJ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqBGbE%2FbtsecvfYaTk%2Fqtf6vPgeZteIsi1JRwgRJ1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;269&quot; height=&quot;585&quot; data-filename=&quot;Column.JPG&quot; data-origin-width=&quot;269&quot; data-origin-height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Column 사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3-1 컴포넌트 정렬 - verticalArrangement&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; - 설명&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalArrangement = Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;Top&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트&lt;span&gt;&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;위&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;쪽&lt;/span&gt;&lt;/b&gt;으로 정렬&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalArrangement = Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;Center&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;중간&lt;/span&gt;&lt;/b&gt;으로 정렬&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalArrangement = Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;Bottom&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;아래쪽&lt;/span&gt;&lt;/b&gt;으로 정렬&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalArrangement = Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;SpaceAround&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트 간의&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;동일한&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;간격&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;주기(양쪽 끝 간격은 컴포넌트 간의 간격 절반&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;verticalArrangement&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;= Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;SpaceBetween&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트간의 간격 주기(&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;양쪽 끝 간격 없음&lt;/span&gt;&lt;/b&gt;)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;verticalArrangement&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;= Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;SpaceEvenly&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트간의 간격과 양쪽 끝&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;간격 동일&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1683526579124&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        Column(
            modifier = Modifier
                .background(Color.White)
                .fillMaxSize(),
            verticalArrangement = Arrangement.Top
        ) {
            DummyBox(Color.Red)
            DummyBox(Color.Blue)
            DummyBox(Color.Green)
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3-2 컴포넌트 위치 - horizontalAlignment&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 설명&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalAlignment = Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;Start&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;세로 정렬된 컴포넌트 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가로 위치&lt;/span&gt;&lt;/b&gt;를&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 왼쪽&lt;/span&gt;&lt;/b&gt;으&lt;/span&gt;로 이동&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalAlignment = Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;CenterHorizontally&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;세로 정렬된 컴포넌트 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가로 위치&lt;/span&gt;&lt;/b&gt;를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;중간&lt;/span&gt;&lt;/b&gt;으로 이동&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalAlignment = Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;End&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;세로 정렬된 컴포넌트 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;가로 위치&lt;/span&gt;&lt;/b&gt;를&lt;span&gt;&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;오른쪽&lt;/span&gt;&lt;/b&gt;으&lt;/span&gt;로 이동&lt;/p&gt;
&lt;pre id=&quot;code_1683526907828&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        Column(
            modifier = Modifier
                .background(Color.White)
                .fillMaxSize(),
            horizontalAlignment = Alignment.Start
        ) {
            DummyBox(Color.Red)
            DummyBox(Color.Blue)
            DummyBox(Color.Green)
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=EyLYOCF_8hI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/5sZEm/hySykqpQas/YISbkreLZRJjBHX8DXCRFk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/EyLYOCF_8hI&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.04.24 - [안드로이드] - [안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1683526966750&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 안드로이드에서 권장하는 UI도구 Compose를 이용해서 간단한 프로젝트를 만들어보고, 기존의 xml과 차이점을 가볍게 알아보겠습니다. 목차1. Compose 프로젝트 만들기2. Xml&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/482&quot; data-og-url=&quot;https://aries574.tistory.com/482&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/idFb9/hySyejqEVn/2eCk5h2MNZqUTBdWiVELgK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cMYTYS/hySwSvxxjC/10BPBPdsj8FXKP6Yf9EHk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dpGb14/hySwTusm1U/LqkvRE7FKgNTNTfQVS3qlk/img.jpg?width=901&amp;amp;height=651&amp;amp;face=0_0_901_651&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/482&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/idFb9/hySyejqEVn/2eCk5h2MNZqUTBdWiVELgK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cMYTYS/hySwSvxxjC/10BPBPdsj8FXKP6Yf9EHk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dpGb14/hySwTusm1U/LqkvRE7FKgNTNTfQVS3qlk/img.jpg?width=901&amp;amp;height=651&amp;amp;face=0_0_901_651');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 안드로이드에서 권장하는 UI도구 Compose를 이용해서 간단한 프로젝트를 만들어보고, 기존의 xml과 차이점을 가볍게 알아보겠습니다. 목차1. Compose 프로젝트 만들기2. Xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.05.01 - [안드로이드] - [안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1683526970390&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 컴포넌트들을 가로 정렬하는 Row에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Row 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 설정&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/483&quot; data-og-url=&quot;https://aries574.tistory.com/483&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nLVzl/hySwN14yWZ/g52bqshxqDHQ4kfgQKWK8k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ecfkvM/hySwPlhN6g/qi0di0v2695rA74vApYJg1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/h79NV/hySylXaq9b/8Q7dnk9nYPdxONO2nboZGK/img.jpg?width=359&amp;amp;height=772&amp;amp;face=0_0_359_772&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/483&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/483&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nLVzl/hySwN14yWZ/g52bqshxqDHQ4kfgQKWK8k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ecfkvM/hySwPlhN6g/qi0di0v2695rA74vApYJg1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/h79NV/hySylXaq9b/8Q7dnk9nYPdxONO2nboZGK/img.jpg?width=359&amp;amp;height=772&amp;amp;face=0_0_359_772');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 컴포넌트들을 가로 정렬하는 Row에 대하여 알아보겠습니다. 목차 1. 샘플 박스 만들기 2. 미리 보기 3. Row 사용 방법 1. 샘플 박스 만들기 - 설명 - background 배경색상 설정&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>column</category>
      <category>compose</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/484</guid>
      <comments>https://aries574.tistory.com/484#entry484comment</comments>
      <pubDate>Mon, 8 May 2023 15:24:33 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose 레이아웃 - Row 가로 정렬하는 방법</title>
      <link>https://aries574.tistory.com/483</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;compose-layout-row-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8jVEs/btsdgUganx5/ckZAmBixAQGPAgv5LBXoY1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8jVEs/btsdgUganx5/ckZAmBixAQGPAgv5LBXoY1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8jVEs/btsdgUganx5/ckZAmBixAQGPAgv5LBXoY1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8jVEs%2FbtsdgUganx5%2FckZAmBixAQGPAgv5LBXoY1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;compose-layout-row-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 컴포넌트들을 &lt;span style=&quot;color: #ee2323;&quot;&gt;가로 정렬&lt;/span&gt;하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Row&lt;/span&gt;에 대하여 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 샘플 박스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Row 사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 샘플 박스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- background&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;배경색상&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- size(80.dp)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;가로&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;세로 길이&lt;/span&gt; 80으로 설정&lt;/p&gt;
&lt;pre id=&quot;code_1682938507956&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Composable
fun DummyBox(color: Color){
    Box(modifier = Modifier
        .background(color)
        .size(80.dp)
    )
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 미리 보기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;-&lt;/b&gt; background(색상)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;배경색상&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- fillMaxSize()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;전체 화면 &lt;span style=&quot;color: #ee2323;&quot;&gt;꽉 차게&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1682938540836&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
    ComposeSampleTheme {

        Row(
            modifier = Modifier
                .background(Color.White)
                .fillMaxSize(),
        ) {
            DummyBox(Color.Red)
            DummyBox(Color.Blue)
            DummyBox(Color.Green)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;compose row.JPG&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;772&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfBTap/btsddTI0JCe/KQRfpPdqpFHBA5elccitQK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfBTap/btsddTI0JCe/KQRfpPdqpFHBA5elccitQK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfBTap/btsddTI0JCe/KQRfpPdqpFHBA5elccitQK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfBTap%2FbtsddTI0JCe%2FKQRfpPdqpFHBA5elccitQK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;359&quot; height=&quot;772&quot; data-filename=&quot;compose row.JPG&quot; data-origin-width=&quot;359&quot; data-origin-height=&quot;772&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Row 사용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-1 컴포넌트 정렬 - horizontalArrangement&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; - 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalArrangement = Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;Start&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트 &lt;span style=&quot;color: #ee2323;&quot;&gt;왼쪽&lt;/span&gt;으로 정렬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalArrangement&amp;nbsp;=&amp;nbsp;Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;Center&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트 &lt;span style=&quot;color: #ee2323;&quot;&gt;중간&lt;/span&gt;으로 정렬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalArrangement&amp;nbsp;=&amp;nbsp;Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;End&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트 &lt;span style=&quot;color: #ee2323;&quot;&gt;오른쪽&lt;/span&gt;으로 정렬&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalArrangement&amp;nbsp;=&amp;nbsp;Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;SpaceAround&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트 간의&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;동일한&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;간격&lt;/span&gt; 주기(양쪽 끝 간격은 컴포넌트 간의 간격 절반&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalArrangement&amp;nbsp;=&amp;nbsp;Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;SpaceBetween&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트간의 간격 주기(&lt;span style=&quot;color: #ee2323;&quot;&gt;양쪽 끝 간격 없음&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- horizontalArrangement&amp;nbsp;=&amp;nbsp;Arrangement.&lt;span style=&quot;color: #ee2323;&quot;&gt;SpaceEvenly&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;컴포넌트간의 간격과 양쪽 끝 &lt;span style=&quot;color: #ee2323;&quot;&gt;간격 동일&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1682938729221&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        Row(
            modifier = Modifier
                .background(Color.White)
                .fillMaxSize(),
            horizontalArrangement = Arrangement.Start,
        ) {
            DummyBox(Color.Red)
            DummyBox(Color.Blue)
            DummyBox(Color.Green)
        }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-2 컴포넌트 위치 - verticalAlignment&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;b&gt; - 설명&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;Top&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;가로 정렬된 컴포넌트 세로 위치를 &lt;span style=&quot;color: #ee2323;&quot;&gt;맨 위&lt;/span&gt;로 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;CenterVertically&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;가로 정렬된 컴포넌트 세로 위치를 &lt;span style=&quot;color: #ee2323;&quot;&gt;중간&lt;/span&gt;으로 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- verticalAlignment&amp;nbsp;=&amp;nbsp;Alignment.&lt;span style=&quot;color: #ee2323;&quot;&gt;Bottom&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;가로 정렬된 컴포넌트 세로 위치를 &lt;span style=&quot;color: #ee2323;&quot;&gt;맨 아래&lt;/span&gt;로 이동&lt;/p&gt;
&lt;pre id=&quot;code_1682939031645&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        Row(
            modifier = Modifier
                .background(Color.White)
                .fillMaxSize(),
            verticalAlignment = Alignment.Bottom
        ) {
            DummyBox(Color.Red)
            DummyBox(Color.Blue)
            DummyBox(Color.Green)
        }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.04.24 - [안드로이드] - [안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682939665681&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 안드로이드에서 권장하는 UI도구 Compose를 이용해서 간단한 프로젝트를 만들어보고, 기존의 xml과 차이점을 가볍게 알아보겠습니다. 목차1. Compose 프로젝트 만들기2. Xml&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/482&quot; data-og-url=&quot;https://aries574.tistory.com/482&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/beop0M/hyStROVSZC/mSJ4U5hS7jdc075XyFVKZ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/QIwuy/hySslqzKoc/uw6AWKiYgYNJALySow1CWk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b4XQyN/hyStK3k1O3/RXEA3BljOvO53R7gUCpUgk/img.jpg?width=901&amp;amp;height=651&amp;amp;face=0_0_901_651&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/482&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/beop0M/hyStROVSZC/mSJ4U5hS7jdc075XyFVKZ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/QIwuy/hySslqzKoc/uw6AWKiYgYNJALySow1CWk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b4XQyN/hyStK3k1O3/RXEA3BljOvO53R7gUCpUgk/img.jpg?width=901&amp;amp;height=651&amp;amp;face=0_0_901_651');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 안드로이드에서 권장하는 UI도구 Compose를 이용해서 간단한 프로젝트를 만들어보고, 기존의 xml과 차이점을 가볍게 알아보겠습니다. 목차1. Compose 프로젝트 만들기2. Xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=-7pRPhsKCvM&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cKO3Ht/hySsps2C5x/P8LjNKQA7d4GrG9K0Tm3zK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/-7pRPhsKCvM&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.04.24 - [안드로이드] - [안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1683527004362&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 안드로이드에서 권장하는 UI도구 Compose를 이용해서 간단한 프로젝트를 만들어보고, 기존의 xml과 차이점을 가볍게 알아보겠습니다. 목차1. Compose 프로젝트 만들기2. Xml&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/482&quot; data-og-url=&quot;https://aries574.tistory.com/482&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/idFb9/hySyejqEVn/2eCk5h2MNZqUTBdWiVELgK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cMYTYS/hySwSvxxjC/10BPBPdsj8FXKP6Yf9EHk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dpGb14/hySwTusm1U/LqkvRE7FKgNTNTfQVS3qlk/img.jpg?width=901&amp;amp;height=651&amp;amp;face=0_0_901_651&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/482&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/482&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/idFb9/hySyejqEVn/2eCk5h2MNZqUTBdWiVELgK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cMYTYS/hySwSvxxjC/10BPBPdsj8FXKP6Yf9EHk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dpGb14/hySwTusm1U/LqkvRE7FKgNTNTfQVS3qlk/img.jpg?width=901&amp;amp;height=651&amp;amp;face=0_0_901_651');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 안드로이드에서 권장하는 UI도구 Compose를 이용해서 간단한 프로젝트를 만들어보고, 기존의 xml과 차이점을 가볍게 알아보겠습니다. 목차1. Compose 프로젝트 만들기2. Xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>compose</category>
      <category>Kotlin</category>
      <category>row</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/483</guid>
      <comments>https://aries574.tistory.com/483#entry483comment</comments>
      <pubDate>Mon, 1 May 2023 20:17:03 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Compose 기본앱으로 xml UI와 차이점 알아보기</title>
      <link>https://aries574.tistory.com/482</link>
      <description>&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WW3ON/btscfAJMlsx/xcTy6xKbD5rlB9OepRAuIK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WW3ON/btscfAJMlsx/xcTy6xKbD5rlB9OepRAuIK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WW3ON/btscfAJMlsx/xcTy6xKbD5rlB9OepRAuIK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWW3ON%2FbtscfAJMlsx%2FxcTy6xKbD5rlB9OepRAuIK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;안녕하세요.&lt;br&gt;이번 시간에는 안드로이드에서 권장하는 UI도구 &lt;b&gt;&lt;span style=&quot;color: #EF5369;&quot;&gt;Compose&lt;/span&gt;&lt;/b&gt;를 이용해서&lt;br&gt;간단한 프로젝트를 만들어보고, &lt;b&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;기존의 xml과 차이점&lt;/span&gt;&lt;/b&gt;을 가볍게 알아보겠습니다.&amp;nbsp;&lt;/p&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot;&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Compose 프로젝트 만들기&lt;/b&gt;&lt;/h2&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Xml vs Compose 차이점&lt;/b&gt;&lt;/h2&gt;&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot;&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. Compose 프로젝트 만들기&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;- 설명 -&lt;br&gt;&amp;nbsp; 1. Xml 버전: &lt;span style=&quot;color: #EE2323;&quot;&gt;Empty Activity&lt;/span&gt;를 선택&lt;br&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; 2. Compose 버전 : &lt;/span&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;Empty Compose Activity&lt;/span&gt; 선택&lt;br&gt;&amp;nbsp; &amp;nbsp;New Project -&amp;gt; Empty Compose Activity&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X0kgI/btsb6YYDaoY/Bux9gKWqkkzWKxfgggr0V1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X0kgI/btsb6YYDaoY/Bux9gKWqkkzWKxfgggr0V1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X0kgI/btsb6YYDaoY/Bux9gKWqkkzWKxfgggr0V1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX0kgI%2Fbtsb6YYDaoY%2FBux9gKWqkkzWKxfgggr0V1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;651&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;651&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Xml vs Compose 차이점&lt;/b&gt;&lt;/h2&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;- 설명 -&lt;br&gt;&lt;b&gt;&amp;nbsp; 1. 화면 구성&lt;/b&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;- Xml 버전: 기능은 &lt;span style=&quot;color: #EE2323;&quot;&gt;클래스&lt;/span&gt;, 화면은 &lt;span style=&quot;color: #EE2323;&quot;&gt;xml&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MainActivity.kt(기능)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;override fun onCreate(savedInstanceState: Bundle?) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.onCreate(savedInstanceState)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setContentView(R.layout.activity_main)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #EE2323;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;activity_main.xml(화면)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;html&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlns:tools=&quot;http://schemas.android.com/tools&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android:layout_width=&quot;match_parent&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android:layout_height=&quot;match_parent&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tools:context=&quot;.MainActivity&quot;&amp;gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;TextView
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android:layout_width=&quot;wrap_content&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android:layout_height=&quot;wrap_content&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;android:text=&quot;Hello World!&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app:layout_constraintEnd_toEndOf=&quot;parent&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app:layout_constraintStart_toStartOf=&quot;parent&quot;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;app:layout_constraintTop_toTopOf=&quot;parent&quot; /&amp;gt;

&amp;lt;/androidx.constraintlayout.widget.ConstraintLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp; &amp;nbsp;- &lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;Compose 버전: 클래스에서 기능과 화면 통합 구성&lt;/span&gt;&lt;/p&gt;&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp;MainActivity.kt(기능, 화면)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;class MainActivity : ComponentActivity() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;override fun onCreate(savedInstanceState: Bundle?) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.onCreate(savedInstanceState)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setContent {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ComposeSampleTheme {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// A surface container using the 'background' color from the theme
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Surface(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;modifier = Modifier.fillMaxSize(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color = MaterialTheme.colors.background
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Greeting(&quot;Android&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}

@Composable
fun Greeting(name: String) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(text = &quot;Hello $name!&quot;)
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ComposeSampleTheme {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Greeting(&quot;Android&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&lt;b&gt;&amp;nbsp; 2. 화면 미리보기&lt;/b&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;- xml 버전: xml 미리 보기 기능&lt;br&gt;&amp;nbsp; &amp;nbsp;- Compose 버전: @Preview 어노테이션 설정된 함수에서 해당 UI 함수 호출&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;@Composable
fun Greeting(name: String) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Text(text = &quot;Hello $name!&quot;)
}

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ComposeSampleTheme {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Greeting(&quot;Android&quot;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=UQDDpHa1Wqs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/UqIdA/hySoCY9BEC/eSrQsIhKfKK6BTkbp0vFtk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/UQDDpHa1Wqs&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>compose</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/482</guid>
      <comments>https://aries574.tistory.com/482#entry482comment</comments>
      <pubDate>Mon, 24 Apr 2023 18:08:13 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Navigation component part6 - 애니메이션 화면 변경하는 방법</title>
      <link>https://aries574.tistory.com/481</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Navigation-component-part6-animation-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1z5ja/btrT6vemSWu/CTx8lVFzyuy46pVD73QGuk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1z5ja/btrT6vemSWu/CTx8lVFzyuy46pVD73QGuk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1z5ja/btrT6vemSWu/CTx8lVFzyuy46pVD73QGuk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1z5ja%2FbtrT6vemSWu%2FCTx8lVFzyuy46pVD73QGuk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Navigation-component-part6-animation-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation Component&lt;/span&gt;를 이용해서&lt;span&gt; &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;화면 이동시에 애니메이션 &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;적용하는 &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;방법에&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/480&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.12.19 - [안드로이드] - [안드로이드 코틀린] Navigation component part5 - 프래그먼트 간에객체 쉽게 보내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671510722776&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Navigation component part5 - 프래그먼트 간에객체 쉽게 보내는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 프래그먼트 간에 객체를 쉽게 보내는 방법에 대하여 알아보겠습니다. 이전 포스팅을 수정해서 만들었습니다. 이전 포스팅은 아래 링크를&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/480&quot; data-og-url=&quot;https://aries574.tistory.com/480&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Igohf/hyQWxM3Acy/NNnBSWeHl7KofZWI4M9Ozk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/PiBUA/hyQYDESuy7/vMr86Vfi4cGrPyNVfC8LHk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/480&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/480&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Igohf/hyQWxM3Acy/NNnBSWeHl7KofZWI4M9Ozk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/PiBUA/hyQYDESuy7/vMr86Vfi4cGrPyNVfC8LHk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Navigation component part5 - 프래그먼트 간에객체 쉽게 보내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 프래그먼트 간에 객체를 쉽게 보내는 방법에 대하여 알아보겠습니다. 이전 포스팅을 수정해서 만들었습니다. 이전 포스팅은 아래 링크를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기 &lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성 &lt;br /&gt;5.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결 &lt;br /&gt;6.&amp;nbsp;프래그먼트&amp;nbsp;설정 &lt;br /&gt;7.&amp;nbsp;애니메이션&amp;nbsp;파일&amp;nbsp;만들기 &lt;br /&gt;8.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/434410419&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dcT6lO/hyQWBooXfR/bJ08KgrAGN9d38JAgL6BWk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/cXw6uq/hyQWvaFpHs/oEBKeOMHOFYrxfJqwWCJuK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/434410419?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 라이브러리 등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
    implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res 선택 -&amp;gt;&amp;nbsp; 마우스 오른쪽 클릭 -&amp;gt; new -&amp;gt; Android Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;my_nav&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resource type:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내비게이션 폴더 생성과 파일이 만들어집니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;3개의 프래그먼트&lt;/span&gt;를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 파일명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;FirstFragment&lt;/span&gt;,&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; HomeFragment&lt;/span&gt;, &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;SecondFragment&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. app 선택 -&amp;gt; New -&amp;gt; Fragment -&amp;gt; Fragment (Blank)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. home_to_first&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;home&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;first&lt;/span&gt; 화면으로 이동하는 액션ID&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. home_to_second&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;home&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;second&lt;/span&gt; 화면으로 이동하는 액션ID&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. first_to_home&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;first&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;home&lt;/span&gt; 화면으로 이동하는 액션ID&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. second_to_home&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;second&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;home&lt;/span&gt; 화면으로 이동하는 액션ID&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. enterAnim&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;이동할 화면&lt;/span&gt;에 적용되는 애니메이션&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. exitAnim&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;현재 화면&lt;/span&gt;에 적용되는 애니메이션&lt;/p&gt;
&lt;pre id=&quot;code_1671510919920&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;navigation xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/my_nav&quot;
    app:startDestination=&quot;@id/homeFragment&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/homeFragment&quot;
        android:name=&quot;com.example.navigationanimation.HomeFragment&quot;
        android:label=&quot;fragment_home&quot;
        tools:layout=&quot;@layout/fragment_home&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/home_to_first&quot;
            app:destination=&quot;@id/firstFragment&quot;
            app:enterAnim=&quot;@anim/from_left&quot;
            app:exitAnim=&quot;@anim/to_right&quot; /&amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/home_to_second&quot;
            app:destination=&quot;@id/secondFragment&quot;
            app:enterAnim=&quot;@anim/from_right&quot;
            app:exitAnim=&quot;@anim/to_left&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/firstFragment&quot;
        android:name=&quot;com.example.navigationanimation.FirstFragment&quot;
        android:label=&quot;fragment_first&quot;
        tools:layout=&quot;@layout/fragment_first&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/first_to_home&quot;
            app:destination=&quot;@id/homeFragment&quot;
            app:enterAnim=&quot;@anim/from_right&quot;
            app:exitAnim=&quot;@anim/to_left&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/secondFragment&quot;
        android:name=&quot;com.example.navigationanimation.SecondFragment&quot;
        android:label=&quot;fragment_second&quot;
        tools:layout=&quot;@layout/fragment_second&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/second_to_home&quot;
            app:destination=&quot;@id/homeFragment&quot;
            app:enterAnim=&quot;@anim/from_left&quot;
            app:exitAnim=&quot;@anim/to_right&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
&amp;lt;/navigation&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6.&amp;nbsp;프래그먼트&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_first.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 현재 화면 알려주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. Home 화면으로 이동하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671510942863&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.FirstFragment&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/first_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_centerInParent=&quot;true&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;First Fragment&quot;
        android:textSize=&quot;40sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/first_btn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/first_text&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:text=&quot;HOME&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_home.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 현재 화면 알려주는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. First 화면으로 이동하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. Second 화면으로 이동하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671510965912&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.HomeFragment&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/home_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_centerInParent=&quot;true&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Home Fragment&quot;
        android:textSize=&quot;30sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/home_first_btn&quot;
        android:layout_width=&quot;130dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/home_text&quot;
        android:layout_alignStart=&quot;@id/home_text&quot;
        android:layout_marginStart=&quot;30dp&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:text=&quot;first&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/home_second_btn&quot;
        android:layout_width=&quot;130dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/home_text&quot;
        android:layout_alignParentEnd=&quot;true&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:layout_marginEnd=&quot;30dp&quot;
        android:text=&quot;second&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_second.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 현재 화면 알려주는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. Home 화면으로 이동하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671510981647&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.SecondFragment&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/second_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_centerInParent=&quot;true&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Second Fragment&quot;
        android:textSize=&quot;40sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/second_btn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/second_text&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:text=&quot;HOME&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FirstFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. findNavController().navigate(R.id.first_to_home)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;FIrst&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;Home&lt;/span&gt;으로 이동&lt;/p&gt;
&lt;pre id=&quot;code_1671511001879&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class FirstFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(R.layout.fragment_first, container, false)

        val firstBtn = view.findViewById&amp;lt;Button&amp;gt;(R.id.first_btn)

        //버튼 이벤트(홈으로 이동)
        firstBtn.setOnClickListener {
            findNavController().navigate(R.id.action_firstFragment_to_homeFragment)
        }

        return view
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;HomeFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. findNavController().navigate(R.id.second_to_home)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Home&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;First&lt;/span&gt;로 이동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. findNavController().navigate(R.id.home_to_second)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;Home&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;Second&lt;/span&gt; 로 이동&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671511018975&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class HomeFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_home, container, false)

        val homeFirstBtn = view.findViewById&amp;lt;Button&amp;gt;(R.id.home_first_btn)
        val homeSecondBtn = view.findViewById&amp;lt;Button&amp;gt;(R.id.home_second_btn)

        //firstFragment로 이동
        homeFirstBtn.setOnClickListener {
            findNavController().navigate(R.id.action_homeFragment_to_firstFragment)
        }

        //secondFragment로 이동
        homeSecondBtn.setOnClickListener {
            findNavController().navigate(R.id.action_homeFragment_to_secondFragment)
        }

        return view
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SecondFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &amp;nbsp;findNavController().navigate(R.id.second_to_home)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Second&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;Home&lt;/span&gt;으로 이동&lt;/p&gt;
&lt;pre id=&quot;code_1671511033511&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SecondFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_second, container, false)

        val secondBtn = view.findViewById&amp;lt;Button&amp;gt;(R.id.second_btn)

        secondBtn.setOnClickListener {
            findNavController().navigate(R.id.action_secondFragment_to_homeFragment)
        }

        return view
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;7.&amp;nbsp;애니메이션&amp;nbsp;파일&amp;nbsp;만들기&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;b&gt;폴더 생성&lt;/b&gt; -&lt;br /&gt;&lt;br /&gt;res&amp;nbsp;선택&amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp;마우스&amp;nbsp;오른쪽&amp;nbsp;클릭&amp;nbsp;-&amp;gt;&amp;nbsp;new&amp;nbsp;-&amp;gt;&amp;nbsp;Android&amp;nbsp;Resource&amp;nbsp;Directory &lt;br /&gt;&lt;br /&gt;Directory&amp;nbsp;name:&amp;nbsp;anim &lt;br /&gt;&lt;br /&gt;Resource&amp;nbsp;type:&amp;nbsp;anim&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 파일 만들기 -&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;anim&amp;nbsp;선택&amp;nbsp;-&amp;gt;&amp;nbsp;&amp;nbsp;마우스&amp;nbsp;오른쪽&amp;nbsp;클릭&amp;nbsp;-&amp;gt;&amp;nbsp;new&amp;nbsp;-&amp;gt;&amp;nbsp;Animation&amp;nbsp;Resource&amp;nbsp;File&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;from_left.xml&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1671511102167&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;translate
        android:fromXDelta=&quot;-100%&quot;
        android:toXDelta=&quot;0%&quot;
        android:duration=&quot;1000&quot;/&amp;gt;
&amp;lt;/set&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;to_right.xml&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1671511148655&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;translate
        android:fromXDelta=&quot;0%&quot;
        android:toXDelta=&quot;100%&quot;
        android:duration=&quot;800&quot;/&amp;gt;
&amp;lt;/set&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;from_right.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1671511172103&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;translate
        android:fromXDelta=&quot;100%&quot;
        android:toXDelta=&quot;0%&quot;
        android:duration=&quot;2000&quot;/&amp;gt;
&amp;lt;/set&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;to_left.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1671511188550&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;set xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;translate
        android:fromXDelta=&quot;0%&quot;
        android:toXDelta=&quot;-100%&quot;
        android:duration=&quot;1000&quot;/&amp;gt;
&amp;lt;/set&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;8.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 보여주는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;FragmentContainerView&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671511207454&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;


    &amp;lt;fragment
        android:id=&quot;@+id/fragmentContainerView&quot;
        android:name=&quot;androidx.navigation.fragment.NavHostFragment&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        app:defaultNavHost=&quot;true&quot;
        app:navGraph=&quot;@navigation/my_nav&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671513715969&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KV5CW/hyQWvIvbwo/W7Wy1FSQzQN6eVGhzszhnK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bbtgVX/hyQWtKHQSG/pnebUIWuWBy6rO5hwKKGL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/pn23g/hyQYMBQbZc/EjsJQhGhkE3lzcfvZX6NT0/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KV5CW/hyQWvIvbwo/W7Wy1FSQzQN6eVGhzszhnK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bbtgVX/hyQWtKHQSG/pnebUIWuWBy6rO5hwKKGL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/pn23g/hyQYMBQbZc/EjsJQhGhkE3lzcfvZX6NT0/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671513723173&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVaLqY/hyQYLwaABE/sdBW8EtYl6hgDkOi0FARL1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lhkvj/hyQWtjCoOT/QGeFru27fACHIkjIZRGFD0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVaLqY/hyQYLwaABE/sdBW8EtYl6hgDkOi0FARL1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/lhkvj/hyQWtjCoOT/QGeFru27fACHIkjIZRGFD0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671513729943&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gEDa8/hyQWAXk9Wd/75mH7Sm6v9DbjGsNy68kKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ns4LC/hyQWGwviDU/qWRm1Pn60QFW0lOwgT58W1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/csKR59/hyQWySLJQL/rEmHtYC4sqRUThdjzAeKF0/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gEDa8/hyQWAXk9Wd/75mH7Sm6v9DbjGsNy68kKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ns4LC/hyQWGwviDU/qWRm1Pn60QFW0lOwgT58W1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/csKR59/hyQWySLJQL/rEmHtYC4sqRUThdjzAeKF0/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=x0S8TG4cxXI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ujPjQ/hyQWGwviIk/0t0RUIgu7YvqgSzjzqFwu1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/x0S8TG4cxXI&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>NavigationComponent</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>코틀린</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/481</guid>
      <comments>https://aries574.tistory.com/481#entry481comment</comments>
      <pubDate>Tue, 20 Dec 2022 14:24:58 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Navigation component part5 - 프래그먼트 간에객체 쉽게 보내는 방법</title>
      <link>https://aries574.tistory.com/480</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Navigation-component-part5-safeargs-model-class-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyBWJr/btrTVimilPa/Sd1enh0szm8loRATQz734k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyBWJr/btrTVimilPa/Sd1enh0szm8loRATQz734k/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyBWJr/btrTVimilPa/Sd1enh0szm8loRATQz734k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyBWJr%2FbtrTVimilPa%2FSd1enh0szm8loRATQz734k%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Navigation-component-part5-safeargs-model-class-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation Component&lt;/span&gt;를 이용해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;프래그먼트 간에 객체를 쉽게&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;보내는 방법&lt;/span&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅을 수정해서 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/479&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.12.09 - [안드로이드] - [안드로이드 코틀린] Navigation component part4 - 프래그먼트 간의 데이터 쉽게 보내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671422728717&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Navigation component part4 - 프래그먼트 간의 데이터 쉽게 보내는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 프래그먼트 간의 데이터를 쉽게 보내는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다. 2022.12.08 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/479&quot; data-og-url=&quot;https://aries574.tistory.com/479&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dHeoRV/hyQWBgSBHf/Bg3Yr0nkbRwRpDCK4lOnnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/btZ1Xx/hyQWsjVVvb/SCbQ2IJ01ADMpmSROEqmPK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/479&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/479&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dHeoRV/hyQWBgSBHf/Bg3Yr0nkbRwRpDCK4lOnnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/btZ1Xx/hyQWsjVVvb/SCbQ2IJ01ADMpmSROEqmPK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Navigation component part4 - 프래그먼트 간의 데이터 쉽게 보내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 프래그먼트 간의 데이터를 쉽게 보내는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다. 2022.12.08&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3.&amp;nbsp;사용자&amp;nbsp;클래스&amp;nbsp;만들기 &lt;br /&gt;4.&amp;nbsp;내비게이션&amp;nbsp;설정 &lt;br /&gt;5.&amp;nbsp;프래그먼트&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/434382643&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/t9kHs/hyQWHg5UKI/rpFGfK8UQuKA9i8XNyMQgk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/c4rDJu/hyQWtJVjNs/zuoHOJCJIvtUkJtkSXzX01/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/434382643?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 라이브러리 등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;plugins 괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;id 'kotlin-parcelize'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;사용자&amp;nbsp;클래스&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. name : &lt;span style=&quot;color: #ee2323;&quot;&gt;이름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. age: &lt;span style=&quot;color: #ee2323;&quot;&gt;나이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671423092109&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Parcelize
data class User(

    val name: String,
    val age: String
): Parcelable&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;내비게이션&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. argument name: 인자 값 불러오기 위한 &lt;span style=&quot;color: #ee2323;&quot;&gt;이름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. argument argType: &lt;span style=&quot;color: #ee2323;&quot;&gt;클래스&lt;/span&gt; 위치&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671423120765&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;navigation xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/my_nav&quot;
    app:startDestination=&quot;@id/firstFragment&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/firstFragment&quot;
        android:name=&quot;com.example.navigationexam.FirstFragment&quot;
        android:label=&quot;fragment_first&quot;
        tools:layout=&quot;@layout/fragment_first&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/first_to_second&quot;
            app:destination=&quot;@id/secondFragment&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/secondFragment&quot;
        android:name=&quot;com.example.navigationexam.SecondFragment&quot;
        android:label=&quot;fragment_second&quot;
        tools:layout=&quot;@layout/fragment_second&quot; &amp;gt;
        &amp;lt;argument
            android:name=&quot;user&quot;
            app:argType=&quot;com.example.navigationexam.User&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
&amp;lt;/navigation&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 프래그먼트 설정&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_first.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 이름 입력 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 나이 입력 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 전송 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671423305717&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.FirstFragment&quot;&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/args_name_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;이름&quot;
        android:textSize=&quot;40sp&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/args_age_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/args_name_edit&quot;
        android:hint=&quot;나이&quot;
        android:textSize=&quot;40sp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/send_btn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/args_age_edit&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;40dp&quot;
        android:text=&quot;전송&quot;
        android:textSize=&quot;30sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FirstFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. User(name,&amp;nbsp;age)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;User 생성자에 데이터 &lt;span style=&quot;color: #ee2323;&quot;&gt;등록&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. firstToSecond(user)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;user 객체 &lt;span style=&quot;color: #ee2323;&quot;&gt;전송&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671423329493&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class FirstFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view =  inflater.inflate(R.layout.fragment_first, container, false)

        val argsNameEdit = view.findViewById&amp;lt;EditText&amp;gt;(R.id.args_name_edit)
        val argsAgeEdit = view.findViewById&amp;lt;EditText&amp;gt;(R.id.args_age_edit)

        val sendBtn = view.findViewById&amp;lt;Button&amp;gt;(R.id.send_btn)

        sendBtn.setOnClickListener {
            //입력값

            val name = argsNameEdit.text.toString()
            val age = argsAgeEdit.text.toString()

            val user = User(name, age)

            val action = FirstFragmentDirections.firstToSecond(user)

            findNavController().navigate(action)
        }

        return view
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SecondFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. args.&lt;span style=&quot;color: #ee2323;&quot;&gt;user&lt;/span&gt;.name&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;내비게이션 파일에 등록된 &lt;span style=&quot;color: #ee2323;&quot;&gt;argument name&lt;/span&gt;으로 데이터 가져오기&lt;/p&gt;
&lt;pre id=&quot;code_1671423346773&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SecondFragment : Fragment() {

    private val args: SecondFragmentArgs by navArgs()

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_second, container, false)

        val argsText = view.findViewById&amp;lt;TextView&amp;gt;(R.id.args_text)

        val name = args.user.name
        val age = args.user.age

        argsText.text = &quot;이름: $name 나이: $age&quot;

        return view
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671423908931&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwZ4d4/hyQWHai6jB/0PhgQnNE3BgqtFBdZFXta1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/iiLqt/hyQWyYL08d/RHTrbkXj2SNWkgJWw3kKe0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/6ncfH/hyQWxS7UnA/kcMkNJMtGkeN15WpVKOm21/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwZ4d4/hyQWHai6jB/0PhgQnNE3BgqtFBdZFXta1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/iiLqt/hyQWyYL08d/RHTrbkXj2SNWkgJWw3kKe0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/6ncfH/hyQWxS7UnA/kcMkNJMtGkeN15WpVKOm21/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671423917012&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dPYQfh/hyQWBBbX2s/F3nQltjR5wmLB7xGrHUD31/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cbQeCR/hyQWxyM4Th/zUNBzjQClhMtAaY2vLbk7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dPYQfh/hyQWBBbX2s/F3nQltjR5wmLB7xGrHUD31/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cbQeCR/hyQWxyM4Th/zUNBzjQClhMtAaY2vLbk7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671423928305&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1. 권한 등록 2. 라이브러리 등록 3. 모델 클래스 4. 서비스 인터페이스 1.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tyeVu/hyQWzXGuNs/O504KMDk5OzBnWdD9ljMz0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/doKoTp/hyQWHuEEhW/iZd1THkP764l2BMlJyRvc1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tyeVu/hyQWzXGuNs/O504KMDk5OzBnWdD9ljMz0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/doKoTp/hyQWHuEEhW/iZd1THkP764l2BMlJyRvc1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1. 권한 등록 2. 라이브러리 등록 3. 모델 클래스 4. 서비스 인터페이스 1.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=E-I3IkvzkrI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cAVm83/hyQWtpDJ4p/XeHg151xhFdE0jkcrY60oK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/E-I3IkvzkrI&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>NavigationComponent</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>코틀린</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/480</guid>
      <comments>https://aries574.tistory.com/480#entry480comment</comments>
      <pubDate>Mon, 19 Dec 2022 13:29:46 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Navigation component part4 - 프래그먼트 간에 데이터 쉽게 보내는 방법</title>
      <link>https://aries574.tistory.com/479</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Navigation-component-part4-safeargs-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V2Ru6/btrThmbmhPw/ULfzLSEkdmy87lusceUgi0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V2Ru6/btrThmbmhPw/ULfzLSEkdmy87lusceUgi0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V2Ru6/btrThmbmhPw/ULfzLSEkdmy87lusceUgi0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV2Ru6%2FbtrThmbmhPw%2FULfzLSEkdmy87lusceUgi0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Navigation-component-part4-safeargs-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation Component&lt;/span&gt;를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;프래그먼트 간에 데이터를 쉽게&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;보내는 방법&lt;/span&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/478&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.12.08 - [안드로이드] - [안드로이드 코틀린] Navigation component part3 - BottomNavigaion 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670589379673&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Navigation component part3 - BottomNavigaion 쉽게 만드는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 BottomNavigaion 쉽게 만드는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다. 2022.12.07 - [안드로이드] &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/478&quot; data-og-url=&quot;https://aries574.tistory.com/478&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hmISM/hyQQtJuvXo/YPtpDTowbXJygLR6A5r2Tk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/1kbPI/hyQQxrBqXg/7kR57SX3D96IrRU95EnjD0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/478&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/478&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hmISM/hyQQtJuvXo/YPtpDTowbXJygLR6A5r2Tk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/1kbPI/hyQQxrBqXg/7kR57SX3D96IrRU95EnjD0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Navigation component part3 - BottomNavigaion 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 BottomNavigaion 쉽게 만드는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다. 2022.12.07 - [안드로이드]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기 &lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성 &lt;br /&gt;5.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결 &lt;br /&gt;6.&amp;nbsp;프래그먼트&amp;nbsp;설정 &lt;br /&gt;7.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/434137036&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/mHT5z/hyQQuIptfv/KFJsSdPCPJyQXaHfey0OsK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/AaZeq/hyQQBnd7Eg/i96gdQPKryEkKyAjWd1ykK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/434137036?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 라이브러리 등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670589538561&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
    implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;plugins 괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1670589613623&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;id 'androidx.navigation.safeargs.kotlin'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;build.gradle(Project:프로젝트명)&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;plugins 괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1670589667071&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;id 'androidx.navigation.safeargs' version '2.5.3' apply false&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res 선택 -&amp;gt;&amp;nbsp; 마우스 오른쪽 클릭 -&amp;gt; new -&amp;gt; Android Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;my_nav&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resource type:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내비게이션 폴더 생성과 파일이 만들어집니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&lt;span style=&quot;color: #ee2323;&quot;&gt; 2개의 프래그먼트&lt;/span&gt;를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 파일명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;FirstFragment&lt;/span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;SecondFragment&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. app 선택 -&amp;gt; New -&amp;gt; Fragment -&amp;gt; Fragment (Blank)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. action&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;이동할 프래그먼트&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. argument&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;넘겨받을 값&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1670589797985&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;navigation xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/my_nav&quot;
    app:startDestination=&quot;@id/firstFragment&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/firstFragment&quot;
        android:name=&quot;com.example.navigationexam.FirstFragment&quot;
        android:label=&quot;fragment_first&quot;
        tools:layout=&quot;@layout/fragment_first&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/first_to_second&quot;
            app:destination=&quot;@id/secondFragment&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/secondFragment&quot;
        android:name=&quot;com.example.navigationexam.SecondFragment&quot;
        android:label=&quot;fragment_second&quot;
        tools:layout=&quot;@layout/fragment_second&quot; &amp;gt;
        &amp;lt;argument
            android:name=&quot;argsValue&quot;
            app:argType=&quot;string&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
&amp;lt;/navigation&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6.&amp;nbsp;프래그먼트&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_first.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 전송할 텍스트 입력할 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 텍스트 전송하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670589846456&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.FirstFragment&quot;&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/args_name_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;이름&quot;
        android:textSize=&quot;40sp&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/args_age_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/args_name_edit&quot;
        android:hint=&quot;나이&quot;
        android:textSize=&quot;40sp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/send_btn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/args_age_edit&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;40dp&quot;
        android:text=&quot;전송&quot;
        android:textSize=&quot;30sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;FirstFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. FirstFragmentDirections&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- &lt;span style=&quot;color: #ee2323;&quot;&gt;navigation.safeargs 플러그인&lt;/span&gt; 추가하면 생기는 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 프래그먼트 이름 + Directions&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. firstToSecond&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;프래그먼트 &lt;span style=&quot;color: #ee2323;&quot;&gt;액션 아이디&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. findNavController().navigate&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;프래그먼트 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;하는 기능&lt;/p&gt;
&lt;pre id=&quot;code_1670589912263&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class FirstFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view =  inflater.inflate(R.layout.fragment_first, container, false)

        val argsEdit = view.findViewById&amp;lt;EditText&amp;gt;(R.id.args_edit)
        val sendBtn = view.findViewById&amp;lt;Button&amp;gt;(R.id.send_btn)

        sendBtn.setOnClickListener {
            //입력값
            val sendArgs = argsEdit.text.toString()

            val action = FirstFragmentDirections.firstToSecond(sendArgs)

            findNavController().navigate(action)
        }

        return view
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_second.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 전송받은 텍스트 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670589942719&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.SecondFragment&quot;&amp;gt;


    &amp;lt;TextView
        android:id=&quot;@+id/args_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:gravity=&quot;center&quot;
        android:textSize=&quot;40sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SecondFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. args:&amp;nbsp;SecondFragmentArgs&amp;nbsp;by&amp;nbsp;navArgs()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;전송 받은 데이터&lt;/span&gt; 꺼내오는 객체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. argsValue&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;내비게이션 파일에 추가한 &lt;span style=&quot;color: #ee2323;&quot;&gt;argument name&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670589967351&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SecondFragment : Fragment() {

    private val args: SecondFragmentArgs by navArgs()

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_second, container, false)

        val argsText = view.findViewById&amp;lt;TextView&amp;gt;(R.id.args_text)

        argsText.text = args.argsValue

        return view
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;FragmentContainerView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670589988495&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/drawerLayout&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;


    &amp;lt;androidx.fragment.app.FragmentContainerView
        android:id=&quot;@+id/fragmentContainerView&quot;
        android:name=&quot;androidx.navigation.fragment.NavHostFragment&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        app:defaultNavHost=&quot;true&quot;
        app:navGraph=&quot;@navigation/my_nav&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670590816531&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qJNFK/hyQQCzGml5/lEohZvGWgneLDppkh9KYE0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cE2saN/hyQPdBuGYy/AFL12UN8Q9bb04y5nMVBPK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/xGcgd/hyQQx6df9R/pBwuEe4weV1812B9rPsOoK/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qJNFK/hyQQCzGml5/lEohZvGWgneLDppkh9KYE0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cE2saN/hyQPdBuGYy/AFL12UN8Q9bb04y5nMVBPK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/xGcgd/hyQQx6df9R/pBwuEe4weV1812B9rPsOoK/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670590823978&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/EvFNJ/hyQPhYbZvf/fG8w6kXW8P2m2aDF9cwc8k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bsTIzu/hyQQsjw1jc/XlKBYFKLYo9KvFmK8K7iLK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/EvFNJ/hyQPhYbZvf/fG8w6kXW8P2m2aDF9cwc8k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bsTIzu/hyQQsjw1jc/XlKBYFKLYo9KvFmK8K7iLK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670590846406&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cSm6g9/hyQQqF2cLr/19cpjbgoCh9o98EZTGEhhK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/g1jst/hyQO6h5ouv/08ZFYiLg6yDwEiyttsAsGk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cSm6g9/hyQQqF2cLr/19cpjbgoCh9o98EZTGEhhK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/g1jst/hyQO6h5ouv/08ZFYiLg6yDwEiyttsAsGk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=fWnr1dSDPOQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/h3mBU/hyQQuaAPDm/DRgCWnokBOqATbNmCdrF7k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/fWnr1dSDPOQ&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>NavigationComponent</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>코틀린</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/479</guid>
      <comments>https://aries574.tistory.com/479#entry479comment</comments>
      <pubDate>Fri, 9 Dec 2022 22:03:22 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Navigation component part3 - BottomNavigaion 쉽게 만드는 방법</title>
      <link>https://aries574.tistory.com/478</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;navigation-component-part3-bottom-navagation-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/saQj4/btrS5MV1qi7/qX0KppKkjMd3RziH9Ki1p1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/saQj4/btrS5MV1qi7/qX0KppKkjMd3RziH9Ki1p1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/saQj4/btrS5MV1qi7/qX0KppKkjMd3RziH9Ki1p1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsaQj4%2FbtrS5MV1qi7%2FqX0KppKkjMd3RziH9Ki1p1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;navigation-component-part3-bottom-navagation-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation Component&lt;/span&gt;를 이용해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;BottomNavigaion 쉽게 만드는&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;방법&lt;/span&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/477&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.12.07 - [안드로이드] - [안드로이드 코틀린] Navigation component part2 - DrawerLayout Navigaion 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670469087894&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Navigation component part2 - DrawerLayout Navigaion 쉽게 만드는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 DrawerLayout Navigaion 쉽게 만드는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다. 2022.12.06 - [안드로&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/477&quot; data-og-url=&quot;https://aries574.tistory.com/477&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ciqrh6/hyQO4DBOyZ/eqzrvOkwjGbxxIt9G7lhQ1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/UJNNK/hyQO5P0Ukw/ztMS18oaXkdWMkG4CUu1Uk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/477&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/477&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ciqrh6/hyQO4DBOyZ/eqzrvOkwjGbxxIt9G7lhQ1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/UJNNK/hyQO5P0Ukw/ztMS18oaXkdWMkG4CUu1Uk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Navigation component part2 - DrawerLayout Navigaion 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 DrawerLayout Navigaion 쉽게 만드는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다. 2022.12.06 - [안드로&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3. 내비게이션 파일 만들기&lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성 &lt;br /&gt;5. 메뉴 만들기&lt;br /&gt;6.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결 &lt;br /&gt;7. 메인 화면 구성&lt;br /&gt;8. 메인 코드 구현&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/434096863&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dQJ30G/hyQPaDP6wW/GExx8z9pDSqnNckImHntZ1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/Aak7T/hyQO4Knq6f/quKnDDfROMMhHwZ1ZiU6zk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/434096863?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/b&gt;&lt;/b&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670469186218&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
    implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res 선택 -&amp;gt;&amp;nbsp; 마우스 오른쪽 클릭 -&amp;gt; new -&amp;gt; Android Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;my_nav&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resource type:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내비게이션 폴더 생성과 파일이 만들어집니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3개의 프래그먼트&lt;/span&gt;를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 파일명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;HomeFragment&lt;/span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ProfileFragment, SettingFragment&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. app 선택 -&amp;gt; New -&amp;gt; Fragment -&amp;gt; Fragment (Blank)&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_home.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670469253378&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.HomeFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;50sp&quot;
        android:textStyle=&quot;bold&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Home&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_profile.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670469262906&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.ProfileFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;50sp&quot;
        android:textStyle=&quot;bold&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Profile&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_setting.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670469287089&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.SettingFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;50sp&quot;
        android:textStyle=&quot;bold&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Setting&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;메뉴&amp;nbsp;만들기&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;drawer_menu.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. res 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Android Resource Directory&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Resource type: menu 선택 -&amp;gt; Ok&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 이름: bottom_menu&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;아이콘 res -&amp;gt; drawable&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/d3QgTB/btrS5xkyVxM/QhGuadpXTeG8FKM88kScc1/ic_settings.xml?attach=1&amp;amp;knm=tfile.xml&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;ic_settings.xml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/b3kXbI/btrS4YXdW5q/1xuzGIyURMCD2DL9RxiABK/ic_person.xml?attach=1&amp;amp;knm=tfile.xml&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;ic_person.xml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cwJL8K/btrS9PKMfM4/IexgOnMEnEk6ESoasYYVg1/ic_home.xml?attach=1&amp;amp;knm=tfile.xml&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;ic_home.xml&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1670469400256&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;menu xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;

    &amp;lt;group android:checkableBehavior=&quot;single&quot;&amp;gt;
        &amp;lt;item android:id=&quot;@+id/homeFragment&quot;
            android:title=&quot;home&quot;/&amp;gt;

        &amp;lt;item android:id=&quot;@+id/profileFragment&quot;
            android:title=&quot;Profile&quot;/&amp;gt;

        &amp;lt;item android:id=&quot;@+id/settingFragment&quot;
            android:title=&quot;Setting&quot;/&amp;gt;
    &amp;lt;/group&amp;gt;
&amp;lt;/menu&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 내비게이션 파일에 프래그먼트 연결 &lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;my_nav.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670469491849&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;navigation xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/my_nav&quot;
    app:startDestination=&quot;@id/homeFragment&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/homeFragment&quot;
        android:name=&quot;com.example.navigationexam.HomeFragment&quot;
        android:label=&quot;fragment_home&quot;
        tools:layout=&quot;@layout/fragment_home&quot; /&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/profileFragment&quot;
        android:name=&quot;com.example.navigationexam.ProfileFragment&quot;
        android:label=&quot;fragment_profile&quot;
        tools:layout=&quot;@layout/fragment_profile&quot; /&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/settingFragment&quot;
        android:name=&quot;com.example.navigationexam.SettingFragment&quot;
        android:label=&quot;fragment_setting&quot;
        tools:layout=&quot;@layout/fragment_setting&quot; /&amp;gt;
&amp;lt;/navigation&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 메인 화면 구성&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;FragmentContainerView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 내비게이션 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;BottomNavigationView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670469515904&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;androidx.drawerlayout.widget.DrawerLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/drawerLayout&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/fragment&quot;
        android:name=&quot;androidx.navigation.fragment.NavHostFragment&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        app:defaultNavHost=&quot;true&quot;
        app:navGraph=&quot;@navigation/my_nav&quot; /&amp;gt;


    &amp;lt;com.google.android.material.navigation.NavigationView
        android:id=&quot;@+id/navigationView&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;match_parent&quot;
        android:layout_gravity=&quot;start&quot;
        android:fitsSystemWindows=&quot;true&quot;
        app:menu=&quot;@menu/drawer_menu&quot; /&amp;gt;

&amp;lt;/androidx.drawerlayout.widget.DrawerLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;8.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. navController&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;내비게이션 이동&lt;/span&gt;하는 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;내비게이션 파일에 등록된 프래그먼트에서 탐색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. appBarConfiguration&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;앱바 설정&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;객체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. setupActionBarWithNavController&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;액션바 설정&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;객체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. bottomNav.setupWithNavController&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;바텀 내비게이션 &lt;span style=&quot;color: #ee2323;&quot;&gt;컨트롤러 설정&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670469557937&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    private lateinit var navController: NavController
    private lateinit var appBarConfiguration: AppBarConfiguration

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val bottomNav: BottomNavigationView = findViewById(R.id.bottomNav)

        //네비게이션 컨트롤러
        val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment) as NavHostFragment
        navController = navHostFragment.navController

        //앱바 설정객체
        appBarConfiguration = AppBarConfiguration(setOf(R.id.homeFragment, R.id.profileFragment, R.id.settingFragment))

        //액션바 설정
        setupActionBarWithNavController(navController, appBarConfiguration)

        bottomNav.setupWithNavController(navController)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670469771052&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMdHTP/hyQPhiEXoJ/kTNvWVhBnljPol5macjDjk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dYwQ7f/hyQO3EH9e1/QiEeSK5Z7iwu0Q34DE1rZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/itIrF/hyQPcaAuxh/WNc0zukMGKSPwdc9QkPCdK/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMdHTP/hyQPhiEXoJ/kTNvWVhBnljPol5macjDjk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dYwQ7f/hyQO3EH9e1/QiEeSK5Z7iwu0Q34DE1rZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/itIrF/hyQPcaAuxh/WNc0zukMGKSPwdc9QkPCdK/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670469776957&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ci6368/hyQO6g7Dgv/GS8IUAnbpAdhowt0Jludr1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/heMVc/hyQPiIBOXc/S9rclCYNfGkvKQ2PqzvBK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bvl9ZC/hyQO8TxjZz/FCkraa72uYAESVgGbsv8LK/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ci6368/hyQO6g7Dgv/GS8IUAnbpAdhowt0Jludr1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/heMVc/hyQPiIBOXc/S9rclCYNfGkvKQ2PqzvBK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bvl9ZC/hyQO8TxjZz/FCkraa72uYAESVgGbsv8LK/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670469783655&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tVhiS/hyQO7f1mQT/y29Co68PonKtYXYeNIr39k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/GnqCc/hyQPjne0ra/x9pa8JKSzEBjPlmnQGwGkK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tVhiS/hyQO7f1mQT/y29Co68PonKtYXYeNIr39k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/GnqCc/hyQPjne0ra/x9pa8JKSzEBjPlmnQGwGkK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=VQZszTxYxkg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/1ADc9/hyQO6uDUAB/3aOfXddhOVfgW7e1fNsNSK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/VQZszTxYxkg&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>BottomNavigaion</category>
      <category>바텀내비게이션</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>코틀린</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/478</guid>
      <comments>https://aries574.tistory.com/478#entry478comment</comments>
      <pubDate>Thu, 8 Dec 2022 12:25:45 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Navigation component part2 - DrawerLayout Navigaion 쉽게 만드는 방법</title>
      <link>https://aries574.tistory.com/477</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Navigation-component-part2-drawer-layout-blog (1).webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BqUjE/btrS1J61kT0/x0Tgn8qnAciUTDDeptIs50/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BqUjE/btrS1J61kT0/x0Tgn8qnAciUTDDeptIs50/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BqUjE/btrS1J61kT0/x0Tgn8qnAciUTDDeptIs50/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBqUjE%2FbtrS1J61kT0%2Fx0Tgn8qnAciUTDDeptIs50%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;Navigation-component-part2-drawer-layout-blog (1).webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation Component&lt;/span&gt;를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;DrawerLayout Navigaion 쉽게 만드는&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;방법&lt;/span&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/476&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.12.06 - [안드로이드] - [안드로이드 코틀린] Navigation component part1 - 프래그먼트 쉽게 연결하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670419332588&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Navigation component part1 - 프래그먼트 쉽게 연결하는 방법&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 메인 화면에 프래그먼트 쉽게 연결하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 내비게이션 파일 만들기 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/476&quot; data-og-url=&quot;https://aries574.tistory.com/476&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eoZuT0/hyQPgXQuuG/fi6SYblzhq9bg1L9DpvEZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WL3Is/hyQO70UzNg/qFzEePrmEhJAG5SS5n73mk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/tqzAK/hyQO4QExPe/3RilJDNxp9ChaPli7hHTXK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/476&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/476&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eoZuT0/hyQPgXQuuG/fi6SYblzhq9bg1L9DpvEZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WL3Is/hyQO70UzNg/qFzEePrmEhJAG5SS5n73mk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/tqzAK/hyQO4QExPe/3RilJDNxp9ChaPli7hHTXK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Navigation component part1 - 프래그먼트 쉽게 연결하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 Navigation Component를 이용해서 메인 화면에 프래그먼트 쉽게 연결하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 내비게이션 파일 만들기&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기 &lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성 &lt;br /&gt;5.&amp;nbsp;메뉴&amp;nbsp;만들기&amp;nbsp;drawer_menu.xml &lt;br /&gt;6.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결 &lt;br /&gt;7.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml &lt;br /&gt;8.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/434085866&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/baLZZ9/hyQPjtvjEQ/YTNKxbjBB6NN9GddspiZDk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bZIzMI/hyQPbbah4U/KmQzS4Kc2RHjjeDX99DALk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/434085866?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670419554214&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
    implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;내비게이션&amp;nbsp;파일&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res 선택 -&amp;gt;&amp;nbsp; 마우스 오른쪽 클릭 -&amp;gt; new -&amp;gt; Android Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;my_nav&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resource type:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내비게이션 폴더 생성과 파일이 만들어집니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3개의 프래그먼트&lt;/span&gt;를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 파일명은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;HomeFragment&lt;/span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ProfileFragment, SettingFragment&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. app 선택 -&amp;gt; New -&amp;gt; Fragment -&amp;gt; Fragment (Blank)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_home.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670420631352&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.HomeFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;50sp&quot;
        android:textStyle=&quot;bold&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Home&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_profile.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670420651063&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.ProfileFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;50sp&quot;
        android:textStyle=&quot;bold&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Profile&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_setting.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1670420670702&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.SettingFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;50sp&quot;
        android:textStyle=&quot;bold&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Setting&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;메뉴&amp;nbsp;만들기&amp;nbsp;drawer_menu.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. res 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Android Resource Directory&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Resource type: menu 선택 -&amp;gt; Ok&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 이름: drawer_menu&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670419728965&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;menu xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;

    &amp;lt;group android:checkableBehavior=&quot;single&quot;&amp;gt;
        &amp;lt;item android:id=&quot;@+id/homeFragment&quot;
            android:title=&quot;home&quot;/&amp;gt;

        &amp;lt;item android:id=&quot;@+id/profileFragment&quot;
            android:title=&quot;Profile&quot;/&amp;gt;

        &amp;lt;item android:id=&quot;@+id/settingFragment&quot;
            android:title=&quot;Setting&quot;/&amp;gt;
    &amp;lt;/group&amp;gt;
&amp;lt;/menu&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6.&amp;nbsp;내비게이션&amp;nbsp;파일에&amp;nbsp;프래그먼트&amp;nbsp;연결&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 내비게이션 파일에 프래그먼트 등록해서 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;액션 태그 아이디&lt;/span&gt;를 통해 다른&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;프래그먼트 이동&lt;/span&gt;을 쉽게 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. startDestination : 맨 처음 보여줄 프래그먼트 설정&lt;/p&gt;
&lt;pre id=&quot;code_1670419987294&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;navigation xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/my_nav&quot;
    app:startDestination=&quot;@id/homeFragment&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/homeFragment&quot;
        android:name=&quot;com.example.navigationexam.HomeFragment&quot;
        android:label=&quot;fragment_home&quot;
        tools:layout=&quot;@layout/fragment_home&quot; /&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/profileFragment&quot;
        android:name=&quot;com.example.navigationexam.ProfileFragment&quot;
        android:label=&quot;fragment_profile&quot;
        tools:layout=&quot;@layout/fragment_profile&quot; /&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/settingFragment&quot;
        android:name=&quot;com.example.navigationexam.SettingFragment&quot;
        android:label=&quot;fragment_setting&quot;
        tools:layout=&quot;@layout/fragment_setting&quot; /&amp;gt;
&amp;lt;/navigation&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;7.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;fragment&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 메뉴 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;NavigationView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670420011525&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;androidx.drawerlayout.widget.DrawerLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/drawerLayout&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/fragment&quot;
        android:name=&quot;androidx.navigation.fragment.NavHostFragment&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        app:defaultNavHost=&quot;true&quot;
        app:navGraph=&quot;@navigation/my_nav&quot; /&amp;gt;


    &amp;lt;com.google.android.material.navigation.NavigationView
        android:id=&quot;@+id/navigationView&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;match_parent&quot;
        android:layout_gravity=&quot;start&quot;
        android:fitsSystemWindows=&quot;true&quot;
        app:menu=&quot;@menu/drawer_menu&quot; /&amp;gt;

&amp;lt;/androidx.drawerlayout.widget.DrawerLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;8.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. navController&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;내비게이션 이동&lt;/span&gt;하는 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;내비게이션 파일에 등록된 프래그먼트에서 탐색&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. appBarConfiguration&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;앱바 설정&lt;/span&gt; 객체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. setupActionBarWithNavController&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;액션바 설정&lt;/span&gt; 객체&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. onSupportNavigateUp()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;뒤로 가기 버튼&lt;/span&gt; 누르면 실행되는 함수&lt;/p&gt;
&lt;pre id=&quot;code_1670420027046&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    private lateinit var navController: NavController
    private lateinit var appBarConfiguration: AppBarConfiguration

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val drawerLayout: DrawerLayout = findViewById(R.id.drawerLayout)
        val navigationView: NavigationView = findViewById(R.id.navigationView)

        //네비게이션 컨트롤러
        navController = findNavController(R.id.fragment)

        //앱바 설정( 컨트롤러, 드로우 레이아웃)
        appBarConfiguration = AppBarConfiguration(navController.graph, drawerLayout)

        //액션바&amp;amp;네비게이션 설정
        setupActionBarWithNavController(navController, appBarConfiguration)

        //네비게이션뷰 설정
        navigationView.setupWithNavController(navController)
    }

    //뒤로가기 선택시 호출
    override fun onSupportNavigateUp(): Boolean {

        val navController = findNavController(R.id.fragment)

        return navController.navigateUp(appBarConfiguration) //뒤로 가기
                || super.onSupportNavigateUp()
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670420404052&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FgV29/hyQPfYXICb/uIfyU7Tu27nV0KKhv9ZuAK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ck8LJ6/hyQPjNOa5f/8qMaDk39E2QS8OpInM4Vek/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/EmKAy/hyQO59SLNU/IiMhKB2ULSN9jnukQoFeb1/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FgV29/hyQPfYXICb/uIfyU7Tu27nV0KKhv9ZuAK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ck8LJ6/hyQPjNOa5f/8qMaDk39E2QS8OpInM4Vek/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/EmKAy/hyQO59SLNU/IiMhKB2ULSN9jnukQoFeb1/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어 베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670420412343&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5rS5S/hyQO6gDhP5/4LEFEIDh7dUB6c8uR51Va0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/sXGMI/hyQO4C8j8Y/HjnYBe1Z1ZcnPZabKyd8V0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/baXp1e/hyQPg4ElEt/1CLidnvp5jjjd1sckD65f0/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5rS5S/hyQO6gDhP5/4LEFEIDh7dUB6c8uR51Va0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/sXGMI/hyQO4C8j8Y/HjnYBe1Z1ZcnPZabKyd8V0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/baXp1e/hyQPg4ElEt/1CLidnvp5jjjd1sckD65f0/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670420422335&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AAKOD/hyQPesbSHH/ypecDFRvSGQk9sxroJ6FZk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/1CYLZ/hyQPc8YSJh/U39paJzbjrgmOdg5ygoBYK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AAKOD/hyQPesbSHH/ypecDFRvSGQk9sxroJ6FZk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/1CYLZ/hyQPc8YSJh/U39paJzbjrgmOdg5ygoBYK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=s1m9yH9A5DA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dRJZbC/hyQPbI1lQO/VAae0j2Nk1V5Ygel5WTva1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/s1m9yH9A5DA&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>DrawerLayoutNavigaion</category>
      <category>N</category>
      <category>NavigationComponent</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>코틀린</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/477</guid>
      <comments>https://aries574.tistory.com/477#entry477comment</comments>
      <pubDate>Wed, 7 Dec 2022 22:45:11 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Navigation component part1 - 프래그먼트 쉽게 연결하는 방법</title>
      <link>https://aries574.tistory.com/476</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;navigation component part1 - basic blog.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba5THD/btrS0FvjBeR/BvA7jsPtfk7wGxh94dlfRK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba5THD/btrS0FvjBeR/BvA7jsPtfk7wGxh94dlfRK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba5THD/btrS0FvjBeR/BvA7jsPtfk7wGxh94dlfRK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba5THD%2FbtrS0FvjBeR%2FBvA7jsPtfk7wGxh94dlfRK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;navigation component part1 - basic blog.jpg&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation Component&lt;/span&gt;를 이용해서 메인 화면에 &lt;span style=&quot;color: #ee2323;&quot;&gt;프래그먼트 쉽게 연결하는 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;방법&lt;/span&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3. 내비게이션 파일 만들기 &lt;b&gt;my_nav.xml&lt;/b&gt;&lt;br /&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성 &lt;br /&gt;5. &lt;b&gt;내비게이션 파일에 프래그먼트 연결&lt;/b&gt;&lt;br /&gt;6.&amp;nbsp;프래그먼트&amp;nbsp;설정 &lt;br /&gt;7.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/434059012&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/jEjgl/hyQNS4JZVF/kpRRNhAgXJKuPt76PZORkK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/y1Htm/hyQPb2Fy2x/KTxhQkpD90eObNvYN4fTx0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/434059012?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 라이브러리 등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
    implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 내비게이션 파일 만들기 &lt;b&gt;my_nav.xml&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res 선택 -&amp;gt;&amp;nbsp; 마우스 오른쪽 클릭 -&amp;gt; new -&amp;gt; Android Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름: &lt;span style=&quot;color: #ee2323;&quot;&gt;my_nav&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Resource type: &lt;span style=&quot;color: #ee2323;&quot;&gt;Navigation&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내비게이션 폴더 생성과 파일이 만들어 집니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;프래그먼트&amp;nbsp;생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;2개의 프래그먼트&lt;/span&gt;를 생성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 파일명은 &lt;span style=&quot;color: #ee2323;&quot;&gt;OneFragment&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;TwoFragment&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. app 선택 -&amp;gt; New -&amp;gt; Fragment -&amp;gt; Fragment (Blank)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 내비게이션 파일에 프래그먼트 연결 my_nav.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 내비게이션 파일에 프래그먼트 등록해서 관리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. &lt;span style=&quot;color: #ee2323;&quot;&gt;액션태그 아이디&lt;/span&gt;를 통해 다른 &lt;span style=&quot;color: #ee2323;&quot;&gt;프래그먼트 이동&lt;/span&gt;을 쉽게 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. startDestination : 맨 처음 보여줄 프래그먼트 설정&lt;/p&gt;
&lt;pre id=&quot;code_1670336341941&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;navigation xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:id=&quot;@+id/my_nav&quot;
    app:startDestination=&quot;@id/oneFragment&quot;&amp;gt;

    &amp;lt;fragment
        android:id=&quot;@+id/oneFragment&quot;
        android:name=&quot;com.example.navigationcomponent.OneFragment&quot;
        android:label=&quot;fragment_one&quot;
        tools:layout=&quot;@layout/fragment_one&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/action_oneFragment_to_twoFragment&quot;
            app:destination=&quot;@id/twoFragment&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
    &amp;lt;fragment
        android:id=&quot;@+id/twoFragment&quot;
        android:name=&quot;com.example.navigationcomponent.TwoFragment&quot;
        android:label=&quot;fragment_two&quot;
        tools:layout=&quot;@layout/fragment_two&quot; &amp;gt;
        &amp;lt;action
            android:id=&quot;@+id/action_twoFragment_to_oneFragment&quot;
            app:destination=&quot;@id/oneFragment&quot; /&amp;gt;
    &amp;lt;/fragment&amp;gt;
&amp;lt;/navigation&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;6.&amp;nbsp;프래그먼트&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; fragment_one.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 이동 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670336536758&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.OneFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:id=&quot;@+id/one_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;30sp&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;One Fragment&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;OneFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. Navigation.findNavController(view).navigate&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 프래그먼트간의 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;을 도와주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 내비게이션 파일에 등록한 액션 아이디를 인자 값으로 전달한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 액션 아이디에 해당하는 프래그먼트로 이동할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1670336579805&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class OneFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_one, container, false)

        val oneText = view.findViewById&amp;lt;TextView&amp;gt;(R.id.one_text)

        //클릭 이벤트
        oneText.setOnClickListener {
            Navigation.findNavController(view).navigate(R.id.action_oneFragment_to_twoFragment)
        }

        return view
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;fragment_two.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 이동 기능&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670336550357&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;FrameLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.TwoFragment&quot;&amp;gt;
    
    &amp;lt;TextView
        android:id=&quot;@+id/two_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:textSize=&quot;30sp&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;Two Fragment&quot; /&amp;gt;

&amp;lt;/FrameLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;TwoFragment.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Navigation.findNavController(view).navigate&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 프래그먼트간의 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;을 도와주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 내비게이션 파일에 등록한 액션 아이디를 인자 값으로 전달한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 액션 아이디에 해당하는 프래그먼트로 이동할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1670336594549&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class TwoFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view = inflater.inflate(R.layout.fragment_two, container, false)

        val twoText = view.findViewById&amp;lt;TextView&amp;gt;(R.id.two_text)

        //클릭 이벤트
        twoText.setOnClickListener {
            Navigation.findNavController(view).navigate(R.id.action_twoFragment_to_oneFragment)
        }

        return view
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 메인 화면 구성 activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 프래그먼트 화면을 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;FragmentContainerView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. navGraph: 내비게이션 파일을 &lt;span style=&quot;color: #ee2323;&quot;&gt;적용&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1670336613428&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.MainActivity&quot; &amp;gt;

    &amp;lt;androidx.fragment.app.FragmentContainerView
        android:id=&quot;@+id/fragmentContainerView&quot;
        android:name=&quot;androidx.navigation.fragment.NavHostFragment&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:layout_weight=&quot;1&quot;
        app:defaultNavHost=&quot;true&quot;
        app:navGraph=&quot;@navigation/my_nav&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670337133438&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/f5MvR/hyQNKZX5Fr/qwIjaQ1wasVr9kgyFKkCm1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cSdx7q/hyQNUVNwzc/4tddFdYLdcW9SRfKgPRTHk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/U36Nq/hyQNNoQmKI/9I8XRJl14oE0NctkXjwbEk/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/f5MvR/hyQNKZX5Fr/qwIjaQ1wasVr9kgyFKkCm1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cSdx7q/hyQNUVNwzc/4tddFdYLdcW9SRfKgPRTHk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/U36Nq/hyQNNoQmKI/9I8XRJl14oE0NctkXjwbEk/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670337139305&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6qEOf/hyQPiOgyux/zFkwv7nEKmLuwk3piEbk71/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WxHpU/hyQNRLxUQe/skCAYISZ4kE5R57DiVOq21/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5F3Nq/hyQPhhwXgm/feIr7el96aeiAG3mmQ8kKK/img.jpg?width=950&amp;amp;height=756&amp;amp;face=0_0_950_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6qEOf/hyQPiOgyux/zFkwv7nEKmLuwk3piEbk71/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WxHpU/hyQNRLxUQe/skCAYISZ4kE5R57DiVOq21/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5F3Nq/hyQPhhwXgm/feIr7el96aeiAG3mmQ8kKK/img.jpg?width=950&amp;amp;height=756&amp;amp;face=0_0_950_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1670337147228&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOTuio/hyQNOOOyKQ/pIBaK2apt5UMm6fV9kVyLk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ozSx0/hyQNYRrkh2/frKcVB1aR7iR8BWAYJiFek/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOTuio/hyQNOOOyKQ/pIBaK2apt5UMm6fV9kVyLk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ozSx0/hyQNYRrkh2/frKcVB1aR7iR8BWAYJiFek/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=1se3PObmk_w&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/9rTZF/hyQPhu3ASF/A0qsBHXuPSgX3qhRx9JdMk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/1se3PObmk_w&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>NavigationComponent</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>코틀린</category>
      <category>프래그먼트</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/476</guid>
      <comments>https://aries574.tistory.com/476#entry476comment</comments>
      <pubDate>Tue, 6 Dec 2022 23:37:58 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part5- 결과 화면</title>
      <link>https://aries574.tistory.com/475</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-quizApp-part5-score-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m9wwk/btrR34qB4Lf/62nlK34aFH6BzarkDH0rtk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m9wwk/btrR34qB4Lf/62nlK34aFH6BzarkDH0rtk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m9wwk/btrR34qB4Lf/62nlK34aFH6BzarkDH0rtk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm9wwk%2FbtrR34qB4Lf%2F62nlK34aFH6BzarkDH0rtk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-quizApp-part5-score-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 다섯 번째 시간 - 결과 화면 만드는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/474&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.24 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part4 - 답변 체크 이벤트&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669355454758&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part4 - 답변 체크 이벤트&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 네 번째 시간 - 답변 체크 이벤트를 만들어 보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.11.23 - [안드로이드] - [안드로이드 코틀린]&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/474&quot; data-og-url=&quot;https://aries574.tistory.com/474&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ca8wXt/hyQHZHZAHI/rzzKbciK9sTbq4QSJFchPk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/nLiWw/hyQGx0DJhh/ptdGPZpKJPbahzBtKpB6uk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/474&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/474&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ca8wXt/hyQHZHZAHI/rzzKbciK9sTbq4QSJFchPk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/nLiWw/hyQGx0DJhh/ptdGPZpKJPbahzBtKpB6uk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part4 - 답변 체크 이벤트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 네 번째 시간 - 답변 체크 이벤트를 만들어 보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.11.23 - [안드로이드] - [안드로이드 코틀린]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;결과&amp;nbsp;액티비티&amp;nbsp;ResultActivity &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433779624&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/mJhpQ/hyQHWqXVx8/kXm2qYmowWTAZkWCjjR9Sk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/ccdzof/hyQGoijSjr/nCBwCul2fr1byzdniYSV9K/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433779624?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;결과&amp;nbsp;액티비티&amp;nbsp;ResultActivity&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;app 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Activity -&amp;gt; Empty Activity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Activity name: ResultActivity&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;activity_result.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 결과 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 점수 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 게임 화면으로 이동 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669355601362&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:gravity=&quot;center&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.ResultActivity&quot;&amp;gt;

    &amp;lt;TextView
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:text=&quot;결과&quot;
        android:textSize=&quot;30sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/score_text&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:textSize=&quot;20sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/reset_btn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:text=&quot;다시 하기&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;ResultActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. intent.getIntExtra(&quot;score&quot;,&amp;nbsp;0)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;전달 받은 &lt;span style=&quot;color: #ee2323;&quot;&gt;점수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. intent.getIntExtra(&quot;totalSize&quot;,&amp;nbsp;0)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;전달 받은 &lt;span style=&quot;color: #ee2323;&quot;&gt;전체 문제 갯수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. Intent(this@ResultActivity,&amp;nbsp;MainActivity::class.java)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;메인 액티비티로 이동하는&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;Intent&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. startActivity(intent)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;메인 액티비티로 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669355614881&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ResultActivity : AppCompatActivity() {

    private lateinit var binding: ActivityResultBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityResultBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val score = intent.getIntExtra(&quot;score&quot;, 0)
        val totalSize = intent.getIntExtra(&quot;totalSize&quot;, 0)

        //점수 보여주기
        binding.scoreText.text = getString(R.string.count_label, score, totalSize)

        //다시하기 버튼
        binding.resetBtn.setOnClickListener {
            val intent = Intent(this@ResultActivity, MainActivity::class.java)
            startActivity(intent)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp; 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. Intent(this@MainActivity,&amp;nbsp;ResultActivity::class.java)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;결과 액티비티로&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;이동&lt;/span&gt;&lt;/span&gt;하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;intent&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. intent.putExtra(&quot;score&quot;, score)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;결과 액티비티에 전달할 &lt;span style=&quot;color: #ee2323;&quot;&gt;점수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. intent.putExtra(&quot;totalSize&quot;, questionList.size)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;결과 액티비티에 전달할 &lt;span style=&quot;color: #ee2323;&quot;&gt;전체 문제 갯수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. startActivity(intent)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;결과 액티비티로 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. finish()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;액티비티 &lt;span style=&quot;color: #ee2323;&quot;&gt;닫기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669356094057&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity(), View.OnClickListener {

    private lateinit var binding:ActivityMainBinding

    private var currentPosition: Int = 1 //질문 위치
    private var selectedOption: Int = 0 //선택 답변 값
    private var score: Int = 0 // 점수

    private lateinit var questionList: ArrayList&amp;lt;Question&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //질문 리스트 가져오기
        questionList = QuestionData.getQuestion()

        //화면 셋팅
        getQuestionData()

        binding.option1Text.setOnClickListener(this)
        binding.option2Text.setOnClickListener(this)
        binding.option3Text.setOnClickListener(this)
        binding.option4Text.setOnClickListener(this)

        //답변 체크 이벤트
        binding.submitBtn.setOnClickListener {

            if(selectedOption != 0){

                val question = questionList[currentPosition-1]

                //정답 체크(선택 답변과 정답을 비교)
                if(selectedOption != question.correct_answer) { //오답

                    setColor(selectedOption, R.drawable.wrong_option_background)

                    callDialog(&quot;오답&quot;, &quot;정답 ${question.correct_answer}&quot;)
                }else{
                    score++
                }
                setColor(question.correct_answer, R.drawable.correct_option_background)

                if(currentPosition == questionList.size){
                    binding.submitBtn.text = getString(R.string.submit, &quot;끝&quot;)
                }else{
                    binding.submitBtn.text = getString(R.string.submit, &quot;다음&quot;)
                }

            }else{
                //위치값 상승
                currentPosition++
                when{
                    //전체 문제 숫자가 현재 위치보다 크면 다음 문제로 셋팅
                    currentPosition &amp;lt;= questionList.size -&amp;gt; {
                        //다음 문제 셋팅
                        getQuestionData()
                    }

                    else -&amp;gt;{
                        //결과 액티비티로 넘어가는 코드
                        val intent = Intent(this@MainActivity, ResultActivity::class.java)
                        intent.putExtra(&quot;score&quot;, score)
                        intent.putExtra(&quot;totalSize&quot;, questionList.size)
                        startActivity(intent)
                        finish()
                    }
                }
            }
            //선택값 초기화
            selectedOption = 0
        }//submitBtn

    } //onCreate

    /**
     * 답변 배경색상 변경
     */
    private fun setColor(opt: Int, color: Int){
        when(opt){
            1 -&amp;gt; binding.option1Text.background = ContextCompat.getDrawable(this, color)
            2 -&amp;gt; binding.option2Text.background = ContextCompat.getDrawable(this, color)
            3 -&amp;gt; binding.option3Text.background = ContextCompat.getDrawable(this, color)
            4 -&amp;gt; binding.option4Text.background = ContextCompat.getDrawable(this, color)
        }
    }

    /**
     * 정답 확인 다이얼로그
     */
    private fun callDialog(alertTitle: String, correctAnswer: String){

        AlertDialog.Builder(this)
            .setTitle(alertTitle)
            .setMessage(&quot;정답: $correctAnswer&quot;)
            .setPositiveButton(&quot;OK&quot;){
                dialogInterface, i -&amp;gt;
                dialogInterface.dismiss() //창 닫기
            }
            .setCancelable(false)
            .show()
    }


    /**
     * 문제 셋팅
     */
    private fun getQuestionData(){

        //답변 설정 초기화
        setOptionStyle()

        //질문 변수에 담기
        val question = questionList[currentPosition-1]

        //상태바 위치
        binding.progressBar.progress = currentPosition

        //상태바 최대값
        binding.progressBar.max = questionList.size

        //현재 위치 표시
        binding.progressText.text = getString(R.string.count_label, currentPosition, questionList.size)

        //질문 표시
        binding.questionText.text = question.question

        //답변 표시
        binding.option1Text.text = question.option_one
        binding.option2Text.text = question.option_two
        binding.option3Text.text = question.option_three
        binding.option4Text.text = question.option_four

        setSubmitBtn(&quot;제출&quot;)
    }

    //제출 버튼 텍스트 설정
    private fun setSubmitBtn(name: String){

        binding.submitBtn.text = getString(R.string.submit, name)
    }

    /**
     * 답변 스타일 설정
     */
    private fun setOptionStyle(){

        var optionList: ArrayList&amp;lt;TextView&amp;gt; = arrayListOf()
        optionList.add(binding.option1Text)
        optionList.add(binding.option2Text)
        optionList.add(binding.option3Text)
        optionList.add(binding.option4Text)

        //답변 텍스트뷰 설정
        for(op in optionList){
            op.setTextColor(Color.parseColor(&quot;#555151&quot;))
            op.background = ContextCompat.getDrawable(this, R.drawable.option_background)
            op.typeface = Typeface.DEFAULT
        }
    }

    /**
     * 답변 선택 이벤트
     */
    private fun selectedOptionStyle(view: TextView, opt: Int){

        //옵션 초기화
        setOptionStyle()

        //위치 담기
        selectedOption = opt

        view.setTextColor((Color.parseColor(&quot;#5F00FF&quot;)))
        view.background = ContextCompat.getDrawable(this, R.drawable.selected_option_background)
        view.typeface = Typeface.DEFAULT_BOLD
    }

    override fun onClick(view: View) {
        when(view.id){
            R.id.option1_text -&amp;gt; selectedOptionStyle(binding.option1Text, 1)
            R.id.option2_text -&amp;gt; selectedOptionStyle(binding.option2Text, 2)
            R.id.option3_text -&amp;gt; selectedOptionStyle(binding.option3Text, 3)
            R.id.option4_text -&amp;gt; selectedOptionStyle(binding.option4Text, 4)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669356309787&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/biMj9N/hyQHZVw4ZX/PLXCjP0Lysk6hLiPLhKqNK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bxDBJ4/hyQGmktDju/IR28dOvg9CUvl7XdYJs2JK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KoaBD/hyQGuW8esF/c27qgD3h1vrQGPPNhi9510/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/biMj9N/hyQHZVw4ZX/PLXCjP0Lysk6hLiPLhKqNK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bxDBJ4/hyQGmktDju/IR28dOvg9CUvl7XdYJs2JK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KoaBD/hyQGuW8esF/c27qgD3h1vrQGPPNhi9510/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/420&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.29 - [안드로이드] - [안드로이드 코틀린] 야구 게임 만드는 방법 part1 - 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669356317667&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 야구 게임 만드는 방법 part1 - 화면 구성&quot; data-og-description=&quot;이번 시간에는 야구 게임 화면 구성하는 방법을 알아보겠습니다. 야구 게임 규칙을 알려드리겠습니다. 1. 시작 버튼을 누르면 랜덤한 숫자 3개가 만들어집니다. 2. 사용자는 3개의 숫자를 입력하&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/420&quot; data-og-url=&quot;https://aries574.tistory.com/420&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wqLWQ/hyQHWxJMne/jKyDkWEH9awE4vCT9oJiB1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bQ6O2B/hyQH3Rawkv/ALZQzEalDvT3jmwjdSntm1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bLu0Qz/hyQGk1jozf/Tuu6brkDHsEwz6xeYlbBrk/img.jpg?width=446&amp;amp;height=871&amp;amp;face=0_0_446_871&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/420&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/420&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wqLWQ/hyQHWxJMne/jKyDkWEH9awE4vCT9oJiB1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bQ6O2B/hyQH3Rawkv/ALZQzEalDvT3jmwjdSntm1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bLu0Qz/hyQGk1jozf/Tuu6brkDHsEwz6xeYlbBrk/img.jpg?width=446&amp;amp;height=871&amp;amp;face=0_0_446_871');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 야구 게임 만드는 방법 part1 - 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 야구 게임 화면 구성하는 방법을 알아보겠습니다. 야구 게임 규칙을 알려드리겠습니다. 1. 시작 버튼을 누르면 랜덤한 숫자 3개가 만들어집니다. 2. 사용자는 3개의 숫자를 입력하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/405&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.08 - [안드로이드] - [안드로이드 코틀린] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기&amp;amp; 보여주기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669356331765&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기&amp;amp; 보여주기&quot; data-og-description=&quot;이번 시간에는 같은 그림 찾기 part2 이미지 섞기와 섞은 이미지를 보여주는 방법을 알아보겠습니다. 화면 구성은 아래 링크를 들어가시면 됩니다. 2022.04.02 - [안드로이드] - [안드로이드] 같은 그&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/405&quot; data-og-url=&quot;https://aries574.tistory.com/405&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rznQc/hyQHYWCNmI/8YakxA3bnhYO5nxqJQrGWk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/biKIGr/hyQH8yaT9U/OV1jpvxKw7Op9az67qgKAk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/405&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/405&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rznQc/hyQHYWCNmI/8YakxA3bnhYO5nxqJQrGWk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/biKIGr/hyQH8yaT9U/OV1jpvxKw7Op9az67qgKAk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 같은 그림 찾기 게임 만드는 방법 part2 - 이미지 섞기&amp;amp; 보여주기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 같은 그림 찾기 part2 이미지 섞기와 섞은 이미지를 보여주는 방법을 알아보겠습니다. 화면 구성은 아래 링크를 들어가시면 됩니다. 2022.04.02 - [안드로이드] - [안드로이드] 같은 그&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=eYOqtj0RUa0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bWcmjI/hyQGpuNMGy/LR5kJdzVEnGxMjaaSituhk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/eYOqtj0RUa0&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>앱</category>
      <category>코틀린</category>
      <category>퀴즈</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/475</guid>
      <comments>https://aries574.tistory.com/475#entry475comment</comments>
      <pubDate>Fri, 25 Nov 2022 15:10:59 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part4 - 답변 체크 이벤트</title>
      <link>https://aries574.tistory.com/474</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-quizApp-part4-question-check-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/balArM/btrR1ouPWA4/TKkjbvGG4pq3Xq7PuxC9F1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/balArM/btrR1ouPWA4/TKkjbvGG4pq3Xq7PuxC9F1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/balArM/btrR1ouPWA4/TKkjbvGG4pq3Xq7PuxC9F1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbalArM%2FbtrR1ouPWA4%2FTKkjbvGG4pq3Xq7PuxC9F1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-quizApp-part4-question-check-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 네 번째 시간 - &lt;span style=&quot;color: #ee2323;&quot;&gt;답변 체크 이벤트&lt;/span&gt;를 만들어 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/473&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.23 - [안드로이드] - [안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part3 - 답변 선택 이벤트&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669266879402&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part3 - 답변 선택 이벤트&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 세 번째 시간 - 답변 선택 이벤트를 만들어 보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.11.22 - [안드로이드] - [안드로이드 코틀린]&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/473&quot; data-og-url=&quot;https://aries574.tistory.com/473&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jH2Dk/hyQGv1PgKI/eO7FAIKltAsTi4ygLnXQ2K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cKhujS/hyQGydb89Y/fmPk8CHflYKRv2IkOSKKz0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/473&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/473&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jH2Dk/hyQGv1PgKI/eO7FAIKltAsTi4ygLnXQ2K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cKhujS/hyQGydb89Y/fmPk8CHflYKRv2IkOSKKz0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part3 - 답변 선택 이벤트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 세 번째 시간 - 답변 선택 이벤트를 만들어 보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.11.22 - [안드로이드] - [안드로이드 코틀린]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;정답&amp;nbsp;답변&amp;nbsp;drawable&amp;nbsp;correct_option_background.xml &lt;br /&gt;3.&amp;nbsp;오답&amp;nbsp;답변&amp;nbsp;drawable&amp;nbsp;wrong_option_background.xml &lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433753479&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dQXbyQ/hyQGk66mmy/gaMG3UWh8sIq4hiX0JQMfk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/fyryp/hyQGrrB8m5/hA9FA7sSUE8o8RrMzdcDH1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433753479?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;정답&amp;nbsp;답변&amp;nbsp;drawable&amp;nbsp;correct_option_background.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res -&amp;gt; drawable 클릭 -&amp;gt; 마우스 오른쪽 -&amp;gt; new -&amp;gt; Drawable Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;정답 답변&lt;/span&gt; background에 적용할 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 색상을 초록색으로 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. solid &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;내부&amp;nbsp;설정&lt;/p&gt;
&lt;pre id=&quot;code_1669267037493&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:shape=&quot;rectangle&quot;&amp;gt;

    &amp;lt;!-- 내부 색상 --&amp;gt;
    &amp;lt;solid android:color=&quot;@android:color/holo_green_light&quot; /&amp;gt;
&amp;lt;/shape&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;오답&amp;nbsp;답변&amp;nbsp;drawable&amp;nbsp;wrong_option_background.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;res -&amp;gt; drawable 클릭 -&amp;gt; 마우스 오른쪽 -&amp;gt; new -&amp;gt; Drawable Resource File&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;오답 답변&lt;/span&gt; background에 적용할 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 색상을 빨강색으로 변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. solid&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;내부&amp;nbsp;설정&lt;/p&gt;
&lt;pre id=&quot;code_1669267054525&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:shape=&quot;rectangle&quot;&amp;gt;

    &amp;lt;!-- 내부 색상 --&amp;gt;
    &amp;lt;solid android:color=&quot;@android:color/holo_red_light&quot; /&amp;gt;
&amp;lt;/shape&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. setOptionStyle()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;getQuestionData() &lt;span style=&quot;color: #000000;&quot;&gt;함수&lt;/span&gt;&lt;/span&gt;&amp;nbsp;첫 줄에 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. binding.submitBtn.setOnClickListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;체크&lt;/span&gt; 이벤트&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. selectedOption&amp;nbsp;!=&amp;nbsp;question.correct_answer&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;선택 답변과 정답 &lt;span style=&quot;color: #ee2323;&quot;&gt;비교&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. setColor()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;해당 답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;색상 변경&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. binding.submitBtn.text&amp;nbsp;=&amp;nbsp;getString(R.string.submit,&amp;nbsp;&quot;다음&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 체크 버튼 &lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트 변경&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669267268727&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; class MainActivity : AppCompatActivity(), View.OnClickListener {

    private lateinit var binding:ActivityMainBinding

    private var currentPosition: Int = 1 //질문 위치
    private var selectedOption: Int = 0 //선택 답변 값
    private var score: Int = 0 // 점수

    private lateinit var questionList: ArrayList&amp;lt;Question&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //질문 리스트 가져오기
        questionList = QuestionData.getQuestion()

        //화면 셋팅
        getQuestionData()

        binding.option1Text.setOnClickListener(this)
        binding.option2Text.setOnClickListener(this)
        binding.option3Text.setOnClickListener(this)
        binding.option4Text.setOnClickListener(this)

        //답변 체크 이벤트
        binding.submitBtn.setOnClickListener {

            if(selectedOption != 0){

                val question = questionList[currentPosition-1]

                //정답 체크(선택 답변과 정답을 비교)
                if(selectedOption != question.correct_answer) { //오답

                    setColor(selectedOption, R.drawable.wrong_option_background)

                    callDialog(&quot;오답&quot;, &quot;정답 ${question.correct_answer}&quot;)
                }
                setColor(question.correct_answer, R.drawable.correct_option_background)

                if(currentPosition == questionList.size){
                    binding.submitBtn.text = getString(R.string.submit, &quot;끝&quot;)
                }else{
                    binding.submitBtn.text = getString(R.string.submit, &quot;다음&quot;)
                }

            }else{
                //위치값 상승
                currentPosition++
                when{
                    //전체 문제 숫자가 현재 위치보다 크면 다음 문제로 셋팅
                    currentPosition &amp;lt;= questionList.size -&amp;gt; {
                        //다음 문제 셋팅
                        getQuestionData()
                    }

                    else -&amp;gt;{
                        //결과 액티비티로 넘어가는 코드
                        Toast.makeText(this, &quot;끝&quot;, Toast.LENGTH_SHORT).show()
                    }
                }
            }
            //선택값 초기화
            selectedOption = 0
        }//submitBtn

    } //onCreate

    /**
     * 답변 배경색상 변경
     */
    private fun setColor(opt: Int, color: Int){
        when(opt){
            1 -&amp;gt; binding.option1Text.background = ContextCompat.getDrawable(this, color)
            2 -&amp;gt; binding.option2Text.background = ContextCompat.getDrawable(this, color)
            3 -&amp;gt; binding.option3Text.background = ContextCompat.getDrawable(this, color)
            4 -&amp;gt; binding.option4Text.background = ContextCompat.getDrawable(this, color)
        }
    }

    /**
     * 정답 확인 다이얼로그
     */
    private fun callDialog(alertTitle: String, correctAnswer: String){

        AlertDialog.Builder(this)
            .setTitle(alertTitle)
            .setMessage(&quot;정답: $correctAnswer&quot;)
            .setPositiveButton(&quot;OK&quot;){
                dialogInterface, i -&amp;gt;
                dialogInterface.dismiss() //창 닫기
            }
            .setCancelable(false)
            .show()
    }


    /**
     * 문제 셋팅
     */
    private fun getQuestionData(){

        //답변 설정 초기화
        setOptionStyle()

        //질문 변수에 담기
        val question = questionList[currentPosition-1]

        //상태바 위치
        binding.progressBar.progress = currentPosition

        //상태바 최대값
        binding.progressBar.max = questionList.size

        //현재 위치 표시
        binding.progressText.text = getString(R.string.count_label, currentPosition, questionList.size)

        //질문 표시
        binding.questionText.text = question.question

        //답변 표시
        binding.option1Text.text = question.option_one
        binding.option2Text.text = question.option_two
        binding.option3Text.text = question.option_three
        binding.option4Text.text = question.option_four

        setSubmitBtn(&quot;제출&quot;)
    }

    //제출 버튼 텍스트 설정
    private fun setSubmitBtn(name: String){

        binding.submitBtn.text = getString(R.string.submit, name)
    }

    /**
     * 답변 스타일 설정
     */
    private fun setOptionStyle(){

        var optionList: ArrayList&amp;lt;TextView&amp;gt; = arrayListOf()
        optionList.add(binding.option1Text)
        optionList.add(binding.option2Text)
        optionList.add(binding.option3Text)
        optionList.add(binding.option4Text)

        //답변 텍스트뷰 설정
        for(op in optionList){
            op.setTextColor(Color.parseColor(&quot;#555151&quot;))
            op.background = ContextCompat.getDrawable(this, R.drawable.option_background)
            op.typeface = Typeface.DEFAULT
        }
    }

    /**
     * 답변 선택 이벤트
     */
    private fun selectedOptionStyle(view: TextView, opt: Int){

        //옵션 초기화
        setOptionStyle()

        //위치 담기
        selectedOption = opt

        view.setTextColor((Color.parseColor(&quot;#5F00FF&quot;)))
        view.background = ContextCompat.getDrawable(this, R.drawable.selected_option_background)
        view.typeface = Typeface.DEFAULT_BOLD
    }

    override fun onClick(view: View) {
        when(view.id){
            R.id.option1_text -&amp;gt; selectedOptionStyle(binding.option1Text, 1)
            R.id.option2_text -&amp;gt; selectedOptionStyle(binding.option2Text, 2)
            R.id.option3_text -&amp;gt; selectedOptionStyle(binding.option3Text, 3)
            R.id.option4_text -&amp;gt; selectedOptionStyle(binding.option4Text, 4)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/413&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.08.18 - [안드로이드] - [안드로이드 코틀린] 내가 원하는 글씨체 폰트(Font) 적용하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669267330852&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 내가 원하는 글씨체 폰트(Font) 적용하는 방법&quot; data-og-description=&quot;이번 시간에는 안드로이드 기본 폰트가 아닌 다운로드한 폰트를 적용하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 폰트 폴더 font 3. 메인 화면 activity_main.xml 4. 메인 코드 MainActivity.kt &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/413&quot; data-og-url=&quot;https://aries574.tistory.com/413&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dqWEhH/hyQGtJJ0Lc/Lk6jzVpvhK8Bov9692Q39K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dCB7Ue/hyQGlx93lm/dLCeYbAlztup9X5JRzHTs1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ypMfw/hyQGwsURxW/OhIhfZ5WgLP9kC9SUcwyt0/img.jpg?width=426&amp;amp;height=876&amp;amp;face=0_0_426_876&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/413&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/413&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dqWEhH/hyQGtJJ0Lc/Lk6jzVpvhK8Bov9692Q39K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dCB7Ue/hyQGlx93lm/dLCeYbAlztup9X5JRzHTs1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ypMfw/hyQGwsURxW/OhIhfZ5WgLP9kC9SUcwyt0/img.jpg?width=426&amp;amp;height=876&amp;amp;face=0_0_426_876');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 내가 원하는 글씨체 폰트(Font) 적용하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 안드로이드 기본 폰트가 아닌 다운로드한 폰트를 적용하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 폰트 폴더 font 3. 메인 화면 activity_main.xml 4. 메인 코드 MainActivity.kt&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/148&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.12.03 - [안드로이드] - [안드로이드] BottomNavigationView 하단 탭 쉽게 만드는 방법 1-1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669267350731&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] BottomNavigationView 하단 탭 쉽게 만드는 방법 1-1&quot; data-og-description=&quot;2020.12.09 - [안드로이드] - [안드로이드] 탭(Tab) 만들어 보기 [안드로이드] 탭(Tab) 만들어 보기 2020/06/05 - [안드로이드] - [안드로이드]탭(TAB) 선택시 색상지정 setTabTextColors 이번시간에는 탭화면을 만&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/148&quot; data-og-url=&quot;https://aries574.tistory.com/148&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dsNm0A/hyQGmcLMKs/UV9PG24Wqg5uqVLkOAjxQk/img.jpg?width=324&amp;amp;height=702&amp;amp;face=0_0_324_702,https://scrap.kakaocdn.net/dn/cco8XC/hyQGqzscHJ/kmN036tSoZRbzZkt7kZYq0/img.jpg?width=324&amp;amp;height=702&amp;amp;face=0_0_324_702,https://scrap.kakaocdn.net/dn/cs3cRf/hyQGxk3E7N/iMO5LWYDTbQvqUCkXmKku0/img.jpg?width=912&amp;amp;height=683&amp;amp;face=0_0_912_683&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/148&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/148&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dsNm0A/hyQGmcLMKs/UV9PG24Wqg5uqVLkOAjxQk/img.jpg?width=324&amp;amp;height=702&amp;amp;face=0_0_324_702,https://scrap.kakaocdn.net/dn/cco8XC/hyQGqzscHJ/kmN036tSoZRbzZkt7kZYq0/img.jpg?width=324&amp;amp;height=702&amp;amp;face=0_0_324_702,https://scrap.kakaocdn.net/dn/cs3cRf/hyQGxk3E7N/iMO5LWYDTbQvqUCkXmKku0/img.jpg?width=912&amp;amp;height=683&amp;amp;face=0_0_912_683');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] BottomNavigationView 하단 탭 쉽게 만드는 방법 1-1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2020.12.09 - [안드로이드] - [안드로이드] 탭(Tab) 만들어 보기 [안드로이드] 탭(Tab) 만들어 보기 2020/06/05 - [안드로이드] - [안드로이드]탭(TAB) 선택시 색상지정 setTabTextColors 이번시간에는 탭화면을 만&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/261&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.16 - [안드로이드] - [안드로이드] Firebase Storage 이미지 업로드 part1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669267363030&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] Firebase Storage 이미지 업로드 part1&quot; data-og-description=&quot;이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/261&quot; data-og-url=&quot;https://aries574.tistory.com/261&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/L7AXS/hyQGlx94sm/n5iAihDZeOPQp8HKTfohVk/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/peSeF/hyQGkMMeet/wDtHHxATaqQFjbDnZaHLck/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/n8mOi/hyQGnCJqv2/Ym4BfFBce06y29TY2oWyGK/img.jpg?width=872&amp;amp;height=755&amp;amp;face=0_0_872_755&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/261&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/261&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/L7AXS/hyQGlx94sm/n5iAihDZeOPQp8HKTfohVk/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/peSeF/hyQGkMMeet/wDtHHxATaqQFjbDnZaHLck/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/n8mOi/hyQGnCJqv2/Ym4BfFBce06y29TY2oWyGK/img.jpg?width=872&amp;amp;height=755&amp;amp;face=0_0_872_755');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] Firebase Storage 이미지 업로드 part1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=4b5coQRfH3Q&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/i2rPG/hyQGuPqmm2/8RKnAqCl6RFAlh7uerx7Qk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/4b5coQRfH3Q&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>앱</category>
      <category>코틀린</category>
      <category>퀴즈</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/474</guid>
      <comments>https://aries574.tistory.com/474#entry474comment</comments>
      <pubDate>Thu, 24 Nov 2022 14:28:42 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part3 - 답변 선택 이벤트</title>
      <link>https://aries574.tistory.com/473</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-quizApp-part3-selected-event-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBCZAl/btrRRPmpFOH/k5ufIUaKyO1rXSSbOL2dm1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBCZAl/btrRRPmpFOH/k5ufIUaKyO1rXSSbOL2dm1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBCZAl/btrRRPmpFOH/k5ufIUaKyO1rXSSbOL2dm1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBCZAl%2FbtrRRPmpFOH%2Fk5ufIUaKyO1rXSSbOL2dm1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-quizApp-part3-selected-event-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 세 번째 시간 - &lt;span style=&quot;color: #ee2323;&quot;&gt;답변 선택 이벤트&lt;/span&gt;를 만들어 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/472&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.22 - [안드로이드] - [안드로이드 코틀린]간단한 퀴즈앱 만드는 방법 part2 - 퀴즈 만들기 및 보여주기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669167948471&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린]간단한 퀴즈앱 만드는 방법 part2 - 퀴즈 만들기 및 보여주기&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 두 번째 시간 - 퀴즈 만들기 및 보여주기를 만들어보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.11.21 - [안드로이드] - [안드로이드 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/472&quot; data-og-url=&quot;https://aries574.tistory.com/472&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Hy49h/hyQGwFKllC/VrVkWBHcT9H4cvuroFYvm1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b3CBvz/hyQFaxyl7F/2ae4OlKtpAu8hUelTrkEwK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/todjI/hyQGkefkd4/k8kCFxOSF4TqZWe5SIRXPK/img.jpg?width=438&amp;amp;height=874&amp;amp;face=0_0_438_874&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/472&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/472&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Hy49h/hyQGwFKllC/VrVkWBHcT9H4cvuroFYvm1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b3CBvz/hyQFaxyl7F/2ae4OlKtpAu8hUelTrkEwK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/todjI/hyQGkefkd4/k8kCFxOSF4TqZWe5SIRXPK/img.jpg?width=438&amp;amp;height=874&amp;amp;face=0_0_438_874');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린]간단한 퀴즈앱 만드는 방법 part2 - 퀴즈 만들기 및 보여주기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 두 번째 시간 - 퀴즈 만들기 및 보여주기를 만들어보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.11.21 - [안드로이드] - [안드로이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;답변&amp;nbsp;선택&amp;nbsp;drawable&amp;nbsp;selected_option_background.xml &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433724504&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cg26Xz/hyQE8NgnVA/9K69hOyq0o6JJKZ0bUonkK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/eAyelE/hyQFcB7zuX/KaYEsJ1u5WtfR94k5oaGE0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433724504?service=daum_tistory&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;답변&amp;nbsp;선택&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;drawable&amp;nbsp;selected_option_background.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res -&amp;gt; drawable 클릭 -&amp;gt; 마우스 오른쪽 -&amp;gt; new -&amp;gt; Drawable Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;답변 선택&lt;/span&gt; background에 적용할 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. stroke&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;외곽선&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. solid&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;내부&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. corners&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;모서리&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;설정&lt;/p&gt;
&lt;pre id=&quot;code_1669167447702&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:shape=&quot;rectangle&quot;&amp;gt;
    &amp;lt;!-- 외곽선--&amp;gt;
    &amp;lt;stroke
        android:width=&quot;2dp&quot;
        android:color=&quot;@android:color/holo_purple&quot; /&amp;gt;

    &amp;lt;!-- 내부 색상--&amp;gt;
    &amp;lt;solid android:color=&quot;@android:color/white&quot; /&amp;gt;

    &amp;lt;!-- 모서리 둥근 정도--&amp;gt;
    &amp;lt;corners android:radius=&quot;5dp&quot; /&amp;gt;
&amp;lt;/shape&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. View.OnClickListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;클릭&lt;/span&gt; 이벤트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. option1Text.setOnClickListener(this)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;뷰 클릭 이벤트 &lt;span style=&quot;color: #ee2323;&quot;&gt;설정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. override&amp;nbsp;fun&amp;nbsp;onClick&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;클릭 이벤트 &lt;span style=&quot;color: #ee2323;&quot;&gt;재정의&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. setOptionStyle()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;배경 스타일&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. selectedOptionStyle&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;선택 배경 스타일&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1669167611558&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity(), View.OnClickListener {

    private lateinit var binding:ActivityMainBinding

    private var currentPosition: Int = 1 //질문 위치
    private var selectedOption: Int = 0 //선택 답변 값
    private var score: Int = 0 // 점수

    private lateinit var questionList: ArrayList&amp;lt;Question&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //질문 리스트 가져오기
        questionList = QuestionData.getQuestion()

        //화면 셋팅
        getQuestionData()

        binding.option1Text.setOnClickListener(this)
        binding.option2Text.setOnClickListener(this)
        binding.option3Text.setOnClickListener(this)
        binding.option4Text.setOnClickListener(this)

    }

    private fun getQuestionData(){

        //질문 변수에 담기
        val question = questionList[currentPosition-1]

        //상태바 위치
        binding.progressBar.progress = currentPosition

        //상태바 최대값
        binding.progressBar.max = questionList.size

        //현재 위치 표시
        binding.progressText.text = getString(R.string.count_label, currentPosition, questionList.size)

        //질문 표시
        binding.questionText.text = question.question

        //답변 표시
        binding.option1Text.text = question.option_one
        binding.option2Text.text = question.option_two
        binding.option3Text.text = question.option_three
        binding.option4Text.text = question.option_four

        setSubmitBtn(&quot;제출&quot;)
    }

    //제출 버튼 텍스트 설정
    private fun setSubmitBtn(name: String){

        binding.submitBtn.text = getString(R.string.submit, name)
    }

    /**
     * 답변 스타일 설정
     */
    private fun setOptionStyle(){

        var optionList: ArrayList&amp;lt;TextView&amp;gt; = arrayListOf()
        optionList.add(binding.option1Text)
        optionList.add(binding.option2Text)
        optionList.add(binding.option3Text)
        optionList.add(binding.option4Text)

        //답변 텍스트뷰 설정
        for(op in optionList){
            op.setTextColor(Color.parseColor(&quot;#555151&quot;))
            op.background = ContextCompat.getDrawable(this, R.drawable.option_background)
            op.typeface = Typeface.DEFAULT
        }
    }

    /**
     * 답변 선택 이벤트
     */
    private fun selectedOptionStyle(view: TextView, opt: Int){

        //옵션 초기화
        setOptionStyle()

        //위치 담기
        selectedOption = opt

        view.setTextColor((Color.parseColor(&quot;#5F00FF&quot;)))
        view.background = ContextCompat.getDrawable(this, R.drawable.selected_option_background)
        view.typeface = Typeface.DEFAULT_BOLD
    }
    //클릭 이벤트 재정의
    override fun onClick(view: View) {
        when(view.id){
            R.id.option1_text -&amp;gt; selectedOptionStyle(binding.option1Text, 1)
            R.id.option2_text -&amp;gt; selectedOptionStyle(binding.option2Text, 2)
            R.id.option3_text -&amp;gt; selectedOptionStyle(binding.option3Text, 3)
            R.id.option4_text -&amp;gt; selectedOptionStyle(binding.option4Text, 4)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669167813850&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ttM5P/hyQGxLqigv/4vX7gbsvs8oLyOrhjUDOK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/yGU3r/hyQFbiVvu5/Ee47CN3kiDQRfjYcGsjl3K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/hnLhq/hyQGwlryT0/tlrNRMMivPmDnKCXAzJxRK/img.jpg?width=950&amp;amp;height=756&amp;amp;face=0_0_950_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ttM5P/hyQGxLqigv/4vX7gbsvs8oLyOrhjUDOK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/yGU3r/hyQFbiVvu5/Ee47CN3kiDQRfjYcGsjl3K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/hnLhq/hyQGwlryT0/tlrNRMMivPmDnKCXAzJxRK/img.jpg?width=950&amp;amp;height=756&amp;amp;face=0_0_950_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669167824956&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvpL6u/hyQE4qynWu/3E6dtOZ5WMKLBxKqpZdie0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dviCYz/hyQGkrMsnj/6uHTAaLESkANQvO0AlB8X1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvpL6u/hyQE4qynWu/3E6dtOZ5WMKLBxKqpZdie0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dviCYz/hyQGkrMsnj/6uHTAaLESkANQvO0AlB8X1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669167830498&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwVfym/hyQGqS31js/Dv8T3HS0cXewKgFvQguWRk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/nNkhj/hyQGwZ27Lt/f7FxlGkhw0Wt39yamZNlOk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cLolOP/hyQGweGawR/451sVoxkeWQK1KvkuyTHVK/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwVfym/hyQGqS31js/Dv8T3HS0cXewKgFvQguWRk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/nNkhj/hyQGwZ27Lt/f7FxlGkhw0Wt39yamZNlOk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cLolOP/hyQGweGawR/451sVoxkeWQK1KvkuyTHVK/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=ZeE9cDs1rgk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/5ABAc/hyQGmpAU67/1VxCdK3kSGeuTFWkUR8sRk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/ZeE9cDs1rgk&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>앱</category>
      <category>코틀린</category>
      <category>퀴즈</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/473</guid>
      <comments>https://aries574.tistory.com/473#entry473comment</comments>
      <pubDate>Wed, 23 Nov 2022 10:45:50 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 간단한 퀴즈앱 만드는 방법 part2 - 퀴즈 만들기 및 보여주기</title>
      <link>https://aries574.tistory.com/472</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-quizApp-part2-Data-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rQmsO/btrRRuBMY4x/C5EcIIISZ1fuT238dmbWS0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rQmsO/btrRRuBMY4x/C5EcIIISZ1fuT238dmbWS0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rQmsO/btrRRuBMY4x/C5EcIIISZ1fuT238dmbWS0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrQmsO%2FbtrRRuBMY4x%2FC5EcIIISZ1fuT238dmbWS0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-quizApp-part2-Data-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 두 번째 시간 - &lt;span style=&quot;color: #ee2323;&quot;&gt;퀴즈 만들기&lt;/span&gt; 및 &lt;span style=&quot;color: #ee2323;&quot;&gt;보여주기&lt;/span&gt;를 만들어보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.21 - [안드로이드] - [안드로이드 코틀린]간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669096641516&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린]간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&quot; data-og-description=&quot;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/471&quot; data-og-url=&quot;https://aries574.tistory.com/471&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6EPSn/hyQFdtqh9J/WgMU0Lpb0YKm3CSlqKD3N1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bMQWhS/hyQE6A4B12/IkyU8DV7HZ0GeYVOeHYtWK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/sI9qF/hyQFey6Ttf/rTOOHY3ddqUaA1gX0VNVnk/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/471&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/471&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6EPSn/hyQFdtqh9J/WgMU0Lpb0YKm3CSlqKD3N1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bMQWhS/hyQE6A4B12/IkyU8DV7HZ0GeYVOeHYtWK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/sI9qF/hyQFey6Ttf/rTOOHY3ddqUaA1gX0VNVnk/img.jpg?width=428&amp;amp;height=872&amp;amp;face=0_0_428_872');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린]간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - 메인화면 &amp;amp; 설정을 해보겠습니다. 목차 1. 실행 화면 2. 바인딩 설정 3. 문자 리소스 string.xml 4. 답변 drawable option_background.xml 5. 메인 화면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;퀴즈&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;Question.kt &lt;br /&gt;3.&amp;nbsp;퀴즈&amp;nbsp;데이터&amp;nbsp;클래스 QuestionData.kt &lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin quizApp part2 preView.JPG&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S790c/btrRRPS9Smq/KBkGLA7OClROocrJpFVS10/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S790c/btrRRPS9Smq/KBkGLA7OClROocrJpFVS10/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S790c/btrRRPS9Smq/KBkGLA7OClROocrJpFVS10/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS790c%2FbtrRRPS9Smq%2FKBkGLA7OClROocrJpFVS10%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;438&quot; height=&quot;874&quot; data-filename=&quot;kotlin quizApp part2 preView.JPG&quot; data-origin-width=&quot;438&quot; data-origin-height=&quot;874&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;퀴즈&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;Question.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 퀴즈 데이터 담는 클래스&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. question&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;퀴즈 &lt;span style=&quot;color: #ee2323;&quot;&gt;문제&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. option_one&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;1&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. option_two&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;2&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. option_three&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변 &lt;span style=&quot;color: #ee2323;&quot;&gt;3&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. option_four&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;답변&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 4&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;7. correct_answer&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;정답&lt;/span&gt; 번호&lt;/p&gt;
&lt;pre id=&quot;code_1669096857494&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class Question(
    var id: Int,
    var question: String,
    var option_one: String,
    var option_two: String,
    var option_three: String,
    var option_four: String,
    var correct_answer: Int
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3. 퀴즈 데이터 클래스 QuestionData.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 샘플 데이터 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. getQuestion()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;샘플 데이터&lt;/span&gt; 가져오는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. queList&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;퀴즈 문제 담을 &lt;span style=&quot;color: #ee2323;&quot;&gt;리스트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. q1 ~ q3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;퀴즈 &lt;span style=&quot;color: #ee2323;&quot;&gt;샘플 데이터&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669096847432&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;object QuestionData {

    fun getQuestion(): ArrayList&amp;lt;Question&amp;gt;{

        val queList: ArrayList&amp;lt;Question&amp;gt; = arrayListOf()

        val q1 = Question(
            1,
            &quot;1 + 1? &quot;,
            &quot;1&quot;,
            &quot;2&quot;,
            &quot;3&quot;,
            &quot;4&quot;,
            2
        )

        val q2 = Question(
            1,
            &quot;2 + 2?&quot;,
            &quot;2&quot;,
            &quot;3&quot;,
            &quot;4&quot;,
            &quot;5&quot;,
            3
        )

        val q3 = Question(
            1,
            &quot;3 + 3?&quot;,
            &quot;2&quot;,
            &quot;4&quot;,
            &quot;6&quot;,
            &quot;8&quot;,
            3
        )

        queList.add(q1)
        queList.add(q2)
        queList.add(q3)

        return queList
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. currentPosition&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;질문 &lt;span style=&quot;color: #ee2323;&quot;&gt;위치&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. selectedOption&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;선택&lt;/span&gt;한 답변&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. score&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;총 맞춘 개수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. getQuestionData()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;퀴즈 문제&lt;/span&gt; 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. progressBar.progress&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;상태바 &lt;span style=&quot;color: #ee2323;&quot;&gt;현재 위치&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. progressBar.max&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;상태바 &lt;span style=&quot;color: #ee2323;&quot;&gt;최댓값&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;7. getString&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;string.xml의 &lt;span style=&quot;color: #ee2323;&quot;&gt;설정값&lt;/span&gt; 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;8. setSubmitBtn&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;체크 버튼 &lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1669096883902&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity(){

    private lateinit var binding: ActivityMainBinding

    private lateinit var questionList: ArrayList&amp;lt;Question&amp;gt;

    private var currentPosition: Int = 1 //질문 위치
    private var selectedOption: Int = 0 // 선택 옵션
    private var score: Int = 0 //점수

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //질문 리스트 가져오기
        questionList = QuestionData.getQuestion()

        //화면 셋팅
        getQuestionData()
    }


    private fun getQuestionData(){

        //질문 변수에 담기
        val question = questionList[currentPosition-1]

        //상태바 위치
        binding.progressBar.progress = currentPosition

        //상태바 최대값
        binding.progressBar.max = questionList.size

        //현재 위치 표시
        binding.progressText.text =  getString(R.string.count_label, currentPosition, questionList.size)

        //질문 표시
        binding.questionText.text = question.question

        //답변 표시
        binding.option1.text = question.option_one
        binding.option2.text = question.option_two
        binding.option3.text = question.option_three
        binding.option4 .text = question.option_four

        setSubmitBtn(&quot;제출&quot;)

    }

    //제출버튼 텍스트 설정
    private fun setSubmitBtn(name: String){

        binding.submitBtn.text = getString(R.string.submit, name)

    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669097531752&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/z4oqg/hyQE4iX9Yh/tVANd6XJirtXKphUeXK6XK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dMLXIl/hyQFdUwqB4/UCgwD7h9742G6ye9oNox80/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/oTuRm/hyQE2ZLbS0/CpSkz0lpP7dGKssTSmvIw0/img.jpg?width=950&amp;amp;height=756&amp;amp;face=0_0_950_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/z4oqg/hyQE4iX9Yh/tVANd6XJirtXKphUeXK6XK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dMLXIl/hyQFdUwqB4/UCgwD7h9742G6ye9oNox80/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/oTuRm/hyQE2ZLbS0/CpSkz0lpP7dGKssTSmvIw0/img.jpg?width=950&amp;amp;height=756&amp;amp;face=0_0_950_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669097537123&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dEqJUw/hyQEZ9Nydu/q1NtHlfuUX1tdC4lnsM6Mk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/4T31O/hyQE2yGnOy/qLSyYbjcpU5z5k1R80ldl1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dEqJUw/hyQEZ9Nydu/q1NtHlfuUX1tdC4lnsM6Mk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/4T31O/hyQE2yGnOy/qLSyYbjcpU5z5k1R80ldl1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669097543561&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i1jD4/hyQE8MqJjT/SZZAnTSHYkF6KIY84AsJuK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/efXPWA/hyQFcVB3Om/7yckQXzLtkX18rwM9k7qn0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i1jD4/hyQE8MqJjT/SZZAnTSHYkF6KIY84AsJuK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/efXPWA/hyQFcVB3Om/7yckQXzLtkX18rwM9k7qn0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=MZSA74lJApw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/kzCoW/hyQE4ccJv0/XQrp3CJo3K9cFsLGgd3otK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/MZSA74lJApw&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>앱</category>
      <category>퀴즈</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/472</guid>
      <comments>https://aries574.tistory.com/472#entry472comment</comments>
      <pubDate>Tue, 22 Nov 2022 15:14:32 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 간단한 퀴즈 앱 만드는 방법 part1 - 메인화면 구성과 설정</title>
      <link>https://aries574.tistory.com/471</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-quizApp-part1-layout-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV0Sx3/btrRGvIlNhL/E20KuS43dRjBIIWhWybTcK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV0Sx3/btrRGvIlNhL/E20KuS43dRjBIIWhWybTcK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV0Sx3/btrRGvIlNhL/E20KuS43dRjBIIWhWybTcK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV0Sx3%2FbtrRGvIlNhL%2FE20KuS43dRjBIIWhWybTcK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-quizApp-part1-layout-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요. 이번 시간에는 퀴즈 앱 만들기 첫 번째 시간 - &lt;span style=&quot;color: #ee2323;&quot;&gt;메인화면&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #ee2323;&quot;&gt;설정&lt;/span&gt;을 해보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;바인딩&amp;nbsp;설정 &lt;br /&gt;3.&amp;nbsp;문자&amp;nbsp;리소스&amp;nbsp;string.xml &lt;br /&gt;4.&amp;nbsp;답변&amp;nbsp;drawable&amp;nbsp;option_background.xml &lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin quizApp part1 preView.JPG&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7O4hJ/btrRCW01r9x/rABOJPtMzWtYwhAODYaKrK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7O4hJ/btrRCW01r9x/rABOJPtMzWtYwhAODYaKrK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7O4hJ/btrRCW01r9x/rABOJPtMzWtYwhAODYaKrK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7O4hJ%2FbtrRCW01r9x%2FrABOJPtMzWtYwhAODYaKrK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;428&quot; height=&quot;872&quot; data-filename=&quot;kotlin quizApp part1 preView.JPG&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;바인딩&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664864494006&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;문자&amp;nbsp;리소스&amp;nbsp;string.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- res -&amp;gt; values -&amp;gt; string.xml&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 텍스트 설정 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 아래 코드를 추가하시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1669006606913&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;string name=&quot;qustion&quot;&amp;gt;질문&amp;lt;/string&amp;gt;
    &amp;lt;string name=&quot;count_label&quot;&amp;gt;%d/%d&amp;lt;/string&amp;gt;
    &amp;lt;string name=&quot;submit&quot;&amp;gt;%s&amp;lt;/string&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;답변&amp;nbsp;drawable&amp;nbsp;option_background.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res -&amp;gt; drawable 클릭 -&amp;gt; 마우스 오른쪽 -&amp;gt; new -&amp;gt; Drawable Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 답변 background에 적용할 파일&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. stroke&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;외곽선&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. solid&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;내부&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. corners&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;모서리&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1669006777384&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:shape=&quot;rectangle&quot;&amp;gt;

    &amp;lt;!-- 외곽선--&amp;gt;
    &amp;lt;stroke
        android:width=&quot;1dp&quot;
        android:color=&quot;@android:color/black&quot;/&amp;gt;

    &amp;lt;!-- 내부 색상--&amp;gt;
    &amp;lt;solid android:color=&quot;@android:color/white&quot;/&amp;gt;

    &amp;lt;!-- 모서리 둥근 정도--&amp;gt;
    &amp;lt;corners android:radius=&quot;5dp&quot;/&amp;gt;
&amp;lt;/shape&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 질문 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 퀴즈 위치 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;ProgressBar&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 퀴즈 위치 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 답변 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt; 1 ~ 4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 정답 체크하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669006924249&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:gravity=&quot;center&quot;
    android:orientation=&quot;vertical&quot;
    android:padding=&quot;10dp&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/question_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:gravity=&quot;center&quot;
        android:text=&quot;@string/qustion&quot;
        android:textSize=&quot;18sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;

    &amp;lt;LinearLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:gravity=&quot;center_vertical&quot;
        android:orientation=&quot;horizontal&quot;&amp;gt;

        &amp;lt;ProgressBar
            android:id=&quot;@+id/progressBar&quot;
            style=&quot;?android:progressBarStyleHorizontal&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;50dp&quot;
            android:layout_weight=&quot;1&quot;
            android:max=&quot;5&quot;
            android:progress=&quot;0&quot; /&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/progress_text&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:padding=&quot;10dp&quot;
            android:text=&quot;@string/count_label&quot;
            android:textColor=&quot;@android:color/black&quot;
            android:textSize=&quot;20sp&quot; /&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/option1_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:background=&quot;@drawable/option_background&quot;
        android:gravity=&quot;center&quot;
        android:padding=&quot;10dp&quot;
        android:text=&quot;답변1&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/option2_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:background=&quot;@drawable/option_background&quot;
        android:gravity=&quot;center&quot;
        android:padding=&quot;10dp&quot;
        android:text=&quot;답변2&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/option3_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:background=&quot;@drawable/option_background&quot;
        android:gravity=&quot;center&quot;
        android:padding=&quot;10dp&quot;
        android:text=&quot;답변3&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/option4_text&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:background=&quot;@drawable/option_background&quot;
        android:gravity=&quot;center&quot;
        android:padding=&quot;10dp&quot;
        android:text=&quot;답변4&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/submit_btn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:text=&quot;@string/submit&quot;
        android:textSize=&quot;20sp&quot;
        android:textStyle=&quot;bold&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669007062359&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sAdmo/hyQDzjRYrg/B37Hv3jVWDQHHC3Cj1Mfx0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cs8KfQ/hyQDB2543G/7tObW7e3Zs71PYkTo0hp81/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/taSNf/hyQDBvees9/CK5KTKlmFFeHHHkOohdgWK/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sAdmo/hyQDzjRYrg/B37Hv3jVWDQHHC3Cj1Mfx0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cs8KfQ/hyQDB2543G/7tObW7e3Zs71PYkTo0hp81/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/taSNf/hyQDBvees9/CK5KTKlmFFeHHHkOohdgWK/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669007070512&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b8m07c/hyQEZOO5bY/ZwsoOeCNUnDeDDYYcghJL1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bbK08g/hyQDuCRXW2/qRn2vOv9j2SNQNHiIKoENK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b8m07c/hyQEZOO5bY/ZwsoOeCNUnDeDDYYcghJL1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bbK08g/hyQDuCRXW2/qRn2vOv9j2SNQNHiIKoENK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1669007076361&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AyjV4/hyQDuJElVA/IDXYe4zAKVKRBhJz1P4ZP1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bvec2A/hyQDBIMedW/xfJkzYdaFlPnTC0wkk0VWk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AyjV4/hyQDuJElVA/IDXYe4zAKVKRBhJz1P4ZP1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bvec2A/hyQDBIMedW/xfJkzYdaFlPnTC0wkk0VWk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=saCg-yhXLO0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ydNPM/hyQE9qmOXK/xh0CHlqXLsKJSlXoGwWZck/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/saCg-yhXLO0&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>안드로이드</category>
      <category>안드로이드스튜디오</category>
      <category>앱</category>
      <category>퀴즈</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/471</guid>
      <comments>https://aries574.tistory.com/471#entry471comment</comments>
      <pubDate>Mon, 21 Nov 2022 14:08:41 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part5 - 사용자 삭제</title>
      <link>https://aries574.tistory.com/469</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-firebaseCrud-part5-user-delete-blog_1.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UB4s4/btrQUbKArJE/EZj8GfryEiGhnerO9yIi4K/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UB4s4/btrQUbKArJE/EZj8GfryEiGhnerO9yIi4K/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UB4s4/btrQUbKArJE/EZj8GfryEiGhnerO9yIi4K/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUB4s4%2FbtrQUbKArJE%2FEZj8GfryEiGhnerO9yIi4K%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-firebaseCrud-part5-user-delete-blog_1.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 다섯 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실시간 데이터베이스(Realtime Database)에 저장된 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 정보&lt;/span&gt;를 &lt;span style=&quot;color: #ee2323;&quot;&gt;삭제&lt;/span&gt;하는 방법에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/468&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.10 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668136446182&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 네 번째 시간 실시간 데이터베이스(Realtime Database)에 저장된 사용자 정보를 수정하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/468&quot; data-og-url=&quot;https://aries574.tistory.com/468&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/uX8TR/hyQwNvYdAd/LQC3WosC848V6ToNzFQrJ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bwJuDu/hyQwBoMeFW/EJk6RZtawMEHCVekfOq6G1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/468&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/468&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/uX8TR/hyQwNvYdAd/LQC3WosC848V6ToNzFQrJ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bwJuDu/hyQwBoMeFW/EJk6RZtawMEHCVekfOq6G1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 네 번째 시간 실시간 데이터베이스(Realtime Database)에 저장된 사용자 정보를 수정하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt &lt;br /&gt;3.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;4.&amp;nbsp;사용자&amp;nbsp;리스트&amp;nbsp;액티비티&amp;nbsp;UserListActivity&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433421910&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bc3xCK/hyQwJf2xU2/sWR01ixpNcxIItRM0yWdy0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/b5XqaT/hyQxQkjikn/cOcAeVgDLpFiw7K3fkAUa1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433421910?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 데이터베이스 클래스 UserDao.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. userDelete(key:&amp;nbsp;String)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터베이스에 &lt;span style=&quot;color: #ee2323;&quot;&gt;key&lt;/span&gt;(구분값)을 전달해서 해당 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자&lt;/span&gt; 정보 &lt;span style=&quot;color: #ee2323;&quot;&gt;삭제&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1668136696658&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserDao {
    private var databaseReference: DatabaseReference? = null

    init{
        val db = FirebaseDatabase.getInstance()
        databaseReference = db.getReference(&quot;user&quot;)
    }

    //등록
    fun add(user: User?): Task&amp;lt;Void&amp;gt;{
        return databaseReference!!.push().setValue(user)
    }

    //조회
    fun getUserList(): Query?{
        return databaseReference
    }

    //수정
    fun userUpdate(key: String, hashMap: HashMap&amp;lt;String, Any&amp;gt;): Task&amp;lt;Void&amp;gt;{

        return databaseReference!!.child(key)!!.updateChildren(hashMap)
    }

    //삭제
    fun userDelete(key: String): Task&amp;lt;Void&amp;gt;{
        return databaseReference!!.child(key).removeValue()
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;라이브러리&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;implementation 'com.github.xabaras:RecyclerViewSwipeDecorator:1.4'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;setting.gradle&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencyResolutionManagement -&amp;gt; repositories 괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031644931&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;maven { url 'https://jitpack.io' }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 라이브러리 문서 -&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://github.com/xabaras/RecyclerViewSwipeDecorator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/xabaras/RecyclerViewSwipeDecorator&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668136761364&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - xabaras/RecyclerViewSwipeDecorator: A simple utility class to add a background, an icon and a label while swiping a Rec&quot; data-og-description=&quot;A simple utility class to add a background, an icon and a label while swiping a RecyclerView item left or right. - GitHub - xabaras/RecyclerViewSwipeDecorator: A simple utility class to add a backg...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/xabaras/RecyclerViewSwipeDecorator&quot; data-og-url=&quot;https://github.com/xabaras/RecyclerViewSwipeDecorator&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cbtdve/hyQxFb06Gj/KWCZWVlKDkm4PdKap8KkWK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/xabaras/RecyclerViewSwipeDecorator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/xabaras/RecyclerViewSwipeDecorator&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cbtdve/hyQxFb06Gj/KWCZWVlKDkm4PdKap8KkWK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - xabaras/RecyclerViewSwipeDecorator: A simple utility class to add a background, an icon and a label while swiping a Rec&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A simple utility class to add a background, an icon and a label while swiping a RecyclerView item left or right. - GitHub - xabaras/RecyclerViewSwipeDecorator: A simple utility class to add a backg...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;사용자&amp;nbsp;리스트&amp;nbsp;액티비티&amp;nbsp;UserListActivity&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. ItemTouchHelper&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;RecyclerView에 &lt;span style=&quot;color: #ee2323;&quot;&gt;스와이프&lt;/span&gt; 기능 지원 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. ItemTouchHelper.LEFT&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;왼쪽&lt;/span&gt;으로 미는지 &lt;span style=&quot;color: #ee2323;&quot;&gt;체크&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. onChildDraw&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;스와이프&lt;/span&gt;하면 실행되는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. RecyclerViewSwipeDecorator&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;스와이프&lt;/span&gt; 되면 &lt;span style=&quot;color: #ee2323;&quot;&gt;꾸미는&lt;/span&gt; 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. addSwipeLeftBackgroundColor: 스와이프 왼쪽 시 &lt;span style=&quot;color: #ee2323;&quot;&gt;배경 색상&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. addSwipeLeftActionIcon: 스와이프 왼쪽 시 &lt;span style=&quot;color: #ee2323;&quot;&gt;아이콘&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;7. addSwipeLeftLabel: 스와이프 왼쪽 시 &lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;8. setSwipeLeftLabelColor: 스와이프 왼쪽 시 &lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트 색상&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1668136791898&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserListActivity : AppCompatActivity() {

    lateinit var binding: ActivityUserListBinding

    lateinit var dao: UserDao

    lateinit var adapter: UserAdapter

    lateinit var userList: ArrayList&amp;lt;User&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityUserListBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //userList 초기화
        userList = ArrayList()

        //dao 초기화
        dao = UserDao()

        //adapter 초기화
        adapter = UserAdapter(this, userList)

        //recycelrView 초기화
        binding.recyclerView.layoutManager = LinearLayoutManager(this)
        binding.recyclerView.adapter = adapter

        //사용자 정보 가져오기
        getUserList()

        //사용자 삭제 기능
        ItemTouchHelper(object: ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT){
            override fun onMove(
                recyclerView: RecyclerView,
                viewHolder: RecyclerView.ViewHolder,
                target: RecyclerView.ViewHolder
            ): Boolean {
                return false
            }

            override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {

                //해당 위치 값 변수에 담기
                val position = viewHolder.bindingAdapterPosition

                when(direction){
                    ItemTouchHelper.LEFT -&amp;gt;{
                        val key = userList[position].userKey

                        dao.userDelete(key).addOnSuccessListener { //성공 이벤트

                            Toast.makeText(this@UserListActivity, &quot;삭제 성공&quot;,
                                Toast.LENGTH_SHORT).show()
                        }.addOnFailureListener { //삭제 이벤트
                            Toast.makeText(this@UserListActivity, &quot;삭제 실패: ${it.message}&quot;,
                                Toast.LENGTH_SHORT).show()
                        }
                    }//LEFT
                }//when
            }

            override fun onChildDraw(
                c: Canvas,
                recyclerView: RecyclerView,
                viewHolder: RecyclerView.ViewHolder,
                dX: Float,
                dY: Float,
                actionState: Int,
                isCurrentlyActive: Boolean
            ) {
                //스와이프 꾸미기
                RecyclerViewSwipeDecorator.Builder(c, recyclerView, viewHolder,
                dX, dY, actionState, isCurrentlyActive)
                    .addSwipeLeftBackgroundColor(Color.RED)
                    .addSwipeLeftActionIcon(R.drawable.ic_delete)
                    .addSwipeLeftLabel(&quot;삭제&quot;)
                    .setSwipeLeftLabelColor(Color.WHITE)
                    .create()
                    .decorate()

                super.onChildDraw(
                    c,
                    recyclerView,
                    viewHolder,
                    dX,
                    dY,
                    actionState,
                    isCurrentlyActive
                )
            }
        }).attachToRecyclerView(binding.recyclerView)

    }//onCreate()

    private fun getUserList(){

        dao.getUserList()?.addValueEventListener(object: ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {

                //리스트 초기화
               userList.clear()

                for(dataSnapshot in snapshot.children){

                    val user = dataSnapshot.getValue(User::class.java)

                    //키값 가져오기
                    val key = dataSnapshot.key

                    //사용자 정보에 키 값 담기
                    user?.userKey = key.toString()

                    //리스트에 담기
                    if(user != null){
                        userList.add(user)
                    }
                }

                //데이터 적용
                adapter.notifyDataSetChanged()
            }

            override fun onCancelled(error: DatabaseError) {}
        })
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668137583482&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Ge51r/hyQxMPLuBZ/3h2AXYR7NB9G5B3Pv5oQO0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KrEJl/hyQwGDCIMV/wa3APWF26QgTCNFm1R6Vgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Ge51r/hyQxMPLuBZ/3h2AXYR7NB9G5B3Pv5oQO0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KrEJl/hyQwGDCIMV/wa3APWF26QgTCNFm1R6Vgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668137591658&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IkQFz/hyQwMRob09/2hjP7M0ABsKqEov63kKPw1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ko3wa/hyQwDtkmZw/5cJ4bi22lugK6IHVTze2LK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IkQFz/hyQwMRob09/2hjP7M0ABsKqEov63kKPw1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ko3wa/hyQwDtkmZw/5cJ4bi22lugK6IHVTze2LK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668137598559&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/U5SuG/hyQxLwytGQ/vgLbZXARecdjd24mWZWRxK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/E3gKQ/hyQxA9Db78/h3lBg30ytlMticlLKezzeK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/n1vtq/hyQwK66MrS/MdQ6KDohfmhbtbFznRTvs1/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/U5SuG/hyQxLwytGQ/vgLbZXARecdjd24mWZWRxK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/E3gKQ/hyQxA9Db78/h3lBg30ytlMticlLKezzeK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/n1vtq/hyQwK66MrS/MdQ6KDohfmhbtbFznRTvs1/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=FTPMkBtzlIc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dmlmYQ/hyQxCfi7j8/1378hc9g5O0oQvzMkLKgw1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/FTPMkBtzlIc&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <category>RealtimeDatabase</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/469</guid>
      <comments>https://aries574.tistory.com/469#entry469comment</comments>
      <pubDate>Fri, 11 Nov 2022 12:35:49 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part4 - 사용자 수정</title>
      <link>https://aries574.tistory.com/468</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-firebaseCrud-part4-user-update-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oWFEU/btrQOA4NgnO/lWmixHcenszkS89ZpJXTK1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oWFEU/btrQOA4NgnO/lWmixHcenszkS89ZpJXTK1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oWFEU/btrQOA4NgnO/lWmixHcenszkS89ZpJXTK1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoWFEU%2FbtrQOA4NgnO%2FlWmixHcenszkS89ZpJXTK1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-firebaseCrud-part4-user-update-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 네 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실시간 데이터베이스(Realtime Database)에 저장된 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 정보&lt;/span&gt;를 &lt;span style=&quot;color: #ee2323;&quot;&gt;수정&lt;/span&gt;하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/467&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.09 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668136379730&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 세 번째 시간 실시간 데이터베이스(Realtime Database)에 저장된 사용자 목록을 가져오는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/467&quot; data-og-url=&quot;https://aries574.tistory.com/467&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CSZFz/hyQxKK9RRP/mcwNnFLPhuNnYRoK7LjWzk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bfpxGD/hyQwJtzLBF/1IZKBQ65bHjQDiBkbHDyUK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/467&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/467&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CSZFz/hyQxKK9RRP/mcwNnFLPhuNnYRoK7LjWzk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bfpxGD/hyQwJtzLBF/1IZKBQ65bHjQDiBkbHDyUK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 세 번째 시간 실시간 데이터베이스(Realtime Database)에 저장된 사용자 목록을 가져오는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt &lt;br /&gt;3.&amp;nbsp;사용자정보&amp;nbsp;수정&amp;nbsp;액티비티 &lt;br /&gt;4.&amp;nbsp;사용자&amp;nbsp;리스트&amp;nbsp;어댑터&amp;nbsp;ListAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433394148&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bfqbkY/hyQwJTCEZG/4k2jL7ezO2cjASN6bJKT21/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bcNPR1/hyQwLRrU9x/qak0Md5N1C8eeXZFDLPi1k/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433394148?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. userUpdate(key:&amp;nbsp;String,&amp;nbsp;hasMap:&amp;nbsp;HashMap&amp;lt;String,&amp;nbsp;Any&amp;gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터베이스에&lt;span style=&quot;color: #ee2323;&quot;&gt; key&lt;span style=&quot;color: #000000;&quot;&gt;(구분 값)&lt;/span&gt;&lt;/span&gt;와 수정된 &lt;span style=&quot;color: #ee2323;&quot;&gt;hasMap&lt;/span&gt;(&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;사용자 정보)&lt;/span&gt;&lt;/span&gt;를 전달해서 데이터 변경&lt;/p&gt;
&lt;pre id=&quot;code_1668044949072&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserDao {
    private var databaseReference: DatabaseReference? = null

    init{
        val db = FirebaseDatabase.getInstance()
        databaseReference = db.getReference(&quot;user&quot;)
    }

    //등록
    fun add(user: User?): Task&amp;lt;Void&amp;gt;{
        return databaseReference!!.push().setValue(user)
    }

    //조회
    fun getUserList(): Query?{
        return databaseReference
    }

    //수정
    fun userUpdate(key: String, hashMap: HashMap&amp;lt;String, Any&amp;gt;): Task&amp;lt;Void&amp;gt;{

        return databaseReference!!.child(key)!!.updateChildren(hashMap)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;사용자정보&amp;nbsp;수정&amp;nbsp;액티비티&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;app 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Activity -&amp;gt; Empty Activity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Activity name: UserUpdateActivity&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;activity_user_update.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 수정할 사용자 이름 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 수정할 사용자 나이 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 사용자정보 수정 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1668045041769&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.UserUpdateActivity&quot;&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/up_name_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;이름&quot;
        android:inputType=&quot;text&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/up_age_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;나이&quot;
        android:inputType=&quot;number&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/update_btn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:text=&quot;수정&quot;
        android:textSize=&quot;25sp&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;UserUpdateActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. intent.hasExtra(&quot;key&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;해당 정보에 데이터 &lt;span style=&quot;color: #ee2323;&quot;&gt;null 체크&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. intent.getStringExtra(&quot;key&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;해당 정보 &lt;span style=&quot;color: #ee2323;&quot;&gt;꺼내오기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. addOnSuccessListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;성공&lt;/span&gt; 이벤트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. addOnFailureListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;실패&lt;/span&gt; 이벤트&lt;/p&gt;
&lt;pre id=&quot;code_1668045099228&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserUpdateActivity : AppCompatActivity() {

    private lateinit var binding: ActivityUserUpdateBinding

    lateinit var sKey: String
    lateinit var sName: String
    lateinit var sAge: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityUserUpdateBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //데이터베이스 객체
        val dao = UserDao()

        //데이터 null체크
        if(intent.hasExtra(&quot;key&quot;) &amp;amp;&amp;amp; intent.hasExtra(&quot;name&quot;)
            &amp;amp;&amp;amp; intent.hasExtra(&quot;age&quot;)){

            //데이터 담기
            sKey = intent.getStringExtra(&quot;key&quot;)!!
            sName = intent.getStringExtra(&quot;name&quot;)!!
            sAge = intent.getStringExtra(&quot;age&quot;)!!

            //데이터 보여주기
            binding.upNameEdit.setText(sName)
            binding.upAgeEdit.setText(sAge)

            //사용자정보 수정버튼 이벤트
            binding.updateBtn.setOnClickListener {

                //입력값
                val uName = binding.upNameEdit.text.toString()
                val uAge = binding.upAgeEdit.text.toString()

                //파라미터 셋팅
                val hasMap: HashMap&amp;lt;String, Any&amp;gt; =  HashMap()
                hasMap[&quot;userName&quot;] = uName
                hasMap[&quot;userAge&quot;] = uAge

                //사용자 업데이트 이벤트
                dao.userUpdate(sKey, hasMap).addOnSuccessListener {

                    Toast.makeText(applicationContext, &quot;수정 성공&quot;,
                        Toast.LENGTH_SHORT).show()

                    //사용자 목록으로 이동
                    val intent = Intent(this@UserUpdateActivity,
                        UserListActivity::class.java)
                    startActivity(intent)
                    finish()

                }.addOnFailureListener {
                    Toast.makeText(applicationContext, &quot;수정 실패: ${it.message}&quot;,
                        Toast.LENGTH_SHORT).show()
                }
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;사용자&amp;nbsp;리스트&amp;nbsp;어댑터&amp;nbsp;ListAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. intent.putExtra(&quot;key&quot;,&amp;nbsp;user.userKey)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;전달할 &lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 담기&lt;/span&gt;(구분 값, 데이터)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. context.startActivity(intent)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;해당 액티비티 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. (context&amp;nbsp;as&amp;nbsp;Activity).finish()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;현재 액티비티 &lt;span style=&quot;color: #ee2323;&quot;&gt;종료&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1668045110912&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserAdapter(private val context: Context, private val userList:ArrayList&amp;lt;User&amp;gt;):
    RecyclerView.Adapter&amp;lt;UserAdapter.UserViewHolder&amp;gt;(){

    //화면 설정
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {

        val view = LayoutInflater.from(context)
            .inflate(R.layout.user_layout, parent, false)

        return UserViewHolder(view)
    }

    //데이터 설정
    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {

        val user: User = userList[position]

        holder.nameText.text = user.userName
        holder.ageText.text = user.userAge

        holder.itemView.setOnClickListener {

            //사용자 수정화면으로 이동
            val intent = Intent(context, UserUpdateActivity::class.java)
            intent.putExtra(&quot;key&quot;, user.userKey)
            intent.putExtra(&quot;name&quot;, user.userName)
            intent.putExtra(&quot;age&quot;, user.userAge)
            context.startActivity(intent)
            (context as Activity).finish()
        }
    }

    //값 갯수 리턴
    override fun getItemCount(): Int {

        return userList.size
    }

    class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

        val nameText: TextView = itemView.findViewById(R.id.name_text)
        val ageText: TextView = itemView.findViewById(R.id.age_text)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668045688798&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dMGkk6/hyQwH2AVKK/KTQ1klfEbFsIH5kqFKQS3k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/6dEOX/hyQwGo5EYp/OuLXXSZcSmAwcGOktUpVnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dMGkk6/hyQwH2AVKK/KTQ1klfEbFsIH5kqFKQS3k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/6dEOX/hyQwGo5EYp/OuLXXSZcSmAwcGOktUpVnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668045695017&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xAzFD/hyQwC73XGb/bfGOA3BJL1kc6I3Xh4Ktr0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/vijY3/hyQwxlnhQs/CLASMy09bPPrcmriyYcy7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xAzFD/hyQwC73XGb/bfGOA3BJL1kc6I3Xh4Ktr0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/vijY3/hyQwxlnhQs/CLASMy09bPPrcmriyYcy7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1. 실행 화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/432&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.14 - [안드로이드] - [안드로이드 코틀린] SQLite ToDo List 만드는 방법 part1 - Data 클래스와 DB 클래스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668045705245&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] SQLite ToDo List  만드는 방법 part1 - Data 클래스와 DB 클래스&quot; data-og-description=&quot;이번 시간에는 ToDo List 만들기 첫 번째 시간 Data 클래스와 DB 클래스를 만들어 보겠습니다. 목차 1. 라이브러리 등록 2. ToDo 클래스 ToDoModel.kt 3. ToDo DB 클래스 ToDoDB.kt 1. 라이브러리 등록 build.gradle(Mod&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/432&quot; data-og-url=&quot;https://aries574.tistory.com/432&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/WARaJ/hyQwCNKHUP/gDIRCr5Z4gfDCc9YzdDvdK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/OGUC7/hyQwG3GUG9/ndzKgtJNkOSCsXWRI2y46K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/432&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/432&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/WARaJ/hyQwCNKHUP/gDIRCr5Z4gfDCc9YzdDvdK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/OGUC7/hyQwG3GUG9/ndzKgtJNkOSCsXWRI2y46K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] SQLite ToDo List 만드는 방법 part1 - Data 클래스와 DB 클래스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 ToDo List 만들기 첫 번째 시간 Data 클래스와 DB 클래스를 만들어 보겠습니다. 목차 1. 라이브러리 등록 2. ToDo 클래스 ToDoModel.kt 3. ToDo DB 클래스 ToDoDB.kt 1. 라이브러리 등록 build.gradle(Mod&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Cqpta8NzWTA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dcLnQV/hyQwDTqt5N/nHuq1MlCiMUoVKQWRXshLK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Cqpta8NzWTA&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <category>RealtimeDatabase</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/468</guid>
      <comments>https://aries574.tistory.com/468#entry468comment</comments>
      <pubDate>Thu, 10 Nov 2022 11:03:48 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part3 - 사용자 리스트</title>
      <link>https://aries574.tistory.com/467</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-firebaseCrud-part3-user-list-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGMQYY/btrQISymfks/FFl7UJ28NDIJJRHAGTIkg1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGMQYY/btrQISymfks/FFl7UJ28NDIJJRHAGTIkg1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGMQYY/btrQISymfks/FFl7UJ28NDIJJRHAGTIkg1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGMQYY%2FbtrQISymfks%2FFFl7UJ28NDIJJRHAGTIkg1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-firebaseCrud-part3-user-list-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 세 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실시간 데이터베이스(Realtime Database)에 저장된 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 목록&lt;/span&gt;을 가져오는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt &lt;br /&gt;3. 사용자 리스트 화면 user_layout.xml &lt;br /&gt;4. 사용자 리스트 어댑터 ListAdapter.kt &lt;br /&gt;5. 사용자 리스트 액티비티 &lt;br /&gt;6.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml &lt;br /&gt;7.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt &lt;br /&gt;8.&amp;nbsp;뒤로&amp;nbsp;가기 AndroidManifest.xml &lt;br /&gt;9.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433368393&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bV8xCt/hyQvpBMNOx/W74LSnyFdk23Jkvon7TdHk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/jfbEy/hyQvqAGyCi/1PG2KLzbSB2NlaqKxOLT70/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433368393?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. getList()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터베이스에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 목록&lt;/span&gt; 가져오기&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667960355790&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserDao {
    private var databaseReference: DatabaseReference? = null

    init{
        val db = FirebaseDatabase.getInstance()
        databaseReference = db.getReference(&quot;user&quot;)
    }

    //등록
    fun add(user: User?): Task&amp;lt;Void&amp;gt;{
        return databaseReference!!.push().setValue(user)
    }

    //조회
    fun getUserList(): Query?{
        return databaseReference
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 사용자 리스트 화면 user_layout.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 이름 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 사용자 나이 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667960375510&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;androidx.cardview.widget.CardView xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:layout_margin=&quot;10dp&quot;
    android:background=&quot;#EFEBE9&quot;
    app:cardCornerRadius=&quot;5dp&quot;
    app:cardElevation=&quot;10dp&quot;&amp;gt;

    &amp;lt;LinearLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;50dp&quot;
        android:gravity=&quot;center_vertical&quot;
        android:orientation=&quot;horizontal&quot;&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/name_text&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginStart=&quot;10dp&quot;
            android:textSize=&quot;25sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/age_text&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginStart=&quot;10dp&quot;
            android:textSize=&quot;25sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;

&amp;lt;/androidx.cardview.widget.CardView&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 사용자 리스트 어댑터 UserAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. onCreateViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;화면 연결&lt;/span&gt;해주는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. onBindViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 연결&lt;/span&gt;해주는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. getItemCount&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;사용자 목록 &lt;span style=&quot;color: #ee2323;&quot;&gt;사이즈 리턴&lt;/span&gt;해주는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. UserViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;화면 &lt;span style=&quot;color: #ee2323;&quot;&gt;뷰 객체&lt;/span&gt; 만들어 주는 클래스&lt;/p&gt;
&lt;pre id=&quot;code_1667960480166&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserAdapter(private val context: Context, private val userList:ArrayList&amp;lt;User&amp;gt;):
    RecyclerView.Adapter&amp;lt;UserAdapter.UserViewHolder&amp;gt;(){

    //화면 설정
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {

        val view = LayoutInflater.from(context)
            .inflate(R.layout.user_layout, parent, false)

        return UserViewHolder(view)
    }

    //데이터 설정
    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {

        val user: User = userList[position]

        holder.nameText.text = user.userName
        holder.ageText.text = user.userAge
    }

    //값 갯수 리턴
    override fun getItemCount(): Int {

        return userList.size
    }

    class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

        val nameText: TextView = itemView.findViewById(R.id.name_text)
        val ageText: TextView = itemView.findViewById(R.id.age_text)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5. 사용자 리스트 액티비티&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;app 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Activity -&amp;gt; Empty Activity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Activity name: UserListActivity&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;activity_user_list.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 목록 보여줄 &lt;span style=&quot;color: #ee2323;&quot;&gt;RecycelrView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667960591231&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.UserListActivity&quot;&amp;gt;

    &amp;lt;androidx.recyclerview.widget.RecyclerView
        android:id=&quot;@+id/recyclerView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;/&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;UserListActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. addValueEventListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터베이스에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 가져올 때&lt;/span&gt; 쓰는 이벤트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. dataSnapshot.getValue(User::class.java)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터 &lt;span style=&quot;color: #ee2323;&quot;&gt;꺼내오기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. onDataChange&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 변경&lt;/span&gt; 시 실행되는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. onCancelled&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터 &lt;span style=&quot;color: #ee2323;&quot;&gt;읽기 실패&lt;/span&gt;하면 실행되는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. dataSnapshot.key&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터의 키값&lt;/span&gt;을 꺼내오기&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667960611581&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserListActivity : AppCompatActivity() {

    lateinit var binding: ActivityUserListBinding

    lateinit var dao: UserDao

    lateinit var adapter: UserAdapter

    lateinit var userList: ArrayList&amp;lt;User&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityUserListBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //userList 초기화
        userList = ArrayList()

        //dao 초기화
        dao = UserDao()

        //adapter 초기화
        adapter = UserAdapter(this, userList)

        //recycelrView 초기화
        binding.recyclerView.layoutManager = LinearLayoutManager(this)
        binding.recyclerView.adapter = adapter

        //사용자 정보 가져오기
        getUserList()
    }//onCreate()

    private fun getUserList(){

        dao.getUserList()?.addValueEventListener(object: ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {

                for(dataSnapshot in snapshot.children){

                    val user = dataSnapshot.getValue(User::class.java)

                    //키값 가져오기
                    val key = dataSnapshot.key

                    //사용자 정보에 키 값 담기
                    user?.userKey = key.toString()

                    //리스트에 담기
                    if(user != null){
                        userList.add(user)
                    }
                }

                //데이터 적용
                adapter.notifyDataSetChanged()
            }

            override fun onCancelled(error: DatabaseError) {}
        })
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 목록 으로 이동하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667960627000&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/name_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;이름&quot;
        android:inputType=&quot;text&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/age_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;나이&quot;
        android:inputType=&quot;number&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/add_btn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:text=&quot;등록&quot;
        android:textSize=&quot;25sp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/list_btn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:text=&quot;사용자 목록&quot;
        android:textSize=&quot;25sp&quot; /&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;7.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&amp;nbsp; binding.listBtn.setOnClickListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;사용자 목록 &lt;span style=&quot;color: #ee2323;&quot;&gt;버튼 이벤트&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. Intent(this@MainActivity,&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;UserListActivity&lt;/span&gt;::class.java)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;할 액티비티 &lt;span style=&quot;color: #ee2323;&quot;&gt;설정&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. startActivity(intent)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;액티비티 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667960661701&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //데이터베이스 클래스 객체 생성
        val dao = UserDao()

        //사용자 등록 버튼 이벤트
        binding.addBtn.setOnClickListener {

            val name = binding.nameEdit.text.toString() //이름
            val age = binding.ageEdit.text.toString() //나이

            //데이터 셋팅
            val user = User(&quot;&quot;, name, age)

            dao.add(user)?.addOnSuccessListener {
                Toast.makeText(this, &quot;등록 성공&quot;, Toast.LENGTH_SHORT).show()

            }?.addOnFailureListener {
                Toast.makeText(this, &quot;등록 실패: ${it.message}&quot;, Toast.LENGTH_SHORT).show()
            }
        }

        //사용자 목록 버튼 이벤트
        binding.listBtn.setOnClickListener {

            val intent: Intent = Intent(this@MainActivity, UserListActivity::class.java)
            startActivity(intent)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;8.&amp;nbsp;뒤로&amp;nbsp;가기 AndroidManifest.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. parentActivityName&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;뒤로 가기로 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동할 액티비티&lt;/span&gt; 설정&lt;/p&gt;
&lt;pre id=&quot;code_1667961085894&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;activity
	android:name=&quot;.UserListActivity&quot;
    android:exported=&quot;false&quot;
    android:parentActivityName=&quot;.MainActivity&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667961099392&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cXZ8YN/hyQwLJ0bab/MwzJ0spHoziY0xsLORQ2T1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5ZCbd/hyQvmZmdip/QsTqpQFGBWEWxlkvKJgaY1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cXZ8YN/hyQwLJ0bab/MwzJ0spHoziY0xsLORQ2T1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5ZCbd/hyQvmZmdip/QsTqpQFGBWEWxlkvKJgaY1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667961108310&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/zPD5I/hyQvjuOI4M/iegAZmOrVgaK5nkAgBwLwk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/td5Sq/hyQwxSwgo8/golLqKZwa3rAM8ByPLtkzk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/zPD5I/hyQvjuOI4M/iegAZmOrVgaK5nkAgBwLwk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/td5Sq/hyQwxSwgo8/golLqKZwa3rAM8ByPLtkzk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667961113916&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/O29yx/hyQwGIHgpP/y7URIDbKH8NLLqgd46Wli0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/R7qom/hyQwBtQFKB/Dlph3sAsurmXPEZBI99kg1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/kcNk9/hyQwFC1ror/dGSqN8NRjvoStx3hz4sjG1/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/O29yx/hyQwGIHgpP/y7URIDbKH8NLLqgd46Wli0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/R7qom/hyQwBtQFKB/Dlph3sAsurmXPEZBI99kg1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/kcNk9/hyQwFC1ror/dGSqN8NRjvoStx3hz4sjG1/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=tam7tRCjc8c&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dGEhNk/hyQwJSXigr/2gbrs4bnWL8S6XIWSFQo6k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/tam7tRCjc8c&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <category>RealtimeDatabase</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/467</guid>
      <comments>https://aries574.tistory.com/467#entry467comment</comments>
      <pubDate>Wed, 9 Nov 2022 11:51:51 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part2 - 사용자 등록</title>
      <link>https://aries574.tistory.com/466</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-firebaseCrud-part2-user-create-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbPXy0/btrQE36fxYG/r6e5oAHLB2hAzAdDYkxwdK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbPXy0/btrQE36fxYG/r6e5oAHLB2hAzAdDYkxwdK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbPXy0/btrQE36fxYG/r6e5oAHLB2hAzAdDYkxwdK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbPXy0%2FbtrQE36fxYG%2Fr6e5oAHLB2hAzAdDYkxwdK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-firebaseCrud-part2-user-create-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 두 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실시간 데이터베이스(Realtime Database)에 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 등록&lt;/span&gt;하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.11.07 - [안드로이드] - [안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667870814670&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&quot; data-og-description=&quot;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/465&quot; data-og-url=&quot;https://aries574.tistory.com/465&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/k3VBg/hyQvptYc24/FZSvjIyE4j05TKIXNPk5NK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/JXpP6/hyQvgqgm4o/H09qwyycW5UVJelhzKUKQk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bzGKqE/hyQvdtwSIq/R8UUdVrL9dvv94urAbwr51/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/465&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/465&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/k3VBg/hyQvptYc24/FZSvjIyE4j05TKIXNPk5NK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/JXpP6/hyQvgqgm4o/H09qwyycW5UVJelhzKUKQk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bzGKqE/hyQvdtwSIq/R8UUdVrL9dvv94urAbwr51/img.jpg?width=951&amp;amp;height=756&amp;amp;face=0_0_951_756');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 첫 번째 시간 안드로이드 스튜디오 프로젝트 생성, 파이어베이스 프로젝트 생성, 실시간 데이터베이스 생성 하는 방법에 대하여 알아보겠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩 &lt;br /&gt;3.&amp;nbsp;사용자&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;User.kt &lt;br /&gt;4.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt &lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml &lt;br /&gt;6.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433341721&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cgK3j7/hyQvksENh1/DTRBOgq3UzgrFB8f4TkpsK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/jtguk/hyQvfkAkGo/GDEHXjRZv07BOcZKMUZuy0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433341721?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664864494006&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;사용자&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;User.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 정보 담을 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. userKey: 사용자 &lt;span style=&quot;color: #ee2323;&quot;&gt;구분값&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. userName: 사용자 &lt;span style=&quot;color: #ee2323;&quot;&gt;이름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. userAge: 사용자 &lt;span style=&quot;color: #ee2323;&quot;&gt;나이&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667870987605&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class User(
    var userKey: String, //키
    var userName: String, //이름
    var userAge: String //나이
){
    constructor(): this(&quot;&quot;, &quot;&quot;, &quot;&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;데이터베이스&amp;nbsp;클래스&amp;nbsp;UserDao.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 실시간 데이터베이스와 연결할 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. init&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- UserDao 객체 생성 시 호출되는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. add(user:&amp;nbsp;User?):&amp;nbsp;Task&amp;lt;Void&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 사용자 정보 전달 받아 데이터베이스에 저장&lt;/p&gt;
&lt;pre id=&quot;code_1667871058854&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserDao {
    private var databaseReference: DatabaseReference? = null

    init{
        val db = FirebaseDatabase.getInstance()
        databaseReference = db.getReference(&quot;user&quot;)
    }

    //등록
    fun add(user: User?): Task&amp;lt;Void&amp;gt;{
        return databaseReference!!.push().setValue(user)
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;구성&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 이름 입력받을 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 사용자 나이 입력받을 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditTexxt&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 사용자 정보 등록하는 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1667871074325&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/name_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;이름&quot;
        android:inputType=&quot;text&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/age_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:hint=&quot;나이&quot;
        android:inputType=&quot;number&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/add_btn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;20dp&quot;
        android:text=&quot;등록&quot;
        android:textSize=&quot;25sp&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;6.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;구현&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. val&amp;nbsp;dao&amp;nbsp;=&amp;nbsp;UserDao()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터베이스 클래스 &lt;span style=&quot;color: #ee2323;&quot;&gt;객체&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. val&amp;nbsp;name&amp;nbsp;=&amp;nbsp;binding.nameEdit.text.toString()//이름&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;입력 받은&lt;/span&gt; 값 변수에 담기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. addOnSuccessListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;등록 &lt;span style=&quot;color: #ee2323;&quot;&gt;성공&lt;/span&gt;시에 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. addOnFailureListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;등록 &lt;span style=&quot;color: #ee2323;&quot;&gt;실패&lt;/span&gt;시에 실행&lt;/p&gt;
&lt;pre id=&quot;code_1667871092317&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //데이터베이스 클래스 객체 생성
        val dao = UserDao()

        binding.addBtn.setOnClickListener {

            val name = binding.nameEdit.text.toString() //이름
            val age = binding.ageEdit.text.toString() //나이

            //데이터 셋팅
            val user = User(&quot;&quot;, name, age)

            dao.add(user)?.addOnSuccessListener {
                Toast.makeText(this, &quot;등록 성공&quot;, Toast.LENGTH_SHORT).show()

            }?.addOnFailureListener {
                Toast.makeText(this, &quot;등록 실패: ${it.message}&quot;, Toast.LENGTH_SHORT).show()
            }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667871606537&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bEcD4M/hyQvkTIvGq/QmU9G31AkqWrrfZGWBucKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/tGJW3/hyQviaxya0/1JtrUoNSlpkuxbRLCCnUj1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bEcD4M/hyQvkTIvGq/QmU9G31AkqWrrfZGWBucKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/tGJW3/hyQviaxya0/1JtrUoNSlpkuxbRLCCnUj1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667871611253&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ljiFl/hyQvsxtavf/nKFCm0bbpbUTakNkQ4Xnn1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cQZ9O5/hyQve63Kr6/6BEhJxLCNSpg9r218DTA51/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5CsHu/hyQvk0uhKk/3kVT2cwi5G75S5PwppzfRK/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ljiFl/hyQvsxtavf/nKFCm0bbpbUTakNkQ4Xnn1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cQZ9O5/hyQve63Kr6/6BEhJxLCNSpg9r218DTA51/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5CsHu/hyQvk0uhKk/3kVT2cwi5G75S5PwppzfRK/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667871618004&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dSEOG3/hyQvnpnC6f/XbrmaxuSmcvy4aAlD7POo0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/jkQPW/hyQvo9FwBI/MKUQy7l5uTLG0nogmcH1U1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dSEOG3/hyQvnpnC6f/XbrmaxuSmcvy4aAlD7POo0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/jkQPW/hyQvo9FwBI/MKUQy7l5uTLG0nogmcH1U1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1. 실행 화면 2. 메인 화면 activity_main.xml 3.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=j48DD4o_DB4&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/398vo/hyQvtwntxi/lRVq6EQ6uxw13HKQadKSw0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/j48DD4o_DB4&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <category>RealtimeDatabase</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/466</guid>
      <comments>https://aries574.tistory.com/466#entry466comment</comments>
      <pubDate>Tue, 8 Nov 2022 10:42:04 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 파이어베이스 사용자 CRUD 만드는 방법 part1 - 프로젝트 생성</title>
      <link>https://aries574.tistory.com/465</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-firebaseCrud-part1-setting-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9h6fJ/btrQBLD3P3J/Sz1kqKJqPkQn2fHKMqrsI0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9h6fJ/btrQBLD3P3J/Sz1kqKJqPkQn2fHKMqrsI0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9h6fJ/btrQBLD3P3J/Sz1kqKJqPkQn2fHKMqrsI0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9h6fJ%2FbtrQBLD3P3J%2FSz1kqKJqPkQn2fHKMqrsI0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-firebaseCrud-part1-setting-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 파이어베이스(Firebase) CRUD 만드는 방법 - 첫 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;안드로이드 스튜디오&lt;/span&gt; 프로젝트 생성, &lt;span style=&quot;color: #ee2323;&quot;&gt;파이어베이스&lt;/span&gt; 프로젝트 생성, &lt;span style=&quot;color: #ee2323;&quot;&gt;실시간 데이터베이스&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하는 방법에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;안드로이드&amp;nbsp;프로젝트&amp;nbsp;만들기 &lt;br /&gt;2.&amp;nbsp;파이어베이스&amp;nbsp;프로젝트&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 앱 연결&lt;br /&gt;4. 실시간 데이터베이스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;안드로이드&amp;nbsp;프로젝트&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Empty Activity -&amp;gt; Next&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;new project.JPG&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBf5uR/btrQvZ4jRPC/96AJxRdpIW6LdEVdSx89Kk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBf5uR/btrQvZ4jRPC/96AJxRdpIW6LdEVdSx89Kk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBf5uR/btrQvZ4jRPC/96AJxRdpIW6LdEVdSx89Kk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBf5uR%2FbtrQvZ4jRPC%2F96AJxRdpIW6LdEVdSx89Kk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;950&quot; height=&quot;756&quot; data-filename=&quot;new project.JPG&quot; data-origin-width=&quot;950&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;name: &lt;span style=&quot;color: #ee2323;&quot;&gt;FirebaseCrud&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Language: &lt;span style=&quot;color: #ee2323;&quot;&gt;Kotlin&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;new project2.JPG&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oVuFy/btrQvYxykfa/AxQiGQxBJGpOOA0dNExFYk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oVuFy/btrQvYxykfa/AxQiGQxBJGpOOA0dNExFYk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oVuFy/btrQvYxykfa/AxQiGQxBJGpOOA0dNExFYk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoVuFy%2FbtrQvYxykfa%2FAxQiGQxBJGpOOA0dNExFYk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;951&quot; height=&quot;756&quot; data-filename=&quot;new project2.JPG&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;파이어베이스&amp;nbsp;프로젝트&amp;nbsp;만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 구글 아이디 필요함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- &lt;a href=&quot;https://firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://firebase.google.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667779916059&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Firebase&quot; data-og-description=&quot;Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다.&quot; data-og-host=&quot;firebase.google.com&quot; data-og-source-url=&quot;https://firebase.google.com/&quot; data-og-url=&quot;https://firebase.google.com/?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Frl7T/hyQtyyA2TN/pso0tUKp140gDL7lbd36d1/img.png?width=1600&amp;amp;height=800&amp;amp;face=0_0_1600_800,https://scrap.kakaocdn.net/dn/4OdKk/hyQvtCpU3m/NjvxdZ8ErmxkwTUhy1nBOk/img.png?width=1600&amp;amp;height=800&amp;amp;face=0_0_1600_800,https://scrap.kakaocdn.net/dn/ejQvEa/hyQtnDQpts/O5RtSszxQUAUpkWLCDRiok/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://firebase.google.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Frl7T/hyQtyyA2TN/pso0tUKp140gDL7lbd36d1/img.png?width=1600&amp;amp;height=800&amp;amp;face=0_0_1600_800,https://scrap.kakaocdn.net/dn/4OdKk/hyQvtCpU3m/NjvxdZ8ErmxkwTUhy1nBOk/img.png?width=1600&amp;amp;height=800&amp;amp;face=0_0_1600_800,https://scrap.kakaocdn.net/dn/ejQvEa/hyQtnDQpts/O5RtSszxQUAUpkWLCDRiok/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Firebase&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Firebase는 고품질 앱을 빠르게 개발하고 비즈니스를 성장시키는 데 도움이 되는 Google의 모바일 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;firebase.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.시작하기 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 영문으로 프로젝트 이름 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project2.JPG&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kP6jW/btrQAv2tYKQ/4UbkChCUkQHSIiojtk0fS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kP6jW/btrQAv2tYKQ/4UbkChCUkQHSIiojtk0fS0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kP6jW/btrQAv2tYKQ/4UbkChCUkQHSIiojtk0fS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkP6jW%2FbtrQAv2tYKQ%2F4UbkChCUkQHSIiojtk0fS0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;780&quot; height=&quot;613&quot; data-filename=&quot;firebsae project2.JPG&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3.&amp;nbsp; 프로젝트 이름: FirebaseCrud&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. Google 애널리틱스 계속 버튼 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project3.JPG&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VNomI/btrQuJndRms/arFHJNwZnMF9Uo7U6JnKQ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VNomI/btrQuJndRms/arFHJNwZnMF9Uo7U6JnKQ0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VNomI/btrQuJndRms/arFHJNwZnMF9Uo7U6JnKQ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVNomI%2FbtrQuJndRms%2FarFHJNwZnMF9Uo7U6JnKQ0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;836&quot; height=&quot;795&quot; data-filename=&quot;firebsae project3.JPG&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 애널리틱스 구성&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 계정을 선택 하거나 새 속성 만들기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project4.JPG&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZGURr/btrQr13b0qZ/olhBx6nTUK8N800EJ7nIZK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZGURr/btrQr13b0qZ/olhBx6nTUK8N800EJ7nIZK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZGURr/btrQr13b0qZ/olhBx6nTUK8N800EJ7nIZK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZGURr%2FbtrQr13b0qZ%2FolhBx6nTUK8N800EJ7nIZK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;871&quot; height=&quot;715&quot; data-filename=&quot;firebsae project4.JPG&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. 프로젝트 만들기&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3. 앱 연결&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp; 파이어베이스 프로젝트가 만들어지면 앱에 파이어 베이스 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 안드로이드 아이콘 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. 앱 등록:&amp;nbsp; 안드로이드 스튜디오에서 만든 패키지명 복사 -&amp;gt; 붙여 넣기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKaSYa/btrQsD8UKCZ/4ImPTQh3PBfc8QP4Z4RKg1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKaSYa/btrQsD8UKCZ/4ImPTQh3PBfc8QP4Z4RKg1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKaSYa/btrQsD8UKCZ/4ImPTQh3PBfc8QP4Z4RKg1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKaSYa%2FbtrQsD8UKCZ%2F4ImPTQh3PBfc8QP4Z4RKg1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;788&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 2. 구성 파일 다운로드: &lt;span style=&quot;color: #ee2323;&quot;&gt;google-services.json &lt;span style=&quot;color: #000000;&quot;&gt;다운로드&lt;/span&gt;&lt;/span&gt; 해서 app 폴더 안에 넣기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 안드로이드 스튜디오 &lt;span style=&quot;color: #ee2323;&quot;&gt;프로젝트 보기로 변경&lt;/span&gt; 후 app 선택 한 후에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;복사 한 google-services.json 파일 붙여 넣기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LNPi1/btrQz6Pgtc8/IofghvLXnnICv8YHVFMQAk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LNPi1/btrQz6Pgtc8/IofghvLXnnICv8YHVFMQAk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LNPi1/btrQz6Pgtc8/IofghvLXnnICv8YHVFMQAk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLNPi1%2FbtrQz6Pgtc8%2FIofghvLXnnICv8YHVFMQAk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;813&quot; height=&quot;780&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. Firebase SDK 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- build.gradle(Project: FirebaseCrud) 에 플러그인 추가&lt;/p&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;id 'com.google.gms.google-services' version '4.3.13' apply false&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- build.gradle(Moudle: FirebaseCrud.app) 에 플러그인, 라이브러리 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- plugins 괄호 안에 추가&lt;/p&gt;
&lt;pre class=&quot;gml&quot;&gt;&lt;code&gt;id 'com.google.gms.google-services'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- dependencies 괄호 안에 추가&lt;/p&gt;
&lt;pre class=&quot;delphi&quot;&gt;&lt;code&gt;implementation platform('com.google.firebase:firebase-bom:31.0.2')
implementation 'com.google.firebase:firebase-analytics-ktx'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 콘솔로 이동&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 실시간 데이터베이스 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 파이어베이스 프로젝트 화면 -&amp;gt; 빌드 -&amp;gt; Realtime Database&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;realtime.JPG&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brlqGA/btrQz7giXun/fbvd6ktRFo0KvSNpnjuWv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brlqGA/btrQz7giXun/fbvd6ktRFo0KvSNpnjuWv1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brlqGA/btrQz7giXun/fbvd6ktRFo0KvSNpnjuWv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrlqGA%2FbtrQz7giXun%2Ffbvd6ktRFo0KvSNpnjuWv1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;937&quot; height=&quot;635&quot; data-filename=&quot;realtime.JPG&quot; data-origin-width=&quot;937&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 데이터베이스 만들기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 위치 설정 -&amp;gt; 다음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 데이터 규칙 -&amp;gt; 테스트 모드에서 시작 -&amp;gt; 사용 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 완료&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;realtime dd.JPG&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhAMvb/btrQr6chY9v/NNI3WKlyi6L2xUFdEFJtk0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhAMvb/btrQr6chY9v/NNI3WKlyi6L2xUFdEFJtk0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhAMvb/btrQr6chY9v/NNI3WKlyi6L2xUFdEFJtk0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhAMvb%2FbtrQr6chY9v%2FNNI3WKlyi6L2xUFdEFJtk0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;880&quot; height=&quot;576&quot; data-filename=&quot;realtime dd.JPG&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 안드로이드 스튜디오 -&amp;gt; Tools -&amp;gt; Firebase&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp; 맨 위에서 3번 째 Realtime Database 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;-&amp;nbsp; Get started with Realtime Database [KOTLIN] 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Connect to Firebase&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;파이어베이스 연결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- Add the Realtime Database SDK to your app&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;프로젝트에 라이브러리 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667785267345&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cpA6cY/hyQtp2JEo8/O5zkjIt9XrX17dg9JK6EbK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/nlttc/hyQvm4nf85/bziu09QWgjJqmuvHegAJP1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cpA6cY/hyQtp2JEo8/O5zkjIt9XrX17dg9JK6EbK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/nlttc/hyQvm4nf85/bziu09QWgjJqmuvHegAJP1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 백그라운드 drawable 4. 로그인 화면 LogInActivity 5. 홈 화면 변경 1. 실&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667785294640&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yzyWA/hyQvkFwsmm/fdOBHVYGOrU10W9BKMIdaK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/biohPL/hyQvsDyEBF/cracvFJ868AlKjK8STINS1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/LzQW4/hyQtAwsbfo/48YjxIdARkDndgu0zrfVQ1/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yzyWA/hyQvkFwsmm/fdOBHVYGOrU10W9BKMIdaK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/biohPL/hyQvsDyEBF/cracvFJ868AlKjK8STINS1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/LzQW4/hyQtAwsbfo/48YjxIdARkDndgu0zrfVQ1/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. 목차 1. 실행 화면 2. 뷰 바인딩 3. 메인 화면 activity_main.xml 1. 실행 화면 1-1 설정 화면 1-2 타이머 화면 2. 뷰바인딩 build.grad&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667785304963&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1. 권한 등록 2. 라이브러리 등록 3. 모델 클래스 4. 서비스 인터페이스 1.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/y3cC9/hyQvhaXy7K/5HAensu75M2L8X6eKZK33K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cKpPHH/hyQtzK6lqw/7HkuM5tNDqnamERodi2fvk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/y3cC9/hyQvhaXy7K/5HAensu75M2L8X6eKZK33K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cKpPHH/hyQtzK6lqw/7HkuM5tNDqnamERodi2fvk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1. 권한 등록 2. 라이브러리 등록 3. 모델 클래스 4. 서비스 인터페이스 1.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=our_UyPmeFw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/0y3L4/hyQtnjz16W/sk8n6yZmVFQLwMNzmCUVkK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/our_UyPmeFw&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <category>RealtimeDatabase</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/465</guid>
      <comments>https://aries574.tistory.com/465#entry465comment</comments>
      <pubDate>Mon, 7 Nov 2022 09:47:09 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part9 - 메시지 가져오기</title>
      <link>https://aries574.tistory.com/464</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part9-message-list-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKOXJ0/btrPPXldHHe/zgPsFcy8VSsnoRwZsUXAu1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKOXJ0/btrPPXldHHe/zgPsFcy8VSsnoRwZsUXAu1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKOXJ0/btrPPXldHHe/zgPsFcy8VSsnoRwZsUXAu1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKOXJ0%2FbtrPPXldHHe%2FzgPsFcy8VSsnoRwZsUXAu1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part9-message-list-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 마지막 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;전송한 메시지 &lt;span style=&quot;color: #000000;&quot;&gt;화면&lt;/span&gt;&lt;/span&gt;에 &lt;span style=&quot;color: #ee2323;&quot;&gt;보여주는 방법&lt;/span&gt; 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/463&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.27 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part8 - 메시지 보내기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666946518946&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part8 - 메시지 보내기&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 여덟 번째 시간 메시지 보내는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.26 - [안드로이드] - [안드로이드 코틀린] 채팅&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/463&quot; data-og-url=&quot;https://aries574.tistory.com/463&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/baZCBr/hyQmwVi2T3/XmIWnXaZLtKtd4INID4C11/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/xnSWu/hyQn0ULNnU/k878M4GqMSTG6xIsFqv8O1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/463&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/463&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/baZCBr/hyQmwVi2T3/XmIWnXaZLtKtd4INID4C11/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/xnSWu/hyQn0ULNnU/k878M4GqMSTG6xIsFqv8O1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part8 - 메시지 보내기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 여덟 번째 시간 메시지 보내는 방법에 대하여 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.26 - [안드로이드] - [안드로이드 코틀린] 채팅&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;받는&amp;nbsp;메시지&amp;nbsp;화면&amp;nbsp;receive.xml &lt;br /&gt;3.&amp;nbsp;보낸&amp;nbsp;메시지&amp;nbsp;화면&amp;nbsp;send.xml &lt;br /&gt;4.&amp;nbsp;메시지&amp;nbsp;어댑터&amp;nbsp;MessageAdapter.kt &lt;br /&gt;5.&amp;nbsp;채팅&amp;nbsp;ChatActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433065624&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ybZIA/hyQnZO5kaK/pupIFtkfSxS3iwOtCsbimK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bST15L/hyQmIuDXqI/dzZEz9kkcZ9yhTHq7ekk21/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433065624?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;받는&amp;nbsp;메시지&amp;nbsp;화면&amp;nbsp;receive.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 받은 메시지 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/175&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.01.01 - [안드로이드] - [안드로이드 스튜디오] 레이아웃 추가하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666946717411&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 스튜디오] 레이아웃 추가하는 방법&quot; data-og-description=&quot;이번 시간에는 안드로이드 스튜디오에서 레이아웃 추가하는 방법을 알아보겠습니다. 안드로이드 프로젝트를 만들면 java폴더에는 MainActivity 파일이 있고, res -&amp;gt; layout 폴더에는 activity_main.xml 파일&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/175&quot; data-og-url=&quot;https://aries574.tistory.com/175&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dVcOBp/hyQmva3Txf/EWDYs5to0UwjWmBTd3iCH1/img.jpg?width=349&amp;amp;height=725&amp;amp;face=0_0_349_725,https://scrap.kakaocdn.net/dn/e610H/hyQmDmAVgh/0BK7blDCkG80XnaEvkKHIK/img.jpg?width=349&amp;amp;height=725&amp;amp;face=0_0_349_725,https://scrap.kakaocdn.net/dn/bc1BUF/hyQnTagEaH/B9tivyfU3XSWXnQBHaa4K1/img.jpg?width=349&amp;amp;height=725&amp;amp;face=0_0_349_725&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/175&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/175&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dVcOBp/hyQmva3Txf/EWDYs5to0UwjWmBTd3iCH1/img.jpg?width=349&amp;amp;height=725&amp;amp;face=0_0_349_725,https://scrap.kakaocdn.net/dn/e610H/hyQmDmAVgh/0BK7blDCkG80XnaEvkKHIK/img.jpg?width=349&amp;amp;height=725&amp;amp;face=0_0_349_725,https://scrap.kakaocdn.net/dn/bc1BUF/hyQnTagEaH/B9tivyfU3XSWXnQBHaa4K1/img.jpg?width=349&amp;amp;height=725&amp;amp;face=0_0_349_725');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 스튜디오] 레이아웃 추가하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 안드로이드 스튜디오에서 레이아웃 추가하는 방법을 알아보겠습니다. 안드로이드 프로젝트를 만들면 java폴더에는 MainActivity 파일이 있고, res -&amp;gt; layout 폴더에는 activity_main.xml 파일&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1666946645469&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/receive_message_text&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_alignParentStart=&quot;true&quot;
        android:layout_margin=&quot;5dp&quot;
        android:background=&quot;@drawable/edit_background&quot;
        android:padding=&quot;10dp&quot;
        android:text=&quot;받는 메시지&quot;
        android:textSize=&quot;18sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;보낸&amp;nbsp;메시지&amp;nbsp;화면&amp;nbsp;send.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 보낸 메시지 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666946659283&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/send_message_text&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_alignParentEnd=&quot;true&quot;
        android:layout_margin=&quot;5dp&quot;
        android:background=&quot;@drawable/btn_background&quot;
        android:padding=&quot;10dp&quot;
        android:text=&quot;보내는 메시지&quot;
        android:textColor=&quot;@android:color/white&quot;
        android:textSize=&quot;18sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;메시지&amp;nbsp;어댑터&amp;nbsp;MessageAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. SentViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;보낸 쪽&lt;/span&gt; ViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. ReceiveViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;nbsp;받는 쪽&lt;/span&gt; ViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. getItemViewType&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;ViewHolder 타입&lt;/span&gt; 리턴하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. onCreateViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;화면 연결&lt;/span&gt;해주는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. onBindViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 연결&lt;/span&gt;해주는 함수&lt;/p&gt;
&lt;pre id=&quot;code_1666946796020&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MessageAdapter(private val context: Context, private val messageList: ArrayList&amp;lt;Message&amp;gt;):
    RecyclerView.Adapter&amp;lt;RecyclerView.ViewHolder&amp;gt;(){

    private val receive = 1 //받는 타입
    private val send = 2 //보내는 타입

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {

        return if(viewType == 1){ //받는 화면
            val view: View = LayoutInflater.from(context).inflate(R.layout.receive, parent, false)
            ReceiveViewHolder(view)
        }else{ //보내는 화면
            val view: View = LayoutInflater.from(context).inflate(R.layout.send, parent, false)
            SendViewHolder(view)
        }
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        //현재 메시지
        val currentMessage = messageList[position]

        //보내는 데이터
        if(holder.javaClass == SendViewHolder::class.java){
            val viewHolder = holder as SendViewHolder
            viewHolder.sendMessage.text = currentMessage.message
        }else{//받는 데이터
            val viewHolder = holder as ReceiveViewHolder
            viewHolder.receiveMessage.text = currentMessage.message
        }
    }

    override fun getItemCount(): Int {
        return messageList.size
    }

    override fun getItemViewType(position: Int): Int {

        //메시지값
        val currentMessage = messageList[position]

        return if(FirebaseAuth.getInstance().currentUser?.uid.equals(currentMessage.sendId)){
            send
        }else{
            receive
        }
    }

    //보낸 쪽
    class SendViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
        val sendMessage: TextView = itemView.findViewById(R.id.send_message_text)
    }

    //받는 쪽
    class ReceiveViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
        val receiveMessage: TextView = itemView.findViewById(R.id.receive_message_text)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5.&amp;nbsp;채팅&amp;nbsp;ChatActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. addValueEventListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 추가&lt;/span&gt; 리스너&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; onDataChange 함수 통해 &lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 변화&lt;/span&gt; 감지&lt;/p&gt;
&lt;pre id=&quot;code_1666946817931&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ChatActivity : AppCompatActivity() {

    private lateinit var receiverName: String
    private lateinit var receiverUid: String

    //바인딩 객체
    private lateinit var binding: ActivityChatBinding

    lateinit var mAuth: FirebaseAuth //인증 객체
    lateinit var mDbRef: DatabaseReference//DB 객체

    private lateinit var receiverRoom: String //받는 대화방
    private lateinit var senderRoom: String //보낸 대화방

    private lateinit var messageList: ArrayList&amp;lt;Message&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityChatBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //초기화
        messageList = ArrayList()
        val messageAdapter: MessageAdapter = MessageAdapter(this, messageList)

        //RecyclerView
        binding.chatRecyclerView.layoutManager = LinearLayoutManager(this)
        binding.chatRecyclerView.adapter = messageAdapter

        //넘어온 데이터 변수에 담기
        receiverName = intent.getStringExtra(&quot;name&quot;).toString()
        receiverUid = intent.getStringExtra(&quot;uId&quot;).toString()

        mAuth = FirebaseAuth.getInstance()
        mDbRef = FirebaseDatabase.getInstance().reference

        //접속자 uId
        val senderUid = mAuth.currentUser?.uid

        //보낸이방
        senderRoom = receiverUid + senderUid

        //받는이방
        receiverRoom = senderUid + receiverUid

        //액션바에 상대방 이름 보여주기
        supportActionBar?.title = receiverName

        //메시지 전송 버튼 이벤트
        binding.sendBtn.setOnClickListener {

            val message = binding.messageEdit.text.toString()
            val messageObject = Message(message, senderUid)

            //데이터 저장
            mDbRef.child(&quot;chats&quot;).child(senderRoom).child(&quot;messages&quot;).push()
                .setValue(messageObject).addOnSuccessListener {
                    //저장 성공하면
                    mDbRef.child(&quot;chats&quot;).child(receiverRoom).child(&quot;messages&quot;).push()
                        .setValue(messageObject)

                }
            //입력값 초기화
            binding.messageEdit.setText(&quot;&quot;)
        }

        //메시지 가져오기
        mDbRef.child(&quot;chats&quot;).child(senderRoom).child(&quot;messages&quot;)
            .addValueEventListener(object: ValueEventListener{
                override fun onDataChange(snapshot: DataSnapshot) {
                    messageList.clear()

                    for(postSnapshat in snapshot.children){

                        val message = postSnapshat.getValue(Message::class.java)
                        messageList.add(message!!)
                    }
                    //적용
                    messageAdapter.notifyDataSetChanged()
                }

                override fun onCancelled(error: DatabaseError) {

                }
            })
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/261&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.16 - [안드로이드] - [안드로이드] Firebase Storage 이미지 업로드 part1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666947312924&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] Firebase Storage 이미지 업로드 part1&quot; data-og-description=&quot;이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/261&quot; data-og-url=&quot;https://aries574.tistory.com/261&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yjiAg/hyQnWY8x6z/ErZE2gBYeGeusoXqWN54Y0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cmeUEd/hyQmzkbFB3/3tGiHvRirEXg1HmScSKW6K/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/GUcvl/hyQmxmnUyE/yjyiaW3VCixzqtz2hbKP2k/img.jpg?width=872&amp;amp;height=755&amp;amp;face=0_0_872_755&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/261&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/261&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yjiAg/hyQnWY8x6z/ErZE2gBYeGeusoXqWN54Y0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cmeUEd/hyQmzkbFB3/3tGiHvRirEXg1HmScSKW6K/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/GUcvl/hyQmxmnUyE/yjyiaW3VCixzqtz2hbKP2k/img.jpg?width=872&amp;amp;height=755&amp;amp;face=0_0_872_755');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] Firebase Storage 이미지 업로드 part1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/254&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.09 - [안드로이드] - [안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666947354104&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part&quot; data-og-description=&quot;이번 시간에는 Firebase를 통해 데이터베이스에 간단한 데이터를 쓰고 읽는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 프로젝트 만들기 3. 앱 만들기 4. 데이터 베이스 만들기 5. 라이브러&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/254&quot; data-og-url=&quot;https://aries574.tistory.com/254&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brl5ft/hyQnWEPARD/y7uOoDnjJO99VbmgvgBdK0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/eb7PYU/hyQnTnOcqO/erFhOyURYMLhLOtg0l2vKK/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/TTTSj/hyQmw8RtyB/pdCCAeepOB8F3dFdPv9rh1/img.jpg?width=836&amp;amp;height=795&amp;amp;face=0_0_836_795&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/254&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/254&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brl5ft/hyQnWEPARD/y7uOoDnjJO99VbmgvgBdK0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/eb7PYU/hyQnTnOcqO/erFhOyURYMLhLOtg0l2vKK/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/TTTSj/hyQmw8RtyB/pdCCAeepOB8F3dFdPv9rh1/img.jpg?width=836&amp;amp;height=795&amp;amp;face=0_0_836_795');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] Firebase 시작하기 실시간 데이터베이스 Realtime Database (간단한 데이터 읽기, 쓰기) part&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Firebase를 통해 데이터베이스에 간단한 데이터를 쓰고 읽는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 프로젝트 만들기 3. 앱 만들기 4. 데이터 베이스 만들기 5. 라이브러&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/264&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.19 - [안드로이드] - [안드로이드] 간단한 할 일 목록(ToDoList) 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666947366533&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] 간단한 할 일 목록(ToDoList) 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 간단한 할 일 목록(ToDoList) 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 아이템 화면 만들기 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java 1. 실행 화면..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/264&quot; data-og-url=&quot;https://aries574.tistory.com/264&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jpm8f/hyQmyr3VO7/qaShsqeDArmAGd4rkBri81/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/ci0kgW/hyQmCgTTeE/9bVdvd8ACBH1ealsGzfvE0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/Z8I3T/hyQnXDJRsb/RLkKQK0xMBspV6lxYUkRf0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/264&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/264&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jpm8f/hyQmyr3VO7/qaShsqeDArmAGd4rkBri81/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/ci0kgW/hyQmCgTTeE/9bVdvd8ACBH1ealsGzfvE0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/Z8I3T/hyQnXDJRsb/RLkKQK0xMBspV6lxYUkRf0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] 간단한 할 일 목록(ToDoList) 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 간단한 할 일 목록(ToDoList) 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 아이템 화면 만들기 3. 메인 화면 구성 activity_main.xml 4. 메인 코드 구현 MainActivity.java 1. 실행 화면..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=VkE7QxFVI5o&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/hWE6t/hyQn3KJd4L/ObqQoROCZZgkvsbyRNhDaK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/VkE7QxFVI5o&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/464</guid>
      <comments>https://aries574.tistory.com/464#entry464comment</comments>
      <pubDate>Fri, 28 Oct 2022 17:58:09 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part8 - 메시지 보내기</title>
      <link>https://aries574.tistory.com/463</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part8-message-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blspas/btrPFyOBIqX/XiExI8i9vzipxzwRbHgtMk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blspas/btrPFyOBIqX/XiExI8i9vzipxzwRbHgtMk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blspas/btrPFyOBIqX/XiExI8i9vzipxzwRbHgtMk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblspas%2FbtrPFyOBIqX%2FXiExI8i9vzipxzwRbHgtMk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part8-message-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 여덟 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;메시지 보내는 방법&lt;/span&gt;에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/462&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.26 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666858704412&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 일곱 번째 시간 대화 상대를 선택해서 대화 화면으로 이동하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.25 - [안드로이드] - [&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/462&quot; data-og-url=&quot;https://aries574.tistory.com/462&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VGgLl/hyQluKrinz/Av9ywzKn2B7uHgDK9cLOwK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/29d1t/hyQlBbJ2QZ/ghB0UPxR0lcHMO9S7rKWx1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/462&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/462&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VGgLl/hyQluKrinz/Av9ywzKn2B7uHgDK9cLOwK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/29d1t/hyQlBbJ2QZ/ghB0UPxR0lcHMO9S7rKWx1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 일곱 번째 시간 대화 상대를 선택해서 대화 화면으로 이동하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.25 - [안드로이드] - [&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메시지&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;message.kt &lt;br /&gt;3.&amp;nbsp;채팅&amp;nbsp;ChatActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433037152&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ckPvLR/hyQmGCuirO/hEvvMcZkDiTrIHI4QqSgK0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/MedYn/hyQlEzv5vP/NbtxqxGVQZinUKTKTGJZa1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433037152?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;메시지&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;message.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 메시지 정보 담을 클래스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 대화 내용:&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;message&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 접속자 uId:&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;sendId&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666858168511&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class Message(
    var message: String?,
    var sendId: String?
){
    constructor():this(&quot;&quot;,&quot;&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;채팅&amp;nbsp;ChatActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. senderRoom&amp;nbsp;=&amp;nbsp;receiverUid&amp;nbsp;+&amp;nbsp;senderUid&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;보낸 이의 방&lt;/span&gt;의 값을 받는 이 uId와 보낸 이 uId로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;합쳐서 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. receiverRoom&amp;nbsp;=&amp;nbsp;senderUid&amp;nbsp;+&amp;nbsp;receiverUid&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;받는 이의 방&lt;/span&gt;의 값을 보낸 이 uId와 받는 이 uId로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;합쳐서 만들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. mDbRef.child(&quot;chats&quot;).child(senderRoom!!).child(&quot;messages&quot;).push() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.setValue(messageObject)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;chat -&amp;gt; senderRoom -&amp;gt; message -&amp;gt; 메시지 저장&lt;/p&gt;
&lt;pre id=&quot;code_1666858200222&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ChatActivity : AppCompatActivity() {

    private lateinit var receiverName: String
    private lateinit var receiverUid: String

    //바인딩 객체
    private lateinit var binding: ActivityChatBinding

    lateinit var mAuth: FirebaseAuth //인증 객체
    lateinit var mDbRef: DatabaseReference//DB 객체

    private lateinit var receiverRoom: String //받는 대화방
    private lateinit var senderRoom: String //보낸 대화방

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityChatBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //넘어온 데이터 변수에 담기
        receiverName = intent.getStringExtra(&quot;name&quot;).toString()
        receiverUid = intent.getStringExtra(&quot;uId&quot;).toString()

        mAuth = FirebaseAuth.getInstance()
        mDbRef = FirebaseDatabase.getInstance().reference

        //접속자 uId
        val senderUid = mAuth.currentUser?.uid

        //보낸이방
        senderRoom = receiverUid + senderUid

        //받는이방
        receiverRoom = senderUid + receiverUid

        //액션바에 상대방 이름 보여주기
        supportActionBar?.title = receiverName

        //메시지 전송 버튼 이벤트
        binding.sendBtn.setOnClickListener {

            val message = binding.messageEdit.text.toString()
            val messageObject = Message(message, senderUid)

            //데이터 저장
            mDbRef.child(&quot;chats&quot;).child(senderRoom).child(&quot;messages&quot;).push()
                .setValue(messageObject).addOnSuccessListener {
                    //저장 성공하면
                    mDbRef.child(&quot;chats&quot;).child(receiverRoom).child(&quot;messages&quot;).push()
                        .setValue(messageObject)
                }
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/454&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.13 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666858593520&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환 하는 방법&quot; data-og-description=&quot;이번 시간에는 갤러리에서 가져온 여러 장의 사진을 을 앞 뒤로 넘겨서 보는 방법을 알아보겠습니다. 이전 프로젝트를 수정해서 만들게 되니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.12 - [안드&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/454&quot; data-og-url=&quot;https://aries574.tistory.com/454&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buNSq1/hyQlBQkzOq/Qimzb5Mk8kx9Ln4eIQ5Q81/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/CZ4oQ/hyQmLqgECq/4jXf0Ui62PTbKdfWpTLUP1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/454&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/454&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buNSq1/hyQlBQkzOq/Qimzb5Mk8kx9Ln4eIQ5Q81/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/CZ4oQ/hyQmLqgECq/4jXf0Ui62PTbKdfWpTLUP1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환 하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 가져온 여러 장의 사진을 을 앞 뒤로 넘겨서 보는 방법을 알아보겠습니다. 이전 프로젝트를 수정해서 만들게 되니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.12 - [안드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/265&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.20 - [안드로이드] - [안드로이드] ToDoList SQLite 만드는 방법 part1 - 화면과 DB&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666858611506&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] ToDoList SQLite 만드는 방법 part1 - 화면과 DB&quot; data-og-description=&quot;이번 시간에는 ToDoList SQLite 할 일 목록 화면과 DB부분을 만들어 보겠습니다. 목차 1. 실행 화면 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3. ToDo 클래스 만들기 4. ToDo DB 만들기 5. ToDo 화면 만들기 6. 메인 화면 구성 acti..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/265&quot; data-og-url=&quot;https://aries574.tistory.com/265&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cpFaFv/hyQlx8gjcl/yYHGHnG8kAMCdPyIqxwem1/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/QoUx9/hyQlHXj99X/uC7rvfnen9ijTGwhq8qqb1/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/wnmoi/hyQlwaptnq/bALPgxhmtEmi3l2kQCWFL1/img.jpg?width=379&amp;amp;height=739&amp;amp;face=0_0_379_739&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/265&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/265&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cpFaFv/hyQlx8gjcl/yYHGHnG8kAMCdPyIqxwem1/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/QoUx9/hyQlHXj99X/uC7rvfnen9ijTGwhq8qqb1/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/wnmoi/hyQlwaptnq/bALPgxhmtEmi3l2kQCWFL1/img.jpg?width=379&amp;amp;height=739&amp;amp;face=0_0_379_739');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] ToDoList SQLite 만드는 방법 part1 - 화면과 DB&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 ToDoList SQLite 할 일 목록 화면과 DB부분을 만들어 보겠습니다. 목차 1. 실행 화면 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3. ToDo 클래스 만들기 4. ToDo DB 만들기 5. ToDo 화면 만들기 6. 메인 화면 구성 acti..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/261&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.16 - [안드로이드] - [안드로이드] Firebase Storage 이미지 업로드 part1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666858619013&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] Firebase Storage 이미지 업로드 part1&quot; data-og-description=&quot;이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/261&quot; data-og-url=&quot;https://aries574.tistory.com/261&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g0bUq/hyQlFkVMTS/WgtkPaw0q13CiuT4A0bsA0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/YD0hG/hyQlr1fr45/9vQWyFlwFEa7lVJopWW5bk/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cM4hHa/hyQmG3z4Q6/VxXQTngtKq1MfHc2JxK640/img.jpg?width=872&amp;amp;height=755&amp;amp;face=0_0_872_755&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/261&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/261&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g0bUq/hyQlFkVMTS/WgtkPaw0q13CiuT4A0bsA0/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/YD0hG/hyQlr1fr45/9vQWyFlwFEa7lVJopWW5bk/img.jpg?width=800&amp;amp;height=450&amp;amp;face=0_0_800_450,https://scrap.kakaocdn.net/dn/cM4hHa/hyQmG3z4Q6/VxXQTngtKq1MfHc2JxK640/img.jpg?width=872&amp;amp;height=755&amp;amp;face=0_0_872_755');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드] Firebase Storage 이미지 업로드 part1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Firebase를 통해서 이미지를 업로드하는 방법을 알아보겠습니다. 간단하게 설명하자면 Firebase의 Storage에 이미지를 업로드하고, 이미지가 저장된 주소를 Realtime Database에 저장합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=6tScOft7ujs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/blReIB/hyQmBOJwns/TnzX03PsKkT2rPiu6JCXbk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/6tScOft7ujs&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/463</guid>
      <comments>https://aries574.tistory.com/463#entry463comment</comments>
      <pubDate>Thu, 27 Oct 2022 17:18:25 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part7 - 채팅 액티비티</title>
      <link>https://aries574.tistory.com/462</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part7-chatActivity-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvEOvf/btrPB1PRHpe/ndHyF3Jw4aK0UNXpWsk7J1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvEOvf/btrPB1PRHpe/ndHyF3Jw4aK0UNXpWsk7J1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvEOvf/btrPB1PRHpe/ndHyF3Jw4aK0UNXpWsk7J1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvEOvf%2FbtrPB1PRHpe%2FndHyF3Jw4aK0UNXpWsk7J1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part7-chatActivity-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 일곱 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대화 상대를 선택해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;대화 화면&lt;/span&gt;으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.25 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666765840144&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 여섯 번째 시간 메뉴를 추가해서 로그아웃 기능을 구현하겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.24 - [안드로이드] - [안드로이드 코틀린] &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/461&quot; data-og-url=&quot;https://aries574.tistory.com/461&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OrIwH/hyQlBaYQNv/KBm6l6vxgULQQQLgUUoKa1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bDzot4/hyQlsd3lf8/5MQZZ1rOKbQXiEGBVfiXNk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/461&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OrIwH/hyQlBaYQNv/KBm6l6vxgULQQQLgUUoKa1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bDzot4/hyQlsd3lf8/5MQZZ1rOKbQXiEGBVfiXNk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 여섯 번째 시간 메뉴를 추가해서 로그아웃 기능을 구현하겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.24 - [안드로이드] - [안드로이드 코틀린]&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;채팅&amp;nbsp;화면&amp;nbsp;ChatActivity &lt;br /&gt;3. 사용자 리스트 어댑터 UserAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/433008665&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bDNujg/hyQlErZ6zW/KusibumGfVsPR8x7osjKLK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/ceVso7/hyQlubP3T6/kzSn3Bl6PW7whcm3ZQjPIK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/433008665?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 채팅 화면 ChatActivity&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;app 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Activity -&amp;gt; Empty Activity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Activity name: ChatActivity&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;activity_chat.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 대화 내용 보여줄 &lt;span style=&quot;color: #ee2323;&quot;&gt;RecyclerView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 메시지 입력 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 메시지 전송 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666766042548&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.ChatActivity&quot;&amp;gt;

    &amp;lt;!-- 대화 내용 --&amp;gt;
    &amp;lt;androidx.recyclerview.widget.RecyclerView
        android:id=&quot;@+id/chat_recyclerView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:layout_above=&quot;@id/input_layout&quot;
        android:layout_alignParentTop=&quot;true&quot; /&amp;gt;

    &amp;lt;!-- 입력 레이아웃 --&amp;gt;
    &amp;lt;LinearLayout
        android:id=&quot;@+id/input_layout&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_alignParentBottom=&quot;true&quot;
        android:layout_marginBottom=&quot;10dp&quot;
        android:orientation=&quot;horizontal&quot;
        android:weightSum=&quot;100&quot;&amp;gt;

        &amp;lt;EditText
            android:id=&quot;@+id/message_edit&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;50dp&quot;
            android:layout_marginStart=&quot;10dp&quot;
            android:layout_weight=&quot;85&quot;
            android:background=&quot;@drawable/edit_background&quot;
            android:hint=&quot;메시지를 입력하세요&quot;
            android:paddingStart=&quot;10dp&quot; /&amp;gt;

        &amp;lt;androidx.appcompat.widget.AppCompatButton
            android:id=&quot;@+id/send_btn&quot;
            android:layout_width=&quot;30dp&quot;
            android:layout_height=&quot;30dp&quot;
            android:layout_marginStart=&quot;10dp&quot;
            android:layout_marginEnd=&quot;10dp&quot;
            android:layout_weight=&quot;15&quot;
            android:background=&quot;@drawable/btn_background&quot;
            android:text=&quot;전송&quot;
            android:textColor=&quot;@android:color/white&quot; /&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;ChatActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. intent.getStringExtra(&quot;name&quot;).toString()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;넘어온 &lt;span style=&quot;color: #ee2323;&quot;&gt;상대방 이름&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. intent.getStringExtra(&quot;uid&quot;).toString()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;넘어온 &lt;span style=&quot;color: #ee2323;&quot;&gt;상대방 uId&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. supportActionBar?.title&amp;nbsp;=&amp;nbsp;receiverName&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;액션 바에 &lt;span style=&quot;color: #ee2323;&quot;&gt;상대방 이름&lt;/span&gt; 보여주기&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666766134284&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ChatActivity : AppCompatActivity() {

    private lateinit var receiverName: String
    private lateinit var receiverUid: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_chat)

        //넘어온 데이터 변수에 담기
        receiverName = intent.getStringExtra(&quot;name&quot;).toString()
        receiverUid = intent.getStringExtra(&quot;uId&quot;).toString()

        //액션바에 상대방 이름 보여주기
        supportActionBar?.title = receiverName
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 사용자 리스트 어댑터 UserAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. holder.itemView.setOnClickListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;아이템 &lt;span style=&quot;color: #ee2323;&quot;&gt;클릭&lt;/span&gt; 이벤트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. intent.putExtra(&quot;name&quot;, currentUser.name)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;넘겨줄 &lt;span style=&quot;color: #ee2323;&quot;&gt;상대방 이름&lt;/span&gt; 담기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. intent.putExtra(&quot;uid&quot;, currentUser.uId)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;넘겨줄 &lt;span style=&quot;color: #ee2323;&quot;&gt;상대방 uId&lt;/span&gt; 담기&lt;/p&gt;
&lt;pre id=&quot;code_1666766159596&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserAdapter(private val context: Context, private val userList: ArrayList&amp;lt;User&amp;gt;):
 RecyclerView.Adapter&amp;lt;UserAdapter.UserViewHolder&amp;gt;(){

    /**
     * 화면 설정
     */
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
       val view: View = LayoutInflater.from(context).
       inflate(R.layout.user_layout, parent, false)

        return UserViewHolder(view)
    }

    /**
     * 데이터 설정
     */
    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {

        //데이터 담기
        val currentUser = userList[position]

        //화면에 데이터 보여주기
        holder.nameText.text = currentUser.name

        //아이템 클릭 이벤트
        holder.itemView.setOnClickListener {

            val intent  = Intent(context, ChatActivity::class.java)

            //넘길 데이터
            intent.putExtra(&quot;name&quot;, currentUser.name)
            intent.putExtra(&quot;uId&quot;, currentUser.uId)

            context.startActivity(intent)
        }
    }

    /**
     * 데이터 갯수 가져오기
     */
    override fun getItemCount(): Int {
        return userList.size
    }

    class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

        val nameText: TextView = itemView.findViewById(R.id.name_text)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666766515497&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&quot; data-og-description=&quot;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/455&quot; data-og-url=&quot;https://aries574.tistory.com/455&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/DDBQ3/hyQlskQQSH/QZXkoqxZBT4PwnFpL8Zde0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mkYda/hyQlGpQZ5A/pQoyMnbTRDKzxwKXmIviAk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/455&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/DDBQ3/hyQlskQQSH/QZXkoqxZBT4PwnFpL8Zde0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mkYda/hyQlGpQZ5A/pQoyMnbTRDKzxwKXmIviAk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666766522732&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bcDci2/hyQlF5vU5k/tr2YxHEB2iqrO3CkKZkRgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/hUxPU/hyQlySR3B0/haK5KcGW5ruhCPNl5BJJ30/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bcDci2/hyQlF5vU5k/tr2YxHEB2iqrO3CkKZkRgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/hUxPU/hyQlySR3B0/haK5KcGW5ruhCPNl5BJJ30/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666766529073&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/j32Dj/hyQlrGdJD4/DwISK3UGJ0bOVEBKIkkdL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cKzCd3/hyQlFYMGQE/KimtfALJlZ9plilAgdATe0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/j32Dj/hyQlrGdJD4/DwISK3UGJ0bOVEBKIkkdL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cKzCd3/hyQlFYMGQE/KimtfALJlZ9plilAgdATe0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=-M-o2OqPQYI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/0O6RZ/hyQlDs64Gh/krn4BPNHIUfZwKDrtvkXf1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/-M-o2OqPQYI&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/462</guid>
      <comments>https://aries574.tistory.com/462#entry462comment</comments>
      <pubDate>Wed, 26 Oct 2022 15:44:31 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part6 - Firebase 메뉴 생성 및 로그아웃</title>
      <link>https://aries574.tistory.com/461</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part6-log-out-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TIJEi/btrPyWNolMk/vGsgYlLvZoqrXZfL9MRE60/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TIJEi/btrPyWNolMk/vGsgYlLvZoqrXZfL9MRE60/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TIJEi/btrPyWNolMk/vGsgYlLvZoqrXZfL9MRE60/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTIJEi%2FbtrPyWNolMk%2FvGsgYlLvZoqrXZfL9MRE60%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part6-log-out-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 여섯 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메뉴를 추가해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;로그아웃 기능&lt;/span&gt;을 구현하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/460&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.24 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part5 - Firebase 사용자 리스트&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666678172804&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part5 - Firebase 사용자 리스트&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 다섯 번째 시간 로그인을 하면 등록한 사용자 리스트를 보여주는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.21 - [안드로이드] -&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/460&quot; data-og-url=&quot;https://aries574.tistory.com/460&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b2tNZc/hyQlFpSAB0/Zl41HTJKahSnbpWO0Zwka1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b7iD08/hyQlDewB4L/rd0OKOSLKlbUBgLxCxDh4k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/460&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/460&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b2tNZc/hyQlFpSAB0/Zl41HTJKahSnbpWO0Zwka1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/b7iD08/hyQlDewB4L/rd0OKOSLKlbUBgLxCxDh4k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part5 - Firebase 사용자 리스트&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 다섯 번째 시간 로그인을 하면 등록한 사용자 리스트를 보여주는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.21 - [안드로이드] -&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메뉴&amp;nbsp;화면 &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432981368&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/c2sdrH/hyQluhAjtJ/agi38ZyWbM179LKOnekKZ0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/pkzku/hyQhxmI3qw/pjfm9tv7nAMXVvWTKDpXQ0/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432981368?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메뉴&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;res -&amp;gt; 마우스 오른쪽 -&amp;gt; Android Resource File&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;File name:&lt;/b&gt; menu&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Root element:&lt;/b&gt; Menu&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;menu.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 로그아웃 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;item&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666678382116&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;menu xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;item android:id=&quot;@+id/log_out&quot;
        android:title=&quot;Log Out&quot;/&amp;gt;
&amp;lt;/menu&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. onCreateOptionsMenu&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;생성할 &lt;span style=&quot;color: #ee2323;&quot;&gt;메뉴 지정&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. onOptionsItemSelected&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;메뉴 아이템 &lt;span style=&quot;color: #ee2323;&quot;&gt;선택 기능&lt;/span&gt; 구현 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. mAuth.signOut()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 서비스 &lt;span style=&quot;color: #ee2323;&quot;&gt;로그아웃&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666678474245&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding
    lateinit var adapter: UserAdapter

    private lateinit var mAuth: FirebaseAuth
    private lateinit var mDbRef: DatabaseReference

    private lateinit var userList: ArrayList&amp;lt;User&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //인증 초기화
        mAuth = Firebase.auth

        //db 초기화
        mDbRef = Firebase.database.reference

        //리스트 초기화
        userList = ArrayList()

        adapter = UserAdapter(this, userList)

        binding.userRecycelrView.layoutManager = LinearLayoutManager(this)
        binding.userRecycelrView.adapter = adapter

        //사용자 정보 가져오기
        mDbRef.child(&quot;user&quot;).addValueEventListener(object:ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {
                for(postSnapshot in snapshot.children){
                    //유저 정보
                    val currentUser = postSnapshot.getValue(User::class.java)

                    if(mAuth.currentUser?.uid != currentUser?.uId){
                        userList.add(currentUser!!)
                    }
                }
                adapter.notifyDataSetChanged()
            }

            override fun onCancelled(error: DatabaseError) {
                //실패 시 실행
            }
        })
    }//onCreate

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu, menu)
        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if(item.itemId == R.id.log_out){
            mAuth.signOut()
            val intent = Intent(this@MainActivity, LogInActivity::class.java)
            startActivity(intent)
            finish()
            return true
        }
        return true
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666678641148&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nY1jg/hyQhupZBjQ/xTG6EidowGgPciuQ0H6qHk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dhfTlI/hyQhwahQGq/V5YcDLdedGJ2WnlYthCucK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nY1jg/hyQhupZBjQ/xTG6EidowGgPciuQ0H6qHk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dhfTlI/hyQhwahQGq/V5YcDLdedGJ2WnlYthCucK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/436&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.20 - [안드로이드] - [안드로이드 코틀린] 코드(MainActivity) 에서 배경 색상 바꾸는 다양한 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666678646075&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 코드(MainActivity) 에서 배경 색상 바꾸는 다양한 방법&quot; data-og-description=&quot;이번 시간에는 코드(MainActivity)에서 텍스트뷰 색상을 다양하게 변경하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/436&quot; data-og-url=&quot;https://aries574.tistory.com/436&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bBm4DN/hyQhvbnps1/QDhKKB9GFH73IKnyurWeR0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/obZVH/hyQhJ1Nsru/Aeh3tmkekRBaROVJkr48a0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/436&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/436&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bBm4DN/hyQhvbnps1/QDhKKB9GFH73IKnyurWeR0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/obZVH/hyQhJ1Nsru/Aeh3tmkekRBaROVJkr48a0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 코드(MainActivity) 에서 배경 색상 바꾸는 다양한 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 코드(MainActivity)에서 텍스트뷰 색상을 다양하게 변경하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/435&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.19 - [안드로이드] - [안드로이드 코틀린] RecyclerView 홀수 행, 짝수 행 별 색상 다르게 하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666678651963&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] RecyclerView 홀수 행, 짝수 행 별 색상 다르게 하는 방법&quot; data-og-description=&quot;이번 시간에는 리스트에 쓰이는 RecyclerView 화면에서 홀수 행, 짝수 행 별 색상 다르게 보여주는 방법 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 3.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ListAdapter&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/435&quot; data-og-url=&quot;https://aries574.tistory.com/435&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVf2C5/hyQly5mEWd/34gWvj9VSki1poGf850hr0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/AGdCy/hyQhuXOvGE/TRDg6gP5B4iK2GWStyCVp0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KjZN2/hyQhBbCl6r/uRBCFZkogN1swp7eNDchu0/img.jpg?width=401&amp;amp;height=809&amp;amp;face=0_0_401_809&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/435&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/435&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVf2C5/hyQly5mEWd/34gWvj9VSki1poGf850hr0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/AGdCy/hyQhuXOvGE/TRDg6gP5B4iK2GWStyCVp0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/KjZN2/hyQhBbCl6r/uRBCFZkogN1swp7eNDchu0/img.jpg?width=401&amp;amp;height=809&amp;amp;face=0_0_401_809');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] RecyclerView 홀수 행, 짝수 행 별 색상 다르게 하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 리스트에 쓰이는 RecyclerView 화면에서 홀수 행, 짝수 행 별 색상 다르게 보여주는 방법 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 3.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ListAdapter&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=LRevxdcqY7I&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/h4s2a/hyQhAcJpIc/0WiQHBOX6MTxDroGCjJkG0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/LRevxdcqY7I&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/461</guid>
      <comments>https://aries574.tistory.com/461#entry461comment</comments>
      <pubDate>Tue, 25 Oct 2022 15:19:24 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part5 - Firebase 사용자 리스트</title>
      <link>https://aries574.tistory.com/460</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part5-userList-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doJ4HD/btrPsYyY1cR/uDEKNkLzk9jRxrifBBWPI1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doJ4HD/btrPsYyY1cR/uDEKNkLzk9jRxrifBBWPI1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doJ4HD/btrPsYyY1cR/uDEKNkLzk9jRxrifBBWPI1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoJ4HD%2FbtrPsYyY1cR%2FuDEKNkLzk9jRxrifBBWPI1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part5-userList-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 다섯 번째 시간&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인을 하면 등록한 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 리스트&lt;/span&gt;를 보여주는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/459&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.21 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666608900702&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 네 번째 시간 등록한 이메일로 로그인하는 기능과 회원가입 사용자 정보를 DB에 저장하는 기능을 구현하겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/459&quot; data-og-url=&quot;https://aries574.tistory.com/459&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ty8lD/hyQhHvDwuE/T9BTsGZaPSVYlxULZPNkV1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/kvUgf/hyQhvaSz10/8EaUKEBsxBQyf31cUhNrKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ZZ4sW/hyQhDte3Ks/2gMUhfiqIVj1hvvWPajO80/img.jpg?width=977&amp;amp;height=715&amp;amp;face=0_0_977_715&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/459&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/459&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ty8lD/hyQhHvDwuE/T9BTsGZaPSVYlxULZPNkV1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/kvUgf/hyQhvaSz10/8EaUKEBsxBQyf31cUhNrKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ZZ4sW/hyQhDte3Ks/2gMUhfiqIVj1hvvWPajO80/img.jpg?width=977&amp;amp;height=715&amp;amp;face=0_0_977_715');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 네 번째 시간 등록한 이메일로 로그인하는 기능과 회원가입 사용자 정보를 DB에 저장하는 기능을 구현하겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2. 사용자 리스트 화면 user_layout.xml&lt;br /&gt;3. 사용자 리스트 어댑터 UserAdapter.kt&lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432961386&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/61EEB/hyQhuC4u6b/YjrnWG5gNmlmEG7r7W5lyK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/dMwyD8/hyQhEMsqPl/82yKmOFzJ1PFcNv2GJaWaK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432961386?service=daum_tistory&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2. 사용자 리스트 화면 user_layout.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 이름을 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 사용자를 구분해주는 선 &lt;span style=&quot;color: #ee2323;&quot;&gt;View&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666609053905&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:orientation=&quot;vertical&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;wrap_content&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/name_text&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginStart=&quot;10dp&quot;
        android:layout_marginTop=&quot;5dp&quot;
        android:textSize=&quot;30sp&quot;
        android:textStyle=&quot;bold&quot;/&amp;gt;

    &amp;lt;View
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;1dp&quot;
        android:layout_below=&quot;@id/name_text&quot;
        android:layout_marginTop=&quot;5dp&quot;
        android:background=&quot;@android:color/black&quot;/&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3. 사용자 리스트 어댑터 UserAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;- 설명 -&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. class&amp;nbsp;UserAdapter(val&amp;nbsp;context:&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Context&lt;/span&gt;,&amp;nbsp;val&amp;nbsp;userList:&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;ArrayList&lt;/span&gt;&amp;lt;User&amp;gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;생성 시에 Context와 ArrayList를 넘겨받는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. onCreateViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;화면&lt;/span&gt; 연결하는 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. onBindViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터&lt;/span&gt; 연결 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. getItemCount&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터 개수 돌려주는 기능&lt;/p&gt;
&lt;pre id=&quot;code_1666609072600&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class UserAdapter(private val context: Context, private val userList: ArrayList&amp;lt;User&amp;gt;):
 RecyclerView.Adapter&amp;lt;UserAdapter.UserViewHolder&amp;gt;(){

    /**
     * 화면 설정
     */
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): UserViewHolder {
       val view: View = LayoutInflater.from(context).
       inflate(R.layout.user_layout, parent, false)

        return UserViewHolder(view)
    }

    /**
     * 데이터 설정
     */
    override fun onBindViewHolder(holder: UserViewHolder, position: Int) {

        val currentUser = userList[position]
        holder.nameText.text = currentUser.name
    }

    /**
     * 데이터 갯수 가져오기
     */
    override fun getItemCount(): Int {
        return userList.size
    }

    class UserViewHolder(itemView: View): RecyclerView.ViewHolder(itemView){

        val nameText: TextView = itemView.findViewById(R.id.name_text)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 사용자 리스트 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;RecyclerView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666609085760&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:gravity=&quot;center&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;androidx.recyclerview.widget.RecyclerView
        android:id=&quot;@+id/user_recycelrView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        tools:listitem=&quot;@layout/user_layout&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. mAuth&amp;nbsp;=&amp;nbsp;Firebase.auth&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;인증 서비스 객체&lt;/span&gt; 초기화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. mDbRef&amp;nbsp;=&amp;nbsp;Firebase.database.reference&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;nbsp;실시간 데이터베이스 객체&lt;/span&gt; 초기화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. addValueEventListener&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;해당 경로&lt;/span&gt; 데이터 가져오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. onDataChange&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 변경 시에&lt;/span&gt; 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. onCancelled&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;오류 발생 시에&lt;/span&gt; 실행&lt;/p&gt;
&lt;pre id=&quot;code_1666609104936&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding
    lateinit var adapter: UserAdapter

    private lateinit var mAuth: FirebaseAuth
    private lateinit var mDbRef: DatabaseReference

    private lateinit var userList: ArrayList&amp;lt;User&amp;gt;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //인증 초기화
        mAuth = Firebase.auth

        //db 초기화
        mDbRef = Firebase.database.reference

        //리스트 초기화
        userList = ArrayList()

        adapter = UserAdapter(this, userList)

        binding.userRecycelrView.layoutManager = LinearLayoutManager(this)
        binding.userRecycelrView.adapter = adapter

        //사용자 정보 가져오기
        mDbRef.child(&quot;user&quot;).addValueEventListener(object:ValueEventListener{
            override fun onDataChange(snapshot: DataSnapshot) {
                for(postSnapshot in snapshot.children){
                    //유저 정보
                    val currentUser = postSnapshot.getValue(User::class.java)

                    if(mAuth.currentUser?.uid != currentUser?.uId){
                        userList.add(currentUser!!)
                    }
                }
                adapter.notifyDataSetChanged()
            }

            override fun onCancelled(error: DatabaseError) {
                //실패 시 실행
            }
        })

    }//onCreate
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666609666111&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&quot; data-og-description=&quot;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/455&quot; data-og-url=&quot;https://aries574.tistory.com/455&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxWggr/hyQhyMgjyL/qHCQuzAyB6lKE6A34OcpkK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/btpgWn/hyQhHWJ4qF/3o5NVkv2YJEmDxglhDuJ80/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/455&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxWggr/hyQhyMgjyL/qHCQuzAyB6lKE6A34OcpkK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/btpgWn/hyQhHWJ4qF/3o5NVkv2YJEmDxglhDuJ80/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666609670200&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/HPmkk/hyQhyyJU1h/YLsyY7xAYuqMwJVuUc2lK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5LGpu/hyQhAQQdVM/dYXdu0eAmOsodeLHccNUWK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/HPmkk/hyQhyyJU1h/YLsyY7xAYuqMwJVuUc2lK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5LGpu/hyQhAQQdVM/dYXdu0eAmOsodeLHccNUWK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666609676715&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wkr05/hyQhyyJVNz/NHQGmxUhXyYftQAoHAVLtK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/iIjrf/hyQhub2oor/NpZ8igfS0kLukpjDzgdIvk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wkr05/hyQhyyJVNz/NHQGmxUhXyYftQAoHAVLtK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/iIjrf/hyQhub2oor/NpZ8igfS0kLukpjDzgdIvk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=-5Bp0HJqTyA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bBigNe/hyQhAXBOwG/fmGSk5dvNUn2QX4bPa74gk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/-5Bp0HJqTyA&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/460</guid>
      <comments>https://aries574.tistory.com/460#entry460comment</comments>
      <pubDate>Mon, 24 Oct 2022 20:09:28 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part4 - Firebase 로그인 기능과 사용자 저장 기능</title>
      <link>https://aries574.tistory.com/459</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part4-login-_-user-save-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckwhfV/btrPgpWU9EN/ZfHuMt0bhHYsYGgqKhJstk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckwhfV/btrPgpWU9EN/ZfHuMt0bhHYsYGgqKhJstk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckwhfV/btrPgpWU9EN/ZfHuMt0bhHYsYGgqKhJstk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckwhfV%2FbtrPgpWU9EN%2FZfHuMt0bhHYsYGgqKhJstk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part4-login-_-user-save-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 네 번째 시간 등록한 이메일로 &lt;span style=&quot;color: #ee2323;&quot;&gt;로그인하는 기능&lt;/span&gt;과&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원가입 사용자 정보를 &lt;span style=&quot;color: #ee2323;&quot;&gt;DB에 저장&lt;/span&gt;하는 기능을 구현하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/458&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.20 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666343951275&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 세 번째 시간&amp;nbsp;회원가입 인증 서비스&amp;nbsp;만드는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.19 - [안드로이드] - [안드로이드 코틀린&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/458&quot; data-og-url=&quot;https://aries574.tistory.com/458&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tILNV/hyQbsZiXXr/4WrZD1VXRlOLOgIpFMrUz1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/k5N9m/hyQanxknYc/L2xGZS6KkRS68ARHjmHJ31/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/y691H/hyQapu8hlw/PKWBZUnBvCUaK6iHZDUYak/img.jpg?width=836&amp;amp;height=795&amp;amp;face=0_0_836_795&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/458&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/458&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tILNV/hyQbsZiXXr/4WrZD1VXRlOLOgIpFMrUz1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/k5N9m/hyQanxknYc/L2xGZS6KkRS68ARHjmHJ31/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/y691H/hyQapu8hlw/PKWBZUnBvCUaK6iHZDUYak/img.jpg?width=836&amp;amp;height=795&amp;amp;face=0_0_836_795');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 세 번째 시간&amp;nbsp;회원가입 인증 서비스&amp;nbsp;만드는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.19 - [안드로이드] - [안드로이드 코틀린&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;로그인&amp;nbsp;LoginActivity.kt &lt;br /&gt;3.&amp;nbsp;Realtime&amp;nbsp;Database&amp;nbsp;설정 &lt;br /&gt;4.&amp;nbsp;회원가입&amp;nbsp;SignUpActivity.kt &lt;br /&gt;5.&amp;nbsp;사용자&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;User.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 로그인 -&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432884270&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ccqRFO/hyQbp2CqOR/Iz0mEFNDGzgKZeOOSGkHrk/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/04QUv/hyQaoXhFDt/J8zsROK9BBWy2DLiKqYR70/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;800&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432884270?service=daum_tistory&quot; width=&quot;800&quot; height=&quot;450&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 사용자 저장 -&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432884278&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/fb75p/hyQbzRHxbx/C8ItRX5ozZ94zTy98O8CnK/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080,https://scrap.kakaocdn.net/dn/bFrldR/hyQbtjDigl/fgb9xKhdmm69fWSetsEHk1/img.jpg?width=1920&amp;amp;height=1080&amp;amp;face=0_0_1920_1080&quot; data-video-width=&quot;800&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432884278?service=daum_tistory&quot; width=&quot;800&quot; height=&quot;450&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;로그인&amp;nbsp;LoginActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1.&amp;nbsp; mAuth:&amp;nbsp;FirebaseAuth&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 &lt;span style=&quot;color: #ee2323;&quot;&gt;객체&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. mAuth&amp;nbsp;=&amp;nbsp;Firebase.auth&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 객체 &lt;span style=&quot;color: #ee2323;&quot;&gt;초기화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. login(email:&amp;nbsp;String,&amp;nbsp;password:&amp;nbsp;String)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;로그인 기능&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. mAuth.signInWithEmailAndPassword(email,&amp;nbsp;password)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 서비스 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;등록된 &lt;span style=&quot;color: #ee2323;&quot;&gt;이메일&lt;/span&gt;과 &lt;span style=&quot;color: #ee2323;&quot;&gt;패스워드 검증&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666344151819&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class LogInActivity : AppCompatActivity() {

    lateinit var binding: ActivityLogInBinding

    lateinit var mAuth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityLogInBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //인증 초기화
        mAuth = Firebase.auth

        //로그인 버튼 이벤트
        binding.loginBtn.setOnClickListener {

            val email = binding.emailEdit.text.toString()
            val password = binding.passwordEdit.text.toString()

            login(email, password)
        }

        //회원가입 버튼 이벤트
        binding.signUpBtn.setOnClickListener {
            val intent: Intent = Intent(this@LogInActivity, SignUpActivity::class.java)
            startActivity(intent)
        }
    }

    /**
     * 로그인
     */
    private fun login(email: String, password: String){
        mAuth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task -&amp;gt;
                if (task.isSuccessful) {
                    //성공 시 실행
                    val intent: Intent = Intent(this@LogInActivity,
                        MainActivity::class.java)
                    startActivity(intent)
                    Toast.makeText(this, &quot;로그인 성공&quot;, Toast.LENGTH_SHORT).show()
                    finish()
                } else {
                    //실패 시 실행
                    Toast.makeText(this, &quot;로그인 실패&quot;, Toast.LENGTH_SHORT).show()
                    Log.d(&quot;Login&quot;, &quot;Error: ${task.exception}&quot;)
                }
            }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;Realtime&amp;nbsp;Database&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-1 firebase 홈페이지&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp; &lt;a href=&quot;https://console.firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://console.firebase.google.com/&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666344510270&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;로그인 - Google 계정&quot; data-og-description=&quot;이메일 또는 휴대전화&quot; data-og-host=&quot;accounts.google.com&quot; data-og-source-url=&quot;https://console.firebase.google.com/&quot; data-og-url=&quot;https://accounts.google.com/v3/signin/identifier?dsh=S1879945360%3A1666344421982988&amp;amp;continue=https%3A%2F%2Fconsole.firebase.google.com%2F&amp;amp;followup=https%3A%2F%2Fconsole.firebase.google.com%2F&amp;amp;osid=1&amp;amp;passive=1209600&amp;amp;flowName=WebLiteSignIn&amp;amp;flowEntry=ServiceLogin&amp;amp;ifkv=AQDHYWpP01cvZHoCfW4P2tqTkfv6_JzHqIMvZ3dr0Ta8I5iCPpCFj0MJWNLvkO5u_fLuwiHmSUfJvQ&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://console.firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://console.firebase.google.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;로그인 - Google 계정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이메일 또는 휴대전화&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;accounts.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-2 프로젝트 클릭&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-3 빌드 -&amp;gt; Realtime Database&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-4 데이터베이스 만들기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;realtime1.JPG&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1QfeX/btrPeU48inV/DcwuqLf3W8kvJ8kIMf0aaK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1QfeX/btrPeU48inV/DcwuqLf3W8kvJ8kIMf0aaK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1QfeX/btrPeU48inV/DcwuqLf3W8kvJ8kIMf0aaK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1QfeX%2FbtrPeU48inV%2FDcwuqLf3W8kvJ8kIMf0aaK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;651&quot; height=&quot;354&quot; data-filename=&quot;realtime1.JPG&quot; data-origin-width=&quot;651&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-5 위치 선택 -&amp;gt; 다음&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;realtime2.JPG&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzf7eW/btrPfCQcYgP/rp0ZBJuLKmHn9uDON2kAu0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzf7eW/btrPfCQcYgP/rp0ZBJuLKmHn9uDON2kAu0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzf7eW/btrPfCQcYgP/rp0ZBJuLKmHn9uDON2kAu0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzf7eW%2FbtrPfCQcYgP%2Frp0ZBJuLKmHn9uDON2kAu0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;830&quot; height=&quot;368&quot; data-filename=&quot;realtime2.JPG&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-6 테스트 모드 시작 체크 -&amp;gt; 사용 설정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;realtime3.JPG&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT4Xvj/btrPfCQcYif/FE8hBYEXOB3dKKk5lVkRV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT4Xvj/btrPfCQcYif/FE8hBYEXOB3dKKk5lVkRV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT4Xvj/btrPfCQcYif/FE8hBYEXOB3dKKk5lVkRV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT4Xvj%2FbtrPfCQcYif%2FFE8hBYEXOB3dKKk5lVkRV1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;824&quot; height=&quot;502&quot; data-filename=&quot;realtime3.JPG&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;3-7 생성된 화면&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;realtime4.JPG&quot; data-origin-width=&quot;977&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5lYDY/btrPeJphXU7/DUMLTgWm5uHJ0s1ni8maF0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5lYDY/btrPeJphXU7/DUMLTgWm5uHJ0s1ni8maF0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5lYDY/btrPeJphXU7/DUMLTgWm5uHJ0s1ni8maF0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5lYDY%2FbtrPeJphXU7%2FDUMLTgWm5uHJ0s1ni8maF0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;977&quot; height=&quot;715&quot; data-filename=&quot;realtime4.JPG&quot; data-origin-width=&quot;977&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;nbsp;3-8 라이브러리 등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- tools -&amp;gt; firebase -&amp;gt; 위에서 3번째(&lt;span style=&quot;color: #ee2323;&quot;&gt;Realtime Database&lt;/span&gt;) 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- Get started with &lt;span style=&quot;color: #ee2323;&quot;&gt;Realtime Database&lt;/span&gt; [KOTLIN] 클릭&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;회원가입&amp;nbsp;SignUpActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. signUp(name,&amp;nbsp;email,&amp;nbsp;password)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;회원가입 함수에 name &lt;span style=&quot;color: #ee2323;&quot;&gt;파라미터&lt;/span&gt; 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. addUserToDatabase(name:&amp;nbsp;String,&amp;nbsp;email:&amp;nbsp;String,&amp;nbsp;uId:&amp;nbsp;String)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;데이터베이스에 &lt;span style=&quot;color: #ee2323;&quot;&gt;저장&lt;/span&gt;하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이름, 이메일, uid(인증 데이터에 저장된 정보)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. mDbRef.child(&quot;user&quot;).child(uId).setValue(User(name,&amp;nbsp;email,&amp;nbsp;uId))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;use&lt;/span&gt;r안에 &lt;span style=&quot;color: #ee2323;&quot;&gt;uid&lt;/span&gt;안에 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 정보&lt;/span&gt;를 저장합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;json.JPG&quot; data-origin-width=&quot;487&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEzVGr/btrPgquRy65/nKpv2TKCA9p7NiKngcOrq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEzVGr/btrPgquRy65/nKpv2TKCA9p7NiKngcOrq0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEzVGr/btrPgquRy65/nKpv2TKCA9p7NiKngcOrq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEzVGr%2FbtrPgquRy65%2FnKpv2TKCA9p7NiKngcOrq0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;487&quot; height=&quot;276&quot; data-filename=&quot;json.JPG&quot; data-origin-width=&quot;487&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1666344764707&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SignUpActivity : AppCompatActivity() {

    lateinit var binding: ActivitySignUpBinding

    lateinit var mAuth: FirebaseAuth

    private lateinit var mDbRef: DatabaseReference

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySignUpBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //인증 초기화
        mAuth = Firebase.auth

        //db 초기화
        mDbRef = Firebase.database.reference

        binding.signUpBtn.setOnClickListener {

            val name = binding.nameEdit.text.toString().trim()
            val email = binding.emailEdit.text.toString().trim()
            val password = binding.passwordEdit.text.toString().trim()

            signUp(name, email, password)
        }
    }

    /**
     * 회원 가입
     */
    private fun signUp(name: String, email: String, password: String){

        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task -&amp;gt;
                if (task.isSuccessful) {
                    // 성공시 실행
                    Toast.makeText(this, &quot;회원가입 성공&quot;, Toast.LENGTH_SHORT).show()
                    val intent: Intent = Intent(this@SignUpActivity, MainActivity::class.java)
                    startActivity(intent)
                    addUserToDatabase(name, email, mAuth.currentUser?.uid!!)
                } else {
                    // 실패시 실행
                    Toast.makeText(this, &quot;회원가입 실패&quot;, Toast.LENGTH_SHORT).show()
                    Log.d(&quot;SignUp&quot;, &quot;Error: ${task.exception}&quot;)
                }
            }
    }

    private fun addUserToDatabase(name: String, email: String, uId: String){
        mDbRef.child(&quot;user&quot;).child(uId).setValue(User(name, email, uId))
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5.&amp;nbsp;사용자&amp;nbsp;모델&amp;nbsp;클래스&amp;nbsp;User.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;1. DB에 저장할 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 정보&lt;/span&gt;를 담을 모델 클래스&lt;/p&gt;
&lt;pre id=&quot;code_1666345138691&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class User(
    var name: String,
    var email: String,
    var uId: String
){
    constructor(): this(&quot;&quot;, &quot;&quot;, &quot;&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666345236478&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&quot; data-og-description=&quot;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/455&quot; data-og-url=&quot;https://aries574.tistory.com/455&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/OwYpa/hyQaA4uNdV/iQqP0mRQWOUE37SkPa8Frk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bZAtEj/hyQbwAELih/lQfrbTvRWDJA7IFPdY3Bak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/455&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/OwYpa/hyQaA4uNdV/iQqP0mRQWOUE37SkPa8Frk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bZAtEj/hyQbwAELih/lQfrbTvRWDJA7IFPdY3Bak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.11 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666345241228&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/452&quot; data-og-url=&quot;https://aries574.tistory.com/452&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/p61dG/hyQauJYsoe/VEBYMOQbOnHOCNhK1PqZx0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/xjZlK/hyQan5aQmi/M4RE27oAZXLfV6DXs9p0o0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/452&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/p61dG/hyQauJYsoe/VEBYMOQbOnHOCNhK1PqZx0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/xjZlK/hyQan5aQmi/M4RE27oAZXLfV6DXs9p0o0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666345246336&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vIuoZ/hyQaBPROcj/mfdkwFexkOqu9l9ql9kVr0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5UAL3/hyQbBBYFIx/vDbNjdCeekDAr2PYAYCXMk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vIuoZ/hyQaBPROcj/mfdkwFexkOqu9l9ql9kVr0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/5UAL3/hyQbBBYFIx/vDbNjdCeekDAr2PYAYCXMk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=_QC1Qs0JihY&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/XJMQl/hyQbre1uVZ/MDhjtM0G7lCyt3tkg4UPyk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/_QC1Qs0JihY&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Firebase</category>
      <category>Kotlin</category>
      <category>RealtimeDatabase</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/459</guid>
      <comments>https://aries574.tistory.com/459#entry459comment</comments>
      <pubDate>Fri, 21 Oct 2022 18:46:01 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part3 - Firebase 인증 서비스</title>
      <link>https://aries574.tistory.com/458</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part3-firebase-auth-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7iADK/btrOQpSqhwQ/313Vo6LtkXjZ6z8NvG0lnk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7iADK/btrOQpSqhwQ/313Vo6LtkXjZ6z8NvG0lnk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7iADK/btrOQpSqhwQ/313Vo6LtkXjZ6z8NvG0lnk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7iADK%2FbtrOQpSqhwQ%2F313Vo6LtkXjZ6z8NvG0lnk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part3-firebase-auth-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 세 번째 시간&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;회원가입 인증 서비스&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;만드는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/457&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.19 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part2 - 회원가입 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666267320526&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part2 - 회원가입 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 두 번째 시간 회원가입 액티비티 만드는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/457&quot; data-og-url=&quot;https://aries574.tistory.com/457&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cBnGNz/hyQapVAHT6/B1ko3owzeqLYKhOJBUXJj0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bklZRO/hyQayrszkW/skUnTyExqckfyP6yK8zFKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/457&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/457&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cBnGNz/hyQapVAHT6/B1ko3owzeqLYKhOJBUXJj0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bklZRO/hyQayrszkW/skUnTyExqckfyP6yK8zFKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part2 - 회원가입 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 두 번째 시간 회원가입 액티비티 만드는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;파이어베이스&amp;nbsp;설정 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;회원가입&amp;nbsp;SignUpActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432860943&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/jNgcQ/hyQbyxPrPu/IqIBGSXTMeUCZPI9evmfP1/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/MUeYQ/hyQanja4TU/pvOw3GqLAQnP8cPfrCzMj0/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432860943?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;파이어베이스&amp;nbsp;설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-1 &lt;a href=&quot;https://firebase.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://firebase.google.com/&lt;/a&gt; 접속&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;시작하기 버튼 클릭&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firbase1.JPG&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dXN7eo/btrOQn76ytW/CMNOwgKdSDTQl089WHahwK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dXN7eo/btrOQn76ytW/CMNOwgKdSDTQl089WHahwK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dXN7eo/btrOQn76ytW/CMNOwgKdSDTQl089WHahwK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXN7eo%2FbtrOQn76ytW%2FCMNOwgKdSDTQl089WHahwK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;694&quot; height=&quot;746&quot; data-filename=&quot;firbase1.JPG&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-2&amp;nbsp; 영문으로 프로젝트 이름을 입력하고 계속 버튼을 누릅니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project2.JPG&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJldr0/btrO92OtD1h/vikzWCMdr0Zy4I9AcO9cXK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJldr0/btrO92OtD1h/vikzWCMdr0Zy4I9AcO9cXK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJldr0/btrO92OtD1h/vikzWCMdr0Zy4I9AcO9cXK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJldr0%2FbtrO92OtD1h%2FvikzWCMdr0Zy4I9AcO9cXK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;780&quot; height=&quot;613&quot; data-filename=&quot;firebsae project2.JPG&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-3 계속버튼을 누릅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project3.JPG&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;795&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mdzAi/btrPbayB7Kk/ozAB00Sh4hq1Nhg3CmaAdK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mdzAi/btrPbayB7Kk/ozAB00Sh4hq1Nhg3CmaAdK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mdzAi/btrPbayB7Kk/ozAB00Sh4hq1Nhg3CmaAdK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmdzAi%2FbtrPbayB7Kk%2FozAB00Sh4hq1Nhg3CmaAdK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;836&quot; height=&quot;795&quot; data-filename=&quot;firebsae project3.JPG&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;795&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2-4 Google 애널리틱스 계정 선택 또는 만들기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project4.JPG&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnOxdT/btrPa4SVo7X/gXIkDjPZAXKOlqhhWXlih0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnOxdT/btrPa4SVo7X/gXIkDjPZAXKOlqhhWXlih0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnOxdT/btrPa4SVo7X/gXIkDjPZAXKOlqhhWXlih0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnOxdT%2FbtrPa4SVo7X%2FgXIkDjPZAXKOlqhhWXlih0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;871&quot; height=&quot;715&quot; data-filename=&quot;firebsae project4.JPG&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-5 계속버튼을 누르면 프로젝트가 생성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebsae project5.JPG&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pznzc/btrPbbxwQYb/fb22xLkcxf8gKGHtIdaoXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pznzc/btrPbbxwQYb/fb22xLkcxf8gKGHtIdaoXk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pznzc/btrPbbxwQYb/fb22xLkcxf8gKGHtIdaoXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPznzc%2FbtrPbbxwQYb%2Ffb22xLkcxf8gKGHtIdaoXk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;637&quot; height=&quot;573&quot; data-filename=&quot;firebsae project5.JPG&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-6 앱 만들기&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만들어진 프로젝트를 누르고 들어가면 앱 추가 버튼을 누릅니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 아이콘을 누르시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app1.JPG&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA7dtw/btrO78bMdgC/Vqgyqx0kzk8QBoRnJXCh6K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA7dtw/btrO78bMdgC/Vqgyqx0kzk8QBoRnJXCh6K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA7dtw/btrO78bMdgC/Vqgyqx0kzk8QBoRnJXCh6K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA7dtw%2FbtrO78bMdgC%2FVqgyqx0kzk8QBoRnJXCh6K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;676&quot; height=&quot;584&quot; data-filename=&quot;firebase app1.JPG&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-7 안드로이드 스튜디오에서 만든 패키지 이름을 입력하시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MainActivity 파일 맨 위에 package 옆의 이름을 복사해서 붙여 넣기 하시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bckH2x/btrPbaZGh6T/LdgHCxKDyCiY8x4sUpukCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bckH2x/btrPbaZGh6T/LdgHCxKDyCiY8x4sUpukCK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bckH2x/btrPbaZGh6T/LdgHCxKDyCiY8x4sUpukCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbckH2x%2FbtrPbaZGh6T%2FLdgHCxKDyCiY8x4sUpukCK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;788&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-8 google-services.json을 다운로드해서 app폴더 안에 넣으시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;780&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WZusu/btrPaNctN0n/hhWpeoz0GRbOcZ5KCLyDDK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WZusu/btrPaNctN0n/hhWpeoz0GRbOcZ5KCLyDDK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WZusu/btrPaNctN0n/hhWpeoz0GRbOcZ5KCLyDDK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWZusu%2FbtrPaNctN0n%2FhhWpeoz0GRbOcZ5KCLyDDK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;813&quot; height=&quot;780&quot; data-filename=&quot;firebase app2.JPG&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;780&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-9 build.gradle(프로젝트명) plugins 안에 코드를 입력하시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1666266635234&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;id 'com.google.gms.google-services' version '4.3.13' apply false&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app3.JPG&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/44JOJ/btrOQwqvjH9/paLa0VvK9NNuuqCuPATDn0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/44JOJ/btrOQwqvjH9/paLa0VvK9NNuuqCuPATDn0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/44JOJ/btrOQwqvjH9/paLa0VvK9NNuuqCuPATDn0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F44JOJ%2FbtrOQwqvjH9%2FpaLa0VvK9NNuuqCuPATDn0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;841&quot; height=&quot;773&quot; data-filename=&quot;firebase app3.JPG&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;773&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-10 build.gradle(module: 프로젝트명.app)에 아래 코드를 입력하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;인증 서비스 라이브러리도 같이 추가&lt;/p&gt;
&lt;pre id=&quot;code_1666266891076&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;implementation 'com.google.firebase:firebase-auth-ktx:21.1.0'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase2.JPG&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHjHrE/btrPa97wS8y/5CSPCcq1wt3Y7CFeC6cWT1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHjHrE/btrPa97wS8y/5CSPCcq1wt3Y7CFeC6cWT1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHjHrE/btrPa97wS8y/5CSPCcq1wt3Y7CFeC6cWT1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHjHrE%2FbtrPa97wS8y%2F5CSPCcq1wt3Y7CFeC6cWT1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;405&quot; data-filename=&quot;firebase2.JPG&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2-11 콘솔로 이동 버튼을 누르시면 앱에 Firebase 추가가 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;firebase app5.JPG&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzTiRo/btrPajC14Iu/7f6WeVA5oZiKVznNl6gAGk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzTiRo/btrPajC14Iu/7f6WeVA5oZiKVznNl6gAGk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzTiRo/btrPajC14Iu/7f6WeVA5oZiKVznNl6gAGk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzTiRo%2FbtrPajC14Iu%2F7f6WeVA5oZiKVznNl6gAGk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;745&quot; height=&quot;731&quot; data-filename=&quot;firebase app5.JPG&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-1341581400505483&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;회원가입&amp;nbsp;SignUpActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. mAuth:&amp;nbsp;FirebaseAuth&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 서비스 &lt;span style=&quot;color: #ee2323;&quot;&gt;객체&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. mAuth&amp;nbsp;=&amp;nbsp;Firebase.auth&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 서비스 &lt;span style=&quot;color: #ee2323;&quot;&gt;초기화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. signUp(email:&amp;nbsp;String,&amp;nbsp;password:&amp;nbsp;String)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;회원 가입 &lt;span style=&quot;color: #ee2323;&quot;&gt;등록&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. mAuth.createUserWithEmailAndPassword(email,&amp;nbsp;password)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;인증 서비스 신규 계정 등록 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 문서 사이트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://firebase.google.com/docs/auth/android/password-auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://firebase.google.com/docs/auth/android/password-auth&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666267154353&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Android에서 비밀번호 기반 계정으로 Firebase에 인증 &amp;nbsp;|&amp;nbsp; Firebase 인증&quot; data-og-description=&quot;2022년 10월 18일에 오프라인과 온라인으로 진행될 Firebase Summit에 참여하세요. Firebase로 앱을 빠르게 개발하고 안심하고 앱을 출시하며 손쉽게 확장하는 방법을 알아보세요. 지금 등록하기 의견 보&quot; data-og-host=&quot;firebase.google.com&quot; data-og-source-url=&quot;https://firebase.google.com/docs/auth/android/password-auth&quot; data-og-url=&quot;https://firebase.google.com/docs/auth/android/password-auth?hl=ko&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://firebase.google.com/docs/auth/android/password-auth&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://firebase.google.com/docs/auth/android/password-auth&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Android에서 비밀번호 기반 계정으로 Firebase에 인증 &amp;nbsp;|&amp;nbsp; Firebase 인증&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2022년 10월 18일에 오프라인과 온라인으로 진행될 Firebase Summit에 참여하세요. Firebase로 앱을 빠르게 개발하고 안심하고 앱을 출시하며 손쉽게 확장하는 방법을 알아보세요. 지금 등록하기 의견 보&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;firebase.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1666266921347&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class SignUpActivity : AppCompatActivity() {

    lateinit var binding: ActivitySignUpBinding

    lateinit var mAuth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySignUpBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //인증 초기화
        mAuth = Firebase.auth

        binding.signUpBtn.setOnClickListener {

            val email = binding.emailEdit.text.toString().trim()
            val password = binding.passwordEdit.text.toString().trim()

            signUp(email, password)
        }
    }

    /**
     * 회원 가입
     */
    private fun signUp(email: String, password: String){

        mAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task -&amp;gt;
                if (task.isSuccessful) {
                    // 성공시 실행
                    Toast.makeText(this, &quot;회원가입 성공&quot;, Toast.LENGTH_SHORT).show()
                    val intent: Intent = Intent(this@SignUpActivity, MainActivity::class.java)
                    startActivity(intent)
                } else {
                    // 실패시 실행
                    Toast.makeText(this, &quot;회원가입 실패&quot;, Toast.LENGTH_SHORT).show()
                    Log.d(&quot;SignUp&quot;, &quot;Error: ${task.exception}&quot;)
                }
            }
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666267170494&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&quot; data-og-description=&quot;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/455&quot; data-og-url=&quot;https://aries574.tistory.com/455&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yjZJ2/hyQbtce2sA/qcK25aWRtyKIhfBn88j2WK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bjkpKA/hyQawHaIrE/jdmxdTOvf3R5Ri4hrB3c10/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/455&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yjZJ2/hyQbtce2sA/qcK25aWRtyKIhfBn88j2WK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bjkpKA/hyQawHaIrE/jdmxdTOvf3R5Ri4hrB3c10/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666267192796&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i4uMc/hyQbptVP4E/XEfBjqskfyKrKeNwaCvf7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/CyAOj/hyQawtqAii/VBkDPMEgelnhuHaOJOtPL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i4uMc/hyQbptVP4E/XEfBjqskfyKrKeNwaCvf7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/CyAOj/hyQawtqAii/VBkDPMEgelnhuHaOJOtPL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666267200326&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkZAmN/hyQbu24QVF/ZZl9rNKAT7v1Mg2LjB7C0k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bmlk0G/hyQaz4KXa8/YQUsDYSmKpj2eqYwpKqUb0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bkvaYU/hyQbqM8AiC/CXjFkMSmb02UtAhEgVWGAk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkZAmN/hyQbu24QVF/ZZl9rNKAT7v1Mg2LjB7C0k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bmlk0G/hyQaz4KXa8/YQUsDYSmKpj2eqYwpKqUb0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bkvaYU/hyQbqM8AiC/CXjFkMSmb02UtAhEgVWGAk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=ePu-g7QPThk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bX3NBw/hyQbCtu3Ii/nmv3DD5kpZzq4PkvK1BA0K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/ePu-g7QPThk&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Firebase</category>
      <category>kotli</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/458</guid>
      <comments>https://aries574.tistory.com/458#entry458comment</comments>
      <pubDate>Thu, 20 Oct 2022 21:03:14 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part2 - 회원가입 액티비티</title>
      <link>https://aries574.tistory.com/457</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part2-signUpActivity-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rYp5z/btrOQtlmtuu/f74KW4WuVUpQJcgnEM0Aek/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rYp5z/btrOQtlmtuu/f74KW4WuVUpQJcgnEM0Aek/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rYp5z/btrOQtlmtuu/f74KW4WuVUpQJcgnEM0Aek/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrYp5z%2FbtrOQtlmtuu%2Ff74KW4WuVUpQJcgnEM0Aek%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part2-signUpActivity-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 두 번째 시간 &lt;span style=&quot;color: #ee2323;&quot;&gt;회원가입 액티비티&lt;/span&gt; 만드는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.18 - [안드로이드] - [안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666243903280&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&quot; data-og-description=&quot;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;백그라운드&amp;nbsp;drawable 4.&amp;nbsp;로그인&amp;nbsp;화면&amp;nbsp;LogInActivity 5.&amp;nbsp;홈&amp;nbsp;화면&amp;nbsp;변&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/456&quot; data-og-url=&quot;https://aries574.tistory.com/456&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b7tOJa/hyQbAWwWqB/qgpqnW3ljPGSKk1YHItKNk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/carv9h/hyQbzXCEGl/zC65Sx2VCT8hoMLfmwoYw0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/456&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/456&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b7tOJa/hyQbAWwWqB/qgpqnW3ljPGSKk1YHItKNk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/carv9h/hyQbzXCEGl/zC65Sx2VCT8hoMLfmwoYw0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 로그인 액티비티 만드는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;백그라운드&amp;nbsp;drawable 4.&amp;nbsp;로그인&amp;nbsp;화면&amp;nbsp;LogInActivity 5.&amp;nbsp;홈&amp;nbsp;화면&amp;nbsp;변&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;2. 회원가입 Activity &lt;/b&gt;&lt;br /&gt;&lt;b&gt;3. 로그인 LogInActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432823883&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cDLSFO/hyQbyKPYJc/NASKzvPRizsmwMfHKJGRIK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/hKgts/hyQfcWaWhs/nPOpVfQA0YOeUSgtUGHHIK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432823883?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 회원가입 Activity&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;app 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Activity -&amp;gt; Empty Activity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Activity name: SignUpActivity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;activity_sign_up.xml&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 앱 로고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;ImageView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 이름 입력&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 이메일 입력&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 패스워드 입력&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 회원가입&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666160190700&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.SignUpActivity&quot;&amp;gt;

    &amp;lt;ImageView
        android:id=&quot;@+id/logo_image&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;70dp&quot;
        android:src=&quot;@drawable/chat&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/name_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;50dp&quot;
        android:layout_below=&quot;@id/logo_image&quot;
        android:layout_marginLeft=&quot;20dp&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:layout_marginRight=&quot;20dp&quot;
        android:background=&quot;@drawable/edit_background&quot;
        android:hint=&quot;Name&quot;
        android:inputType=&quot;textEmailAddress&quot;
        android:paddingStart=&quot;15dp&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/email_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;50dp&quot;
        android:layout_below=&quot;@id/name_edit&quot;
        android:layout_marginLeft=&quot;20dp&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:layout_marginRight=&quot;20dp&quot;
        android:background=&quot;@drawable/edit_background&quot;
        android:hint=&quot;Email&quot;
        android:inputType=&quot;textEmailAddress&quot;
        android:paddingStart=&quot;15dp&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/password_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;50dp&quot;
        android:layout_below=&quot;@id/email_edit&quot;
        android:layout_marginLeft=&quot;20dp&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:layout_marginRight=&quot;20dp&quot;
        android:background=&quot;@drawable/edit_background&quot;
        android:hint=&quot;password&quot;
        android:inputType=&quot;numberPassword&quot;
        android:paddingStart=&quot;15dp&quot; /&amp;gt;

    &amp;lt;androidx.appcompat.widget.AppCompatButton
        android:id=&quot;@+id/signUp_btn&quot;
        android:layout_width=&quot;150dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/password_edit&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:background=&quot;@drawable/btn_background&quot;
        android:text=&quot;회원 가입&quot;
        android:textColor=&quot;@android:color/white&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;3. 로그인 LogInActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. binding:&amp;nbsp;ActivityLogInBinding&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;뷰 바인딩 &lt;span style=&quot;color: #ee2323;&quot;&gt;객체&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. binding&amp;nbsp;=&amp;nbsp;ActivityLogInBinding.inflate(layoutInflater)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;뷰 바인딩 객체 &lt;span style=&quot;color: #ee2323;&quot;&gt;초기화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. val&amp;nbsp;intent:&amp;nbsp;Intent&amp;nbsp;=&amp;nbsp;Intent(this@LogInActivity,&amp;nbsp;SignUpActivity::class.java)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;회원가입 Activity &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt; 객체 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. startActivity(intent)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;회원가입 Activity로 &lt;span style=&quot;color: #ee2323;&quot;&gt;이동&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666160337237&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class LogInActivity : AppCompatActivity() {

    lateinit var binding: ActivityLogInBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityLogInBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //회원가입 버튼 이벤트
        binding.signUpBtn.setOnClickListener {
            val intent: Intent = Intent(this@LogInActivity, SignUpActivity::class.java)
            startActivity(intent)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.14 - [안드로이드] - [안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666160517430&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&quot; data-og-description=&quot;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/455&quot; data-og-url=&quot;https://aries574.tistory.com/455&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w2lGc/hyQay5vzbU/UO7RerXakRFE5kXtpLLPk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bBumeL/hyQa2NVlZb/ReV7qN9iDah7SFXCNZn221/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/455&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/455&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w2lGc/hyQay5vzbU/UO7RerXakRFE5kXtpLLPk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bBumeL/hyQa2NVlZb/ReV7qN9iDah7SFXCNZn221/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 레이아웃에 텍스트뷰를 동적으로 생성하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/454&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.13 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666160521885&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환 하는 방법&quot; data-og-description=&quot;이번 시간에는 갤러리에서 가져온 여러 장의 사진을 을 앞 뒤로 넘겨서 보는 방법을 알아보겠습니다. 이전 프로젝트를 수정해서 만들게 되니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.12 - [안드&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/454&quot; data-og-url=&quot;https://aries574.tistory.com/454&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oYPm8/hyQbzQv9Xe/8aVbDaglKDc9zbC9kMFd3k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/454&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/454&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oYPm8/hyQbzQv9Xe/8aVbDaglKDc9zbC9kMFd3k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환 하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 가져온 여러 장의 사진을 을 앞 뒤로 넘겨서 보는 방법을 알아보겠습니다. 이전 프로젝트를 수정해서 만들게 되니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.12 - [안드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.11 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 선택한 사진 이미지 뷰(ImageView)에 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666160525828&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/452&quot; data-og-url=&quot;https://aries574.tistory.com/452&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/rdmLs/hyQfks9o0I/Y2c52RMAIJkomMXoDmOTnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/pq2lQ/hyQaqTWk7s/7nSPRcGglm3RaglpiXefl1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/452&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/rdmLs/hyQfks9o0I/Y2c52RMAIJkomMXoDmOTnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/pq2lQ/hyQaqTWk7s/7nSPRcGglm3RaglpiXefl1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=o95V26nzQzo&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bqFyWj/hyQbwGfzQB/LrtaCLKjDlZkgRJpxuVybk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/o95V26nzQzo&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/457</guid>
      <comments>https://aries574.tistory.com/457#entry457comment</comments>
      <pubDate>Wed, 19 Oct 2022 15:24:24 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 채팅앱 만드는 방법 part1 - 로그인 액티비티</title>
      <link>https://aries574.tistory.com/456</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-chatting-part1-logInActivity-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kJqyE/btrO0HRfLpS/YV5AfQFIp6ml08L1IwyAL0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kJqyE/btrO0HRfLpS/YV5AfQFIp6ml08L1IwyAL0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kJqyE/btrO0HRfLpS/YV5AfQFIp6ml08L1IwyAL0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkJqyE%2FbtrO0HRfLpS%2FYV5AfQFIp6ml08L1IwyAL0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-chatting-part1-logInActivity-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 채팅앱 만들기 첫 번째 시간 &lt;span style=&quot;color: #ee2323;&quot;&gt;로그인 액티비티&lt;/span&gt; 만드는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩&amp;nbsp; &lt;br /&gt;3.&amp;nbsp;백그라운드&amp;nbsp;drawable &lt;br /&gt;4.&amp;nbsp;로그인&amp;nbsp;화면&amp;nbsp;LogInActivity &lt;br /&gt;5.&amp;nbsp;홈&amp;nbsp;화면&amp;nbsp;변경&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432807335&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/b6778k/hyQa8NIiYg/W5uIVCC1wNREkswSKy5k5k/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/PlPyn/hyQa72i2nH/6RlSY6Sp0H4IILE2xzIcgK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432807335?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664864494006&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;백그라운드&amp;nbsp;drawable&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;res -&amp;gt; drawable 클릭 -&amp;gt; 마우스 오른쪽 -&amp;gt; new -&amp;gt; Drawable Resource File&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;edit_background.xml&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &amp;lt;corners android:&lt;span style=&quot;color: #ee2323;&quot;&gt;radius&lt;/span&gt;=&quot;20dp&quot; /&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;외곽선 둥글게&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;span style=&quot;color: #ee2323;&quot;&gt;stroke&lt;/span&gt; android:width=&quot;4dp&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;외곽선&lt;/span&gt; 굵기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. &lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;stroke&lt;/span&gt;&lt;span&gt; android:color=&quot;@color/greren&quot;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;외곽선&lt;/span&gt; 색상&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1666098409005&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;corners android:radius=&quot;20dp&quot; /&amp;gt;
    &amp;lt;stroke
        android:width=&quot;4dp&quot;
        android:color=&quot;@color/green&quot; /&amp;gt;
&amp;lt;/shape&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;btn_background.xml&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &amp;lt;&lt;span style=&quot;color: #ee2323;&quot;&gt;solid&lt;/span&gt;&amp;nbsp;android:color=&quot;@color/greren&quot;/&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;내부&lt;/span&gt; 색상&lt;/p&gt;
&lt;pre id=&quot;code_1666098427861&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;corners android:radius=&quot;15dp&quot;/&amp;gt;
    &amp;lt;solid android:color=&quot;@color/green&quot;/&amp;gt;
&amp;lt;/shape&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;res -&amp;gt; value -&amp;gt; colors.xml&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1666098856997&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;color name=&quot;green&quot;&amp;gt;#4CAF50&amp;lt;/color&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;로그인&amp;nbsp;화면&amp;nbsp;LogInActivity&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;app 선택 -&amp;gt; 마우스 오른쪽 클릭 -&amp;gt; New -&amp;gt; Activity -&amp;gt; Empty Activity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Activity name: LoginActivity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;activity_log_in.xml&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 앱 로고 &lt;span style=&quot;color: #ee2323;&quot;&gt;ImageView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 이메일 입력 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 패스워드 입력 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 로그인 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 회원가입 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. 이미지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;res -&amp;gt; drawable&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/xy5g6/btrOYIRpg7I/8eLKqfcKl1o4POtxUtuAnK/chat.png?attach=1&amp;amp;knm=img.png&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;chat.png&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1666098495054&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.LogInActivity&quot;&amp;gt;

    &amp;lt;ImageView
        android:id=&quot;@+id/logo_image&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;70dp&quot;
        android:src=&quot;@drawable/chat&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/email_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;50dp&quot;
        android:layout_below=&quot;@id/logo_image&quot;
        android:layout_marginLeft=&quot;20dp&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:layout_marginRight=&quot;20dp&quot;
        android:background=&quot;@drawable/edit_background&quot;
        android:hint=&quot;Email&quot;
        android:inputType=&quot;textEmailAddress&quot;
        android:paddingStart=&quot;15dp&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/password_edit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;50dp&quot;
        android:layout_below=&quot;@id/email_edit&quot;
        android:layout_marginLeft=&quot;20dp&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:layout_marginRight=&quot;20dp&quot;
        android:background=&quot;@drawable/edit_background&quot;
        android:hint=&quot;password&quot;
        android:inputType=&quot;numberPassword&quot;
        android:paddingStart=&quot;15dp&quot; /&amp;gt;

    &amp;lt;androidx.appcompat.widget.AppCompatButton
        android:id=&quot;@+id/login_btn&quot;
        android:layout_width=&quot;150dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/password_edit&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:background=&quot;@drawable/btn_background&quot;
        android:text=&quot;로그인&quot;
        android:textColor=&quot;@android:color/white&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;androidx.appcompat.widget.AppCompatButton
        android:id=&quot;@+id/signUp_btn&quot;
        android:layout_width=&quot;150dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/login_btn&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:background=&quot;@drawable/btn_background&quot;
        android:text=&quot;회원 가입&quot;
        android:textColor=&quot;@android:color/white&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;
&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;5.&amp;nbsp;홈&amp;nbsp;화면&amp;nbsp;변경&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AndroidManifest.xml&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 설명 -&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;MainActivity에 있는 &lt;span style=&quot;color: #ee2323;&quot;&gt;intent-filter&lt;/span&gt;를 LogInActivity로 옮겨준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;앱 실행 시 LogInActivity가 &lt;span style=&quot;color: #ee2323;&quot;&gt;홈 화면으로&lt;/span&gt; 보인다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1666098548140&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;        &amp;lt;activity
            android:name=&quot;.LogInActivity&quot;
            android:exported=&quot;true&quot;&amp;gt;
            &amp;lt;intent-filter&amp;gt;
                &amp;lt;action android:name=&quot;android.intent.action.MAIN&quot; /&amp;gt;

                &amp;lt;category android:name=&quot;android.intent.category.LAUNCHER&quot; /&amp;gt;
            &amp;lt;/intent-filter&amp;gt;
        &amp;lt;/activity&amp;gt;
        &amp;lt;activity
            android:name=&quot;.MainActivity&quot;
            android:exported=&quot;true&quot;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666160703957&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cVw4hS/hyQfbbTRXC/3dAMmJ9NG6GSJlOy5pkc8K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/V702g/hyQfaD3d1a/xXknKjEsCqMbnbajqSKVnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cVw4hS/hyQfbbTRXC/3dAMmJ9NG6GSJlOy5pkc8K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/V702g/hyQfaD3d1a/xXknKjEsCqMbnbajqSKVnk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666160709136&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MM42b/hyQffyAW1l/h7ap9riCjK5qZz4qXrZrx0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cAFMI4/hyQe78pAHq/1dfVgi8iRDQSeu9mkSaqYk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MM42b/hyQffyAW1l/h7ap9riCjK5qZz4qXrZrx0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cAFMI4/hyQe78pAHq/1dfVgi8iRDQSeu9mkSaqYk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666160720061&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QFo0U/hyP9mMoFBO/kEfG9WK0Onkbz0B208TK1K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/YGR6F/hyP9kgKOdU/WxApstRMK3ZT81Sef2CFQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QFo0U/hyP9mMoFBO/kEfG9WK0Onkbz0B208TK1K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/YGR6F/hyP9kgKOdU/WxApstRMK3ZT81Sef2CFQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Q47lLj4ErKs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/berOUL/hyQbptATgP/7tWM0HwxzH0W1FKtKM2Cpk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Q47lLj4ErKs&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>chat</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/456</guid>
      <comments>https://aries574.tistory.com/456#entry456comment</comments>
      <pubDate>Tue, 18 Oct 2022 22:20:26 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 텍스트뷰 TextView 동적으로 생성하는 방법</title>
      <link>https://aries574.tistory.com/455</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-dynamic-textView-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAj0gu/btrOw2QjXb5/q9cDzXHZgiGQM9i6gLTRYk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAj0gu/btrOw2QjXb5/q9cDzXHZgiGQM9i6gLTRYk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAj0gu/btrOw2QjXb5/q9cDzXHZgiGQM9i6gLTRYk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAj0gu%2FbtrOw2QjXb5%2Fq9cDzXHZgiGQM9i6gLTRYk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-dynamic-textView-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 레이아웃에 텍스트뷰를 &lt;span style=&quot;color: #ee2323;&quot;&gt;동적으로 생성&lt;/span&gt;하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩 &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432732674&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cQEQV2/hyP9kfLk3K/SOZbiKvEvazhVKkrzfa4xk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/dIK0FF/hyP9nKjnaR/XHkEBr941Glws7l5TdIKTK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432732674?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664864494006&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 텍스트뷰 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Layout&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 텍스트뷰 생성하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665719106179&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;!-- 텍스트뷰 보여줄 레이아웃 --&amp;gt;
    &amp;lt;LinearLayout
        android:id=&quot;@+id/listLayout&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;100dp&quot;
        android:background=&quot;#ACE6AE&quot;
        android:orientation=&quot;horizontal&quot;/&amp;gt;

    &amp;lt;!-- 텍스트뷰 생성 버튼--&amp;gt;
    &amp;lt;Button
        android:id=&quot;@+id/createBtn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_gravity=&quot;center&quot;
        android:layout_marginTop=&quot;10dp&quot;
        android:text=&quot;텍스트뷰 생성&quot;
        android:textSize=&quot;20sp&quot;/&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. val&amp;nbsp;textView:&amp;nbsp;TextView&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;(applicationContext)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;생성&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;text&amp;nbsp;&lt;/span&gt;=&amp;nbsp;&quot;텍스트&amp;nbsp;생성&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;글자&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;textSize&lt;/span&gt;&amp;nbsp;=&amp;nbsp;12f&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;글자 크기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;setTypeface&lt;/span&gt;(null,&amp;nbsp;Typeface.BOLD)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;글자 타입&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;id&amp;nbsp;&lt;/span&gt;=&amp;nbsp;0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;아이디&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. LinearLayout.&lt;span style=&quot;color: #ee2323;&quot;&gt;LayoutParams&lt;/span&gt;(width, height)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;레이아웃&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;7. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;layoutParams&lt;/span&gt;&amp;nbsp;=&amp;nbsp;param&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 레이아웃 &lt;span style=&quot;color: #ee2323;&quot;&gt;적용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;8. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;setBackgroundColor&lt;/span&gt;(Color.BLACK)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;배경 색상&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;9. textView.&lt;span style=&quot;color: #ee2323;&quot;&gt;setTextColor&lt;/span&gt;(Color.WHITE)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 &lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트 색상&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;10. binding.listLayout.&lt;span style=&quot;color: #ee2323;&quot;&gt;addView&lt;/span&gt;(textView)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;텍스트뷰 레이아웃에 &lt;span style=&quot;color: #ee2323;&quot;&gt;적용&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665719123562&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //텍스트뷰 생성 버튼
        binding.createBtn.setOnClickListener {
            //텍스트뷰 생성
            createTextView()
        }
    }//onCreate

    /**
     * 텍스트뷰 생성
     */
    private fun createTextView(){

        //1. 텍스트뷰 생성
        val textView: TextView = TextView(applicationContext)

        //2. 텍스트뷰 글자
        textView.text  = &quot;텍스트 생성&quot;

        //3. 텍스트뷰 글자 크기
        textView.textSize = 12f

        //4. 텍스트뷰 글자 타입
        textView.setTypeface(null, Typeface.BOLD)

        //5. 텍스트뷰 ID
        textView.id = 0

        //6. 레이아웃
        val param: LinearLayout.LayoutParams = LinearLayout
            .LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)

        param.leftMargin = 30

        //7. 레이아웃 적용
        textView.layoutParams = param

        //8. 텍스트뷰 배경 색상
        textView.setBackgroundColor(Color.BLACK)

        //9. 텍스트뷰 텍스트 색상
        textView.setTextColor(Color.WHITE)

        //10. 레이아웃에 텍스트뷰 추가
        binding.listLayout.addView(textView)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.11 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 선택한 사진 이미지 뷰(ImageView)에 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665719559987&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/452&quot; data-og-url=&quot;https://aries574.tistory.com/452&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mNJAq/hyP9uCGm8Q/Bnls1ArkFxgCmQ6bu4eV91/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mKE3A/hyP9rTvy9k/JndnwWTLTX3dRywOHQlnQ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/452&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mNJAq/hyP9uCGm8Q/Bnls1ArkFxgCmQ6bu4eV91/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mKE3A/hyP9rTvy9k/JndnwWTLTX3dRywOHQlnQ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665719564448&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cdash8/hyP9wUOeLW/6g0Oz6vIUbbqYK0FYonoKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cmJmka/hyP9xTILps/tO0kjbz7ujXeEkzGF7TVek/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cdash8/hyP9wUOeLW/6g0Oz6vIUbbqYK0FYonoKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cmJmka/hyP9xTILps/tO0kjbz7ujXeEkzGF7TVek/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665719569009&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgNPxO/hyP9uWZTyq/UxKPXhsqA1kn9ymft0hdAK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ccFoHk/hyP9wgcDie/dsqt77C5Hq27YiSovQb7Fk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/uiDli/hyP9lyYxLM/H5ng18voNKaO14cWNXfX2K/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgNPxO/hyP9uWZTyq/UxKPXhsqA1kn9ymft0hdAK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ccFoHk/hyP9wgcDie/dsqt77C5Hq27YiSovQb7Fk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/uiDli/hyP9lyYxLM/H5ng18voNKaO14cWNXfX2K/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=xwHZT3zOdcA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ItrgR/hyP9tX5BeH/a1UZIVSnq34FHzMMfbtyi0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/xwHZT3zOdcA&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Kotlin</category>
      <category>TextView</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/455</guid>
      <comments>https://aries574.tistory.com/455#entry455comment</comments>
      <pubDate>Fri, 14 Oct 2022 12:54:37 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 갤러리에서 다중 선택 사진 화면 전환 하는 방법</title>
      <link>https://aries574.tistory.com/454</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-gallery-multiple-image-change-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biQ2ua/btrOsdrhEoO/w71wS6XksIABu8AI5GtCS0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biQ2ua/btrOsdrhEoO/w71wS6XksIABu8AI5GtCS0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biQ2ua/btrOsdrhEoO/w71wS6XksIABu8AI5GtCS0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiQ2ua%2FbtrOsdrhEoO%2Fw71wS6XksIABu8AI5GtCS0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-gallery-multiple-image-change-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 가져온 여러 장의 사진을 을 &lt;span style=&quot;color: #ee2323;&quot;&gt;앞 뒤로 넘겨서&lt;/span&gt; 보는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 프로젝트를 수정해서 만들게 되니 이전 포스팅을 먼저 보시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/453&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.12 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 다중 선택 사진 RecycelrView 에 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665645673568&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 다중 선택 사진 RecycelrView 에 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 한 장이 아닌 여러 장의&amp;nbsp;사진을 선택해서 RecyclerView에 보여주는 방법을 알아보겠습니다. 이전 프로젝트에 추가하니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.11 - [안드로이드] - [&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/453&quot; data-og-url=&quot;https://aries574.tistory.com/453&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ruKLo/hyP8cQrtXC/Te0iZLIeqk3T0nuPDSu5i0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/d8HGj2/hyP77BAAfS/XWjUdlzeH1xAtIlNyPyDQ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/453&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/453&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ruKLo/hyP8cQrtXC/Te0iZLIeqk3T0nuPDSu5i0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/d8HGj2/hyP77BAAfS/XWjUdlzeH1xAtIlNyPyDQ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 다중 선택 사진 RecycelrView 에 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 한 장이 아닌 여러 장의&amp;nbsp;사진을 선택해서 RecyclerView에 보여주는 방법을 알아보겠습니다. 이전 프로젝트에 추가하니 이전 포스팅을 먼저 보시면 됩니다. 2022.10.11 - [안드로이드] - [&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432712486&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/eFwLs/hyP8aLRMxP/tJOdQRLbfv6VUF6kKItzI0/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/DhIQE/hyP9jApKYC/Afsv4VIXVhJhcYknCYNbRk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432712486?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 현재 이미지 위치 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 선택한 사진 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;ImageView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 이전 이미지 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 다음 이미지 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5.&amp;nbsp; 갤러리 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665645794240&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/positionText&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_alignParentTop=&quot;true&quot;
        android:layout_centerHorizontal=&quot;true&quot;
        android:textSize=&quot;20sp&quot;/&amp;gt;

    &amp;lt;ImageView
        android:id=&quot;@+id/imageView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;400dp&quot;
        android:layout_below=&quot;@id/positionText&quot;/&amp;gt;

    &amp;lt;RelativeLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_below=&quot;@id/imageView&quot;&amp;gt;

        &amp;lt;Button
            android:id=&quot;@+id/backBtn&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_alignParentStart=&quot;true&quot;
            android:layout_marginStart=&quot;10dp&quot;
            android:text=&quot;이전&quot;
            android:textSize=&quot;20sp&quot;/&amp;gt;

        &amp;lt;Button
            android:id=&quot;@+id/nextBtn&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_alignParentEnd=&quot;true&quot;
            android:layout_marginEnd=&quot;10dp&quot;
            android:text=&quot;다음&quot;
            android:textSize=&quot;20sp&quot;/&amp;gt;
    &amp;lt;/RelativeLayout&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/galleryBtn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_alignParentBottom=&quot;true&quot;
        android:text=&quot;사진첩 열기&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;


&amp;lt;/RelativeLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. var position = 0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이미지 &lt;span style=&quot;color: #ee2323;&quot;&gt;위치&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. showPosition(position:&amp;nbsp;String)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;현재 위치&lt;/span&gt; 텍스트뷰에 보여주는 함수&lt;/p&gt;
&lt;pre id=&quot;code_1665645816703&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

    var imageList: ArrayList&amp;lt;Uri&amp;gt; = ArrayList()

    var position = 0 //이미지 현재 위치

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //사진첩 호출 버튼 이벤트
        binding.galleryBtn.setOnClickListener {

            //갤러리 호출
            val intent = Intent(Intent.ACTION_PICK)
            intent.type = &quot;image/*&quot;
            //멀티 선택 기능
            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
            activityResult.launch(intent)
        }
        //이전 버튼 이벤트
        binding.backBtn.setOnClickListener {

            if(position &amp;gt; 0){
                position--
                //이미지 보여주기
                binding.imageView.setImageURI(imageList[position])
                // 현재 위치 보여주기
                showPosition(position.toString())
            }else{
                Toast.makeText(this, &quot;첫 이미지 입니다.&quot;, Toast.LENGTH_SHORT).show()
            }
        }

        //다음 버튼 이벤트
        binding.nextBtn.setOnClickListener {
            if(position &amp;lt; imageList.size-1){
                position++
                //이미지 보여주기
                binding.imageView.setImageURI(imageList[position])
                // 현재 위치 보여주기
                showPosition(position.toString())
            }else{
                Toast.makeText(this, &quot;마지막 이미지 입니다.&quot;, Toast.LENGTH_SHORT).show()
            }
        }

    }//onCreate

    //결과 가져오기
    private val activityResult: ActivityResultLauncher&amp;lt;Intent&amp;gt; = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()){

        //결과 코드 OK , 결가값 null 아니면
        if(it.resultCode == RESULT_OK){

            //멀티 선택은 clipData
            if(it.data!!.clipData != null){ //멀티 이미지

                //선택한 이미지 갯수
                val count = it.data!!.clipData!!.itemCount

                for(index in 0 until count){
                    //이미지 담기
                    val imageUri = it.data!!.clipData!!.getItemAt(index).uri
                    //이미지 추가
                    imageList.add(imageUri)

                    //첫 번째 이미지로 보여준다.
                    binding.imageView.setImageURI(imageList[0])
                    position = 0
                    showPosition(position.toString())
                }
            }else{ //싱글 이미지
                val imageUri = it.data!!.data
                binding.imageView.setImageURI(imageUri)
                position = 0
                showPosition(position.toString())
            }
        }
    }

    /**
     * 현재 위치 보여주는 함수
     */
    private fun showPosition(position: String){
        binding.positionText.text = position
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665645829922&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b55Feu/hyP9lrtveD/vwJRpoA9IdKCC7jzDHlHr1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/MqhaV/hyP9qGi8kS/qYLiQF6acqHkkd4YszCJZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b55Feu/hyP9lrtveD/vwJRpoA9IdKCC7jzDHlHr1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/MqhaV/hyP9qGi8kS/qYLiQF6acqHkkd4YszCJZK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665645834934&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YyshL/hyP9xZJyej/zOH0GRpkHVZcoya1O1tqV0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ZhNLW/hyP78N282J/a96J98KzURKGppT5P2PLA0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YyshL/hyP9xZJyej/zOH0GRpkHVZcoya1O1tqV0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ZhNLW/hyP78N282J/a96J98KzURKGppT5P2PLA0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665645841504&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/PYBzm/hyP71akgga/XDSgaPuQn0aBSu1PDXRrEk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/P5Txl/hyP9r6hNVD/Ff6feoG0WgJejOWklPBUkk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/PYBzm/hyP71akgga/XDSgaPuQn0aBSu1PDXRrEk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/P5Txl/hyP9r6hNVD/Ff6feoG0WgJejOWklPBUkk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=iUSAW5BDU4s&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bslTd4/hyP9vU9bvi/kdu5NDwZqqlpKyksGl3FJ0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/iUSAW5BDU4s&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Gallery</category>
      <category>imageview</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/454</guid>
      <comments>https://aries574.tistory.com/454#entry454comment</comments>
      <pubDate>Thu, 13 Oct 2022 16:29:09 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 갤러리에서 다중 선택 사진 RecycelrView 에 보여주는 방법</title>
      <link>https://aries574.tistory.com/453</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-gallery-multiple-imageView-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVzWX1/btrOqUwVUgF/Z2I4osZao51Z5zdCF4M9P0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVzWX1/btrOqUwVUgF/Z2I4osZao51Z5zdCF4M9P0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVzWX1/btrOqUwVUgF/Z2I4osZao51Z5zdCF4M9P0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVzWX1%2FbtrOqUwVUgF%2FZ2I4osZao51Z5zdCF4M9P0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-gallery-multiple-imageView-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 한 장이 아닌 &lt;span style=&quot;color: #ee2323;&quot;&gt;여러 장&lt;span style=&quot;color: #000000;&quot;&gt;의&lt;/span&gt;&lt;/span&gt;&amp;nbsp;사진을 선택해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;RecyclerView&lt;/span&gt;에 보여주는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 프로젝트에 추가하니 이전 포스팅을 먼저 보시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.11 - [안드로이드] - [안드로이드 코틀린] 갤러리에서 선택한 사진 이미지 뷰(ImageView)에 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665559677470&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/452&quot; data-og-url=&quot;https://aries574.tistory.com/452&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wSxwQ/hyP76Is6Rh/avbKawUjOL3XqaJUEgYsDK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/beEeL9/hyP753TXGT/qFTEMVKz4FPMAdHHoOSNLK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/452&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/452&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wSxwQ/hyP76Is6Rh/avbKawUjOL3XqaJUEgYsDK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/beEeL9/hyP753TXGT/qFTEMVKz4FPMAdHHoOSNLK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 갤러리에서 사진 선택하면 이미지 뷰에 보여주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행화면 2.&amp;nbsp;뷰&amp;nbsp;바인딩 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;item_layout.xml &lt;/b&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;GalleryAdapter.kt &lt;/b&gt;&lt;br /&gt;&lt;b&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;/b&gt;&lt;br /&gt;&lt;b&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432686956&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/X26QM/hyP76V047u/sY1vL0tIT1Nl4bkJMkGnOK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/cPOHUV/hyP709mswx/lgejCk49Pa3btKpD1amO0K/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432686956?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;item_layout.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 아이템 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Layout&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 선택한 사진 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;ImageView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665559793091&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;300dp&quot;
    android:layout_marginHorizontal=&quot;30dp&quot;
    android:layout_marginVertical=&quot;30dp&quot;&amp;gt;

    &amp;lt;ImageView
        android:id=&quot;@+id/galleryView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot; /&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;GalleryAdapter.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 아이템 화면과 데이터를 연결해주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Adapter&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. constructor(imageList:&amp;nbsp;ArrayList&amp;lt;Uri&amp;gt;,&amp;nbsp;context:&amp;nbsp;Context)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;생성자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;메인에서 데이터(&lt;span style=&quot;color: #ee2323;&quot;&gt;imageList&lt;/span&gt;)와 &lt;span style=&quot;color: #ee2323;&quot;&gt;Context&lt;/span&gt;를 받아온다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. onCreateViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;화면 설정&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. onBindViewHolder&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터 설정&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;Glide로 이미지를 보여준다.&lt;/p&gt;
&lt;pre id=&quot;code_1665559812834&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class GalleryAdapter(): RecyclerView.Adapter&amp;lt;GalleryAdapter.ViewHolder&amp;gt;(){

    lateinit var imageList: ArrayList&amp;lt;Uri&amp;gt;
    lateinit var context: Context

    /**
     * 생성자
     */
    constructor(imageList: ArrayList&amp;lt;Uri&amp;gt;, context: Context): this(){

        this.imageList = imageList
        this.context = context
    }

    /**
     * 화면 설정
     */
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {

        val inflater: LayoutInflater = LayoutInflater.from(parent.context)

        val view: View = inflater.inflate(R.layout.item_layout, parent, false)

        return ViewHolder(view)
    }

    /**
     * 데이터 설정
     */
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {

        Glide.with(context)
            .load(imageList[position]) //이미지 위치
            .into(holder.galleryView)//보여줄 위치
    }

    /**
     * 아이템 갯수
     */
    override fun getItemCount(): Int {

        return imageList.size
    }


    class ViewHolder(view: View): RecyclerView.ViewHolder(view){

        val galleryView: ImageView = view.findViewById(R.id.galleryView)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 갤러리 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 다중 선택한 이미지 보여줄 &lt;span style=&quot;color: #ee2323;&quot;&gt;RecyclerView&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665559828538&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/galleryBtn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_gravity=&quot;center&quot;
        android:text=&quot;사진첩 열기&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;


    &amp;lt;androidx.recyclerview.widget.RecyclerView
        android:id=&quot;@+id/recyclerView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot; /&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. intent.putExtra(Intent.&lt;span style=&quot;color: #ee2323;&quot;&gt;EXTRA_ALLOW_MULTIPLE&lt;/span&gt;,&amp;nbsp;true)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;intent 속성&lt;/span&gt;에 &lt;span style=&quot;color: #ee2323;&quot;&gt;다중 선택 옵션&lt;/span&gt; 추가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. it.data!!.&lt;span style=&quot;color: #ee2323;&quot;&gt;clipData&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;다중 선택 이미지&lt;/span&gt;는 clipData로 받아 온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. it.data!!.clipData!!.&lt;span style=&quot;color: #ee2323;&quot;&gt;getItemAt&lt;/span&gt;(index).uri&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;선택한 이미지를 &lt;span style=&quot;color: #ee2323;&quot;&gt;순서대로&lt;/span&gt; 가져온다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1665559844169&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

    lateinit var galleryAdapter: GalleryAdapter

    var imageList: ArrayList&amp;lt;Uri&amp;gt; = ArrayList()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //adapter 초기화
        galleryAdapter = GalleryAdapter(imageList, this)

        //recyclerView 설정
        binding.recyclerView.layoutManager = LinearLayoutManager(this)
        binding.recyclerView.adapter = galleryAdapter

        //버튼 이벤트
        binding.galleryBtn.setOnClickListener {

            //갤러리 호출
            val intent = Intent(Intent.ACTION_PICK)
            intent.type = &quot;image/*&quot;
            //멀티 선택 기능
            intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true)
            activityResult.launch(intent)
        }
    }//onCreate

    //결과 가져오기
    private val activityResult: ActivityResultLauncher&amp;lt;Intent&amp;gt; = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()){

            //결과 코드 OK , 결가값 null 아니면
            if(it.resultCode == RESULT_OK){

                //멀티 선택은 clipData
                if(it.data!!.clipData != null){ //멀티 이미지

                    //선택한 이미지 갯수
                   val count = it.data!!.clipData!!.itemCount

                    for(index in 0 until count){
                        //이미지 담기
                        val imageUri = it.data!!.clipData!!.getItemAt(index).uri
                        //이미지 추가
                        imageList.add(imageUri)
                    }
                }else{ //싱글 이미지
                    val imageUri = it.data!!.data
                        imageList.add(imageUri!!)
                }
                galleryAdapter.notifyDataSetChanged()
            }
        }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665559877492&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tR6Zh/hyP77tRXx2/zDo4qk45eKE9PWIwhrdbVK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bAKZ9S/hyP8aD7wLc/C6OcLsX9jerHOnBci4iLk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tR6Zh/hyP77tRXx2/zDo4qk45eKE9PWIwhrdbVK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bAKZ9S/hyP8aD7wLc/C6OcLsX9jerHOnBci4iLk0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665559882311&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/8N42V/hyP7YX0meM/F02kuN14TNwbYuA3bgFBmk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bxntvZ/hyP79kUshb/cm36xopFACKgKc9JfEJVA1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cOrHY6/hyP76uXeEi/aVra36lfKkjTzb25Lk9j31/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/8N42V/hyP7YX0meM/F02kuN14TNwbYuA3bgFBmk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bxntvZ/hyP79kUshb/cm36xopFACKgKc9JfEJVA1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cOrHY6/hyP76uXeEi/aVra36lfKkjTzb25Lk9j31/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665559887285&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AEgHj/hyP72zkbs8/PMIZJw1hTkhAUnngqfVXu0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/Y9g6a/hyP77ACX8w/vDDMc7i667ipbEegG7Unzk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AEgHj/hyP72zkbs8/PMIZJw1hTkhAUnngqfVXu0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/Y9g6a/hyP77ACX8w/vDDMc7i667ipbEegG7Unzk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=DQby60QPxZ4&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/mlc8o/hyP7YDHZ9I/dIlgIRwuiu6iOFP0WxBKs0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/DQby60QPxZ4&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Glide</category>
      <category>Kotlin</category>
      <category>multiple</category>
      <category>RecyclerView</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/453</guid>
      <comments>https://aries574.tistory.com/453#entry453comment</comments>
      <pubDate>Wed, 12 Oct 2022 16:46:49 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 갤러리에서 선택한 사진 이미지뷰(ImageView)에 보여주는 방법</title>
      <link>https://aries574.tistory.com/452</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-gallery-imageView-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFdN6I/btrOlLzKeaR/QuA8QCaL54sEFIjDLgw5u0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFdN6I/btrOlLzKeaR/QuA8QCaL54sEFIjDLgw5u0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFdN6I/btrOlLzKeaR/QuA8QCaL54sEFIjDLgw5u0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFdN6I%2FbtrOlLzKeaR%2FQuA8QCaL54sEFIjDLgw5u0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-gallery-imageView-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;갤러리&lt;/span&gt;에서 &lt;span style=&quot;color: #ee2323;&quot;&gt;사진&lt;/span&gt; 선택하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;이미지 뷰에&lt;/span&gt; 보여주는 방법에 대하여 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행화면 &lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩 &lt;br /&gt;3.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432657444&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/HmLux/hyP72ypTWz/JVTk8ZTVCS1OFdfKlfKaK1/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/bu9Bzz/hyP77T1GDT/2jV1yVkomKfn2OEJaWhOhk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432657444?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;뷰&amp;nbsp;바인딩&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664864494006&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;라이브러리&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'com.github.bumptech.glide:glide:4.14.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.14.1'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 갤러리에서 선택한 사진 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;ImageView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 갤러리 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665465408266&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;ImageView
        android:id=&quot;@+id/imageView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;300dp&quot;/&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/galleryBtn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_gravity=&quot;center&quot;
        android:text=&quot;사진첩 열기&quot;
        android:textSize=&quot;20sp&quot;/&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. Intent(Intent.ACTION_PICK)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;액션&lt;/span&gt; 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. intent.type&amp;nbsp;=&amp;nbsp;&quot;image/*&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;이미지 전체&lt;/span&gt; 가져오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. registerForActivityResult&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;활동으로부터 &lt;span style=&quot;color: #ee2323;&quot;&gt;결과&lt;/span&gt; 가져오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 참조 문서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/training/basics/intents/result?hl=ko#test&quot;&gt;https://developer.android.com/training/basics/intents/result?hl=ko#test&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1665465898365&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;활동에서 결과 가져오기 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;활동에서 결과 가져오기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 개발자 앱 내의 활동이든 다른 앱의 활동이든 다른 활동을 시작하는 것이 단방향 작&quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/training/basics/intents/result?hl=ko#test&quot; data-og-url=&quot;https://developer.android.com/training/basics/intents/result?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cubvgJ/hyP71TOHCN/IXoi0Wb3tSMFzKJvPLSJaK/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676&quot;&gt;&lt;a href=&quot;https://developer.android.com/training/basics/intents/result?hl=ko#test&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/training/basics/intents/result?hl=ko#test&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cubvgJ/hyP71TOHCN/IXoi0Wb3tSMFzKJvPLSJaK/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;활동에서 결과 가져오기 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;활동에서 결과 가져오기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 개발자 앱 내의 활동이든 다른 앱의 활동이든 다른 활동을 시작하는 것이 단방향 작&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1665465427231&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //버튼 이벤트
        binding.galleryBtn.setOnClickListener {

            //갤러리 호출
            val intent = Intent(Intent.ACTION_PICK)
            intent.type = &quot;image/*&quot;
            activityResult.launch(intent)
        }
    }//onCreate

    //결과 가져오기
    private val activityResult: ActivityResultLauncher&amp;lt;Intent&amp;gt; = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()){

            //결과 코드 OK , 결가값 null 아니면
            if(it.resultCode == RESULT_OK &amp;amp;&amp;amp; it.data != null){
                //값 담기
                val uri  = it.data!!.data

                //화면에 보여주기
                Glide.with(this)
                    .load(uri) //이미지
                    .into(binding.imageView) //보여줄 위치
            }
        }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665465904072&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iI9hZ/hyP6EeSuj7/JO0fcTU7RzQLECbpKsdKO0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bXIx8e/hyP7Zhoq25/fSOKJflkYzUjuWlUQg2WoK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iI9hZ/hyP6EeSuj7/JO0fcTU7RzQLECbpKsdKO0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bXIx8e/hyP7Zhoq25/fSOKJflkYzUjuWlUQg2WoK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665465913169&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/EXbVp/hyP6zq6z9n/BE2v9sn8UmWUAvbqF5Pk5k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/qVpaz/hyP8ba3JRl/yIgLn6b9A37vukpnTAoEVK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dSmFS0/hyP8apGB98/jRkqYlGD5RR8ncomCJIWfk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/EXbVp/hyP6zq6z9n/BE2v9sn8UmWUAvbqF5Pk5k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/qVpaz/hyP8ba3JRl/yIgLn6b9A37vukpnTAoEVK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dSmFS0/hyP8apGB98/jRkqYlGD5RR8ncomCJIWfk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665465918133&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eBfPm/hyP8b3cF0y/53UOP7MglckWOgYQ7HAsQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/hDfKK/hyP6B3xeC2/WvdRKIbpBRXemjf2ocDDak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eBfPm/hyP8b3cF0y/53UOP7MglckWOgYQ7HAsQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/hDfKK/hyP6B3xeC2/WvdRKIbpBRXemjf2ocDDak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=lrzzGFNIXsc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/zczVG/hyP8dGIrS8/koHCvuslMKlu9Biv7iYXS1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/lrzzGFNIXsc&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Gallery</category>
      <category>Glide</category>
      <category>imageview</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/452</guid>
      <comments>https://aries574.tistory.com/452#entry452comment</comments>
      <pubDate>Tue, 11 Oct 2022 14:26:36 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part3- 기능 구현(승리 체크)</title>
      <link>https://aries574.tistory.com/451</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-tic-tac-toe-part3-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD0825/btrOeRfKoG5/dvmhkywp6KKubZ9kopguxk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD0825/btrOeRfKoG5/dvmhkywp6KKubZ9kopguxk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD0825/btrOeRfKoG5/dvmhkywp6KKubZ9kopguxk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD0825%2FbtrOeRfKoG5%2Fdvmhkywp6KKubZ9kopguxk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-tic-tac-toe-part3-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 둘 중 하나가 &lt;span style=&quot;color: #ee2323;&quot;&gt;한 줄을 채우면 &lt;span style=&quot;color: #000000;&quot;&gt;이기거나,&lt;/span&gt;&lt;/span&gt; 둘 다 &lt;span style=&quot;color: #ee2323;&quot;&gt;못 채우면&lt;/span&gt; 무승부가 되는 &lt;span style=&quot;color: #ee2323;&quot;&gt;승리 체크&lt;/span&gt; 로직을 구현하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/450&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.07 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part2 - 기능 구현(클릭 이벤트)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666244019952&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part2 - 기능 구현(클릭 이벤트)&quot; data-og-description=&quot;이번 시간에는 번갈아 가면서 클릭하면 사용자 1은 X 표시 사용자 2는 O 표시하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.06 - [안드로이드] - [안드로이드 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/450&quot; data-og-url=&quot;https://aries574.tistory.com/450&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buU2Yi/hyQbwfwzd4/Xt1Jbb9mcFiWCFtlrv6aqk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/d6QLxD/hyQbEkk3sb/sF6K6yrDfnzLvL9nGb0lg0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/450&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/450&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buU2Yi/hyQbwfwzd4/Xt1Jbb9mcFiWCFtlrv6aqk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/d6QLxD/hyQbEkk3sb/sF6K6yrDfnzLvL9nGb0lg0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part2 - 기능 구현(클릭 이벤트)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 번갈아 가면서 클릭하면 사용자 1은 X 표시 사용자 2는 O 표시하는 방법을 알아보겠습니다. 이전 포스팅은 아래 링크를 들어가시면 됩니다. 2022.10.06 - [안드로이드] - [안드로이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432625530&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cX2iMM/hyP6C7VTNg/ILeusitTAoOyE40zE0kvl1/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/oNmaX/hyP4E0BkPR/TNYA7kGKM6KCsXxvE4MeEK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432625530?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. playAgain()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;게임 &lt;span style=&quot;color: #ee2323;&quot;&gt;초기화&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;클릭 횟수, 플레이어 차례, 버튼 표시 초기화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. updatePlayerScore()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;플레이어 승수 &lt;span style=&quot;color: #ee2323;&quot;&gt;업데이트&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;변경된 플레이어 승수 &lt;span style=&quot;color: #ee2323;&quot;&gt;화면&lt;/span&gt;에 &lt;span style=&quot;color: #ee2323;&quot;&gt;적용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. checkWinner()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;승리 &lt;span style=&quot;color: #ee2323;&quot;&gt;체크&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;플레이어가 입력한 위치와 승리 위치 &lt;span style=&quot;color: #ee2323;&quot;&gt;비교&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665368317062&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity(), View.OnClickListener {

    lateinit var binding: ActivityMainBinding

    //버튼 객체 담을 변수
    private val buttons = arrayOfNulls&amp;lt;Button&amp;gt;(9)

    //활성화 플레이어(true: p1 , false : p2)
    private var activityPlayer: Boolean = true

    private var p1ScoreCount = 0 //플레이어1 승수
    private var p2ScoreCount = 0 //플레이어2 승수
    private var roundCount = 0 // 클릭 갯수

    //클릭 한 버튼위치 들어갈 배열
    var gameState: IntArray = intArrayOf(2, 2, 2, 2, 2, 2, 2, 2, 2)

    //승리 위치
    var winningPosition: Array&amp;lt;IntArray&amp;gt; =
        arrayOf&amp;lt;IntArray&amp;gt;(
            intArrayOf(0, 1, 2),
            intArrayOf(3, 4, 5),
            intArrayOf(6, 7, 8),
            intArrayOf(0, 3, 6),
            intArrayOf(1, 4, 7),
            intArrayOf(2, 5, 8),
            intArrayOf(0, 4, 8),
            intArrayOf(2, 4, 6)
        )
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //순서 표시
        viewMode()

        //버튼 초기화
        for((index, item) in buttons.withIndex()){

            val buttonID = &quot;btn_${index}&quot;
            val resourceID = resources.getIdentifier(buttonID, &quot;id&quot;, packageName)
            buttons[index] = findViewById(resourceID)
            buttons[index]?.setOnClickListener(this)
        }

        //초기화 버튼
        binding.resetBtn.setOnClickListener {

            //게임 초기화
            playAgain()

            p1ScoreCount = 0
            p2ScoreCount = 0

            //승수 업데이트
            updatePlayerScore()
        }
    }//onCreate

    /**
     * 버튼 클릭 이벤트
     */
    override fun onClick(view: View?) {

        //이미 값이 있으면 리턴
        if((view as Button).text.toString() != &quot;&quot;){

            Toast.makeText(applicationContext, &quot;이미 체크됨&quot;, Toast.LENGTH_SHORT).show()
            return
        }

        //1. 버튼 ID 변수에 담기(예: btn_2)
        val buttonId = view.resources.getResourceEntryName(view.id)

        //2. 버튼 ID에서 숫자만 변수에 담기(예: 2)
        val gameStatePointer = buttonId.substring(buttonId.length-1, buttonId.length).toInt()

        //사용자 순서
        if((activityPlayer)){ //플레이어 1

            //텍스트 설정
            view.text = &quot;X&quot;

            //텍스트 색상 설정
            view.setTextColor(Color.parseColor(&quot;#FFC34A&quot;))

            //해당 위치에 0을 넣는다.
            gameState[gameStatePointer] = 0

        }else{ //플레이어2
            //텍스트 설정
            view.text = &quot;O&quot;

            //텍스트 색상 설정
            view.setTextColor(Color.parseColor(&quot;#70FFEA&quot;))

            //해당 위치에 0을 넣는다.
            gameState[gameStatePointer] = 1
        }

        roundCount++ //턴 수 올리기기

        //승리 체크
        if(checkWinner()){
            if(activityPlayer){//플레이어1이 승리
                p1ScoreCount++ //승수올리기
                updatePlayerScore() //승수 업데이트
                Toast.makeText(this, &quot;플레이어1 승리&quot;, Toast.LENGTH_SHORT).show()
                playAgain()//게임 초기화

            }else{//플레이어2 승리
                p2ScoreCount++ //승수올리기
                updatePlayerScore() //승수 업데이트
                Toast.makeText(this, &quot;플레이어2 승리&quot;, Toast.LENGTH_SHORT).show()
                playAgain()//게임 초기화
            }
        }else if(roundCount == 9){ //클릭 횟수 9개 채웠는데 승부가 안나면
            playAgain()//초기화
            Toast.makeText(this, &quot;무승부&quot;, Toast.LENGTH_SHORT).show()
        }else{ //계속 게임
            //순서 변경
            activityPlayer = !activityPlayer
        }

        //순서 표시
        viewMode()
    }

    /**
     * 순서 표시
     */
    private fun viewMode(){

        if(activityPlayer){
            binding.player1.setTextColor(Color.RED)
            binding.player2.setTextColor(Color.BLACK)
        }else{
            binding.player1.setTextColor(Color.BLACK)
            binding.player2.setTextColor(Color.RED)
        }
    }

    /**
     * 게임 초기화
     */
    private fun playAgain(){
        roundCount = 0 //클릭 횟수
        activityPlayer = true // 플레이어 순서

        //버튼 초기화
        for((index, item) in buttons.withIndex()){
            gameState[index] = 2
            buttons[index]?.text = &quot;&quot;
        }
    }

    /**
     * 승수 업데이트
     */
    private fun updatePlayerScore(){
        //화면에 승수 적용
        binding.player1Score.text = p1ScoreCount.toString()
        binding.player2Score.text = p2ScoreCount.toString()
    }

    /**
     * 승리 체크
     */
    private fun checkWinner(): Boolean{
        //결과
        var winnerResult = false

        for(winPosition in winningPosition){
            //승리위치 비교
            if(gameState[winPosition[0]] == gameState[winPosition[1]] &amp;amp;&amp;amp;
                gameState[winPosition[1]] == gameState[winPosition[2]] &amp;amp;&amp;amp;
                gameState[winPosition[0]] != 2){

                winnerResult = true
            }
        }
        return winnerResult
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665368586704&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/phpcU/hyP6tiQMS2/UdMiKy9Sax2i8rZydvs5n0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dEfay3/hyP6AbcDqv/zjyGoKYCNfUty5wBKx9ws0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bgMRvR/hyP4HC0j63/CD17PKzjDPvg0z3uvnBHwk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/phpcU/hyP6tiQMS2/UdMiKy9Sax2i8rZydvs5n0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dEfay3/hyP6AbcDqv/zjyGoKYCNfUty5wBKx9ws0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bgMRvR/hyP4HC0j63/CD17PKzjDPvg0z3uvnBHwk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665368591293&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dMxaC4/hyP6ou37v4/X5H62H6fRrqu4XK0COqZo0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/MLiy4/hyP6q0IMfc/VKm0Zhk5NFuMizUPK0k3P1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dMxaC4/hyP6ou37v4/X5H62H6fRrqu4XK0COqZo0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/MLiy4/hyP6q0IMfc/VKm0Zhk5NFuMizUPK0k3P1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665368595694&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkQk6R/hyP6vHJv5Y/zkMGk7BuUSCXwmNooL2RhK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/0Tc0L/hyP6EknPbv/XRnkK4VpaotikKlfArtdkk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkQk6R/hyP6vHJv5Y/zkMGk7BuUSCXwmNooL2RhK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/0Tc0L/hyP6EknPbv/XRnkK4VpaotikKlfArtdkk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=lcizqAvyoJE&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/piqoM/hyP4JOn1Yo/D3ClDtDl5Xzam6oahE0ja1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/lcizqAvyoJE&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>BoardGame</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/451</guid>
      <comments>https://aries574.tistory.com/451#entry451comment</comments>
      <pubDate>Mon, 10 Oct 2022 11:30:57 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part2 - 기능 구현(클릭 이벤트)</title>
      <link>https://aries574.tistory.com/450</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-tic-tac-toe-part2-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLe0bN/btrNZMtKBlQ/wH7BytKVm7FvZzxHHWAaTk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLe0bN/btrNZMtKBlQ/wH7BytKVm7FvZzxHHWAaTk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLe0bN/btrNZMtKBlQ/wH7BytKVm7FvZzxHHWAaTk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLe0bN%2FbtrNZMtKBlQ%2FwH7BytKVm7FvZzxHHWAaTk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-tic-tac-toe-part2-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 번갈아 가면서 클릭하면 &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 1은&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;X 표시&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 2는&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;O 표시하는&lt;/span&gt; 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.06 - [안드로이드] - [안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666243966302&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&quot; data-og-description=&quot;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/449&quot; data-og-url=&quot;https://aries574.tistory.com/449&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i4uMc/hyQbptVP4E/XEfBjqskfyKrKeNwaCvf7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/CyAOj/hyQawtqAii/VBkDPMEgelnhuHaOJOtPL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/449&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/449&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i4uMc/hyQbptVP4E/XEfBjqskfyKrKeNwaCvf7k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/CyAOj/hyQawtqAii/VBkDPMEgelnhuHaOJOtPL0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Tic Tac Toe 보드 게임의 화면 구성을 해보겠습니다. Tic Tac Toe 게임은 오목처럼 번갈아 가며 클릭을 해서 누가 먼저 한 줄을 만들면 이기는 단순한 게임입니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432555817&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/b8H2w4/hyP3Cm51pO/AQLwYnDw8YYtF34n1zPNt0/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/y2MU4/hyP3Ed8a4S/y7t2kxjco41IObQ43Nppyk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432555817?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &lt;span style=&quot;color: #000000;&quot;&gt;activityPlayer&lt;/span&gt;:&amp;nbsp;Boolean&amp;nbsp;=&amp;nbsp;true&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;활성화 플레이어&lt;/span&gt; true: 사용자 1, false: 사용자 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;클릭할 때마다 값이 변경된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. &lt;span style=&quot;color: #000000;&quot;&gt;buttons&lt;/span&gt;&amp;nbsp;=&amp;nbsp;arrayOfNulls&amp;lt;Button&amp;gt;(9)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;버튼 객체&lt;/span&gt; 담는 변수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. &lt;span style=&quot;color: #000000;&quot;&gt;p1ScoreCount&amp;nbsp;&lt;/span&gt;=&amp;nbsp;0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;사용자1 승수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. &lt;span style=&quot;color: #000000;&quot;&gt;p2ScoreCount&amp;nbsp;&lt;/span&gt;=&amp;nbsp;0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;사용자2 승수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. &lt;span style=&quot;color: #ee2323;&quot;&gt;roundCount&amp;nbsp;&lt;/span&gt;=&amp;nbsp;0&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;클릭&lt;/span&gt; 개수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. &lt;span style=&quot;color: #000000;&quot;&gt;gameState&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;클릭 한 버튼 위치&lt;/span&gt; 들어갈 배열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;7. winningPosition&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;승리 위치&lt;/span&gt; 값 담은 배열&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;8. viewMode()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;순서 표시&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;해당 순서인 사용자 &lt;span style=&quot;color: #ee2323;&quot;&gt;텍스트 빨강&lt;/span&gt;으로 변경&lt;/p&gt;
&lt;pre id=&quot;code_1665121193070&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity(), View.OnClickListener {

    lateinit var binding: ActivityMainBinding

    //버튼 객체 담을 변수
    private val buttons = arrayOfNulls&amp;lt;Button&amp;gt;(9)

    //활성화 플레이어 변수 (true: p1 , false: p2)
    private var activityPlayer: Boolean = true

    private var p1ScoreCount = 0 ///플레이어1 승수
    private var p2ScoreCount = 0 //플레이어2 승수
    private var roundCount = 0 //클릭 횟수

    //클릭 한 버튼 위치 들어갈 배열(9개)
    var gameState: IntArray = intArrayOf(2, 2, 2, 2, 2, 2, 2, 2, 2)

    //승리 위치
    var winningPosition: Array&amp;lt;IntArray&amp;gt; =
        arrayOf(
            intArrayOf(0, 1, 2),//가로
            intArrayOf(3, 4, 5),//가로
            intArrayOf(6, 7, 8),//가로
            intArrayOf(0, 3, 6),//세로
            intArrayOf(1, 4, 7),//세로
            intArrayOf(2, 5, 8),//세로
            intArrayOf(0, 4, 8),//대각선
            intArrayOf(2, 4, 6),//대각선
        )

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //순서 표시
        viewMode()

        //버튼 초기화
        for((index, item) in buttons.withIndex()){

            val buttonID = &quot;btn_${index}&quot;
            val resourceID = resources.getIdentifier(buttonID, &quot;id&quot;, packageName)
            buttons[index] = findViewById(resourceID)
            buttons[index]?.setOnClickListener(this)
        }
    }

    //순서 표시(빨강: 순서)
    private fun viewMode() {
        if(activityPlayer){ //p1
            binding.player1.setTextColor(Color.RED)
            binding.player2.setTextColor(Color.BLACK)
        }else{//p2
            binding.player1.setTextColor(Color.BLACK)
            binding.player2.setTextColor(Color.RED)
        }
    }

    /**
     * 클릭 이벤트
     */
    override fun onClick(view: View?) {

        //해당 버튼에 값이 있으면 리턴
        if((view as Button).text.toString() != &quot;&quot;){
            Toast.makeText(applicationContext, &quot;이미 체크됨&quot;, Toast.LENGTH_SHORT).show()
            return
        }

        //1. 버튼ID 변수에 담기(예: btn_2)
        val buttonId = view.resources.getResourceEntryName(view.id)

        //2. 버튼ID에서 숫자만 변수에 담기(예: 2)
        val gameStatePointer = buttonId.substring(buttonId.length-1, buttonId.length).toInt()

        //사용자 순서
        if(activityPlayer){ //p1
            //텍스트 설정
            view.text = &quot;X&quot;

            //텍스트 색상 설정
            view.setTextColor(Color.parseColor(&quot;#FFC34A&quot;))

            //해당 위치에 0을 넣는다.
            gameState[gameStatePointer] = 0
        }else{ //p2
            //텍스트 설정
            view.text = &quot;O&quot;

            //텍스트 색상 설정
            view.setTextColor(Color.parseColor(&quot;#70FFEA&quot;))

            //해당 위치에 1을 넣는다.
            gameState[gameStatePointer] = 1
        }
        // 순서 변경
        activityPlayer = !activityPlayer

        //순서 표시
        viewMode()
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665122018776&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWdyH1/hyP3D7offG/G90NIhWr1HMNKuRR0lUrGK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bhW86K/hyP3vnYIpz/rkkxHoLcK8IV1xklKwMsQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ba5SHN/hyP3G36EPj/NoJeXkcP1ZkDOYhhKU4Sb0/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWdyH1/hyP3D7offG/G90NIhWr1HMNKuRR0lUrGK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bhW86K/hyP3vnYIpz/rkkxHoLcK8IV1xklKwMsQK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/ba5SHN/hyP3G36EPj/NoJeXkcP1ZkDOYhhKU4Sb0/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665122024709&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bu5UMF/hyP3IOn2rp/kFe3hbxUL6oitor8WvTJc1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dyz1GH/hyP3ySw3aV/i4Avt2QO41MQF4dqQtSlQ1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bu5UMF/hyP3IOn2rp/kFe3hbxUL6oitor8WvTJc1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dyz1GH/hyP3ySw3aV/i4Avt2QO41MQF4dqQtSlQ1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665122043563&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cVJTIe/hyP3C8s3zI/0GdiQxQMuGLNNwODIKKne0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/el44Rk/hyP3BV15wI/wPlYbEYDlIukt4p0NSNJFK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cVJTIe/hyP3C8s3zI/0GdiQxQMuGLNNwODIKKne0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/el44Rk/hyP3BV15wI/wPlYbEYDlIukt4p0NSNJFK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=RFk-BiGPU5I&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/AIEH7/hyP3zYdzjt/Zb2cn0Pnm4qx3taiP8XRI0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/RFk-BiGPU5I&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>BoardGame</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/450</guid>
      <comments>https://aries574.tistory.com/450#entry450comment</comments>
      <pubDate>Fri, 7 Oct 2022 14:56:24 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] tic-tac-toe 보드게임 만드는 방법 part1 - 뷰 바인딩 및 화면구성</title>
      <link>https://aries574.tistory.com/449</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-tic-tac-toe-part1-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nZevg/btrNXsawZF2/Gb4lKRVt5qpm7UYvWVruK1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nZevg/btrNXsawZF2/Gb4lKRVt5qpm7UYvWVruK1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nZevg/btrNXsawZF2/Gb4lKRVt5qpm7UYvWVruK1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnZevg%2FbtrNXsawZF2%2FGb4lKRVt5qpm7UYvWVruK1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-tic-tac-toe-part1-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Tic Tac Toe&lt;/span&gt; 보드 게임의 화면 구성을 해보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tic Tac Toe 게임은 &lt;span style=&quot;color: #ee2323;&quot;&gt;오목&lt;/span&gt;처럼 번갈아 가며 클릭을 해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;누가 먼저 한 줄&lt;/span&gt;을 만들면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이기는 단순한 게임입니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;뷰 바인딩 &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432532851&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/WW7T0/hyP3CfBSpk/SAB44gq7UEVqt3LUdUY0gK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/VP3YY/hyP3A9VMN3/AuoaCzIW2KqMSdrdErWwqk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432532851?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;뷰바인딩&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664864494006&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. &lt;span style=&quot;color: #ee2323;&quot;&gt;플레이어&lt;/span&gt; 레이아웃&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;플레이어 이름과 승점으로 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;차례가 되면 플레이어 이름 빨간 표시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. &lt;span style=&quot;color: #ee2323;&quot;&gt;보드판&lt;/span&gt; 레이아웃&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;9개의 버튼&lt;/span&gt;으로 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;플레이어1은 X, 플레이어2는 O 모양을 표시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;먼저 한 줄&lt;/span&gt;을 만들면 &lt;span style=&quot;color: #ee2323;&quot;&gt;점수&lt;/span&gt; 획득&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 리셋 버튼을 누르면 &lt;span style=&quot;color: #ee2323;&quot;&gt;초기화&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1665042482361&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;!-- 플레이어 레이아웃 --&amp;gt;
    &amp;lt;RelativeLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/player1&quot;
            android:layout_width=&quot;150dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:gravity=&quot;center&quot;
            android:text=&quot;플레이어1&quot;
            android:textSize=&quot;25sp&quot; /&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/player1Score&quot;
            android:layout_width=&quot;150dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_below=&quot;@id/player1&quot;
            android:gravity=&quot;center&quot;
            android:text=&quot;0&quot;
            android:textSize=&quot;20sp&quot; /&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/player2&quot;
            android:layout_width=&quot;150dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_alignParentEnd=&quot;true&quot;
            android:gravity=&quot;center&quot;
            android:text=&quot;플레이어2&quot;
            android:textSize=&quot;25sp&quot; /&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/player2Score&quot;
            android:layout_width=&quot;150dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_below=&quot;@id/player2&quot;
            android:layout_alignParentEnd=&quot;true&quot;
            android:gravity=&quot;center&quot;
            android:text=&quot;0&quot;
            android:textSize=&quot;20sp&quot; /&amp;gt;
    &amp;lt;/RelativeLayout&amp;gt;

    &amp;lt;!-- 보드판 레이아웃 --&amp;gt;
    &amp;lt;GridLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:columnCount=&quot;3&quot;
        android:orientation=&quot;horizontal&quot;&amp;gt;

        &amp;lt;!-- 버튼0 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_0&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼1 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_1&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼2 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_2&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼3 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_3&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼4 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_4&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼5 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_5&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼6 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_6&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼7 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_7&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;

        &amp;lt;!-- 버튼8 --&amp;gt;
        &amp;lt;Button
            android:id=&quot;@+id/btn_8&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;100dp&quot;
            android:layout_columnWeight=&quot;1&quot;
            android:layout_margin=&quot;3dp&quot;
            android:backgroundTint=&quot;#413F43&quot;
            android:textColor=&quot;#ffffff&quot;
            android:textSize=&quot;60sp&quot;
            android:textStyle=&quot;bold&quot;/&amp;gt;
    &amp;lt;/GridLayout&amp;gt;

    &amp;lt;!-- 리셋 버튼 --&amp;gt;
    &amp;lt;Button
        android:id=&quot;@+id/resetBtn&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_margin=&quot;5dp&quot;
        android:backgroundTint=&quot;#E1470D&quot;
        android:text=&quot;RESET GAME&quot;
        android:textSize=&quot;25sp&quot;
        android:textStyle=&quot;bold&quot;/&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665042782858&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/PuqRY/hyP3z4fNdG/NO9K0zs4xt1avjFHdYBNLk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/c5S4Lq/hyP2ffhbwS/eqSb5FiW0v9kwWyys2mL7K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/eYaGI/hyP2fl2gME/2eNePRiY1NVeowIJbc6wGk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/PuqRY/hyP3z4fNdG/NO9K0zs4xt1avjFHdYBNLk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/c5S4Lq/hyP2ffhbwS/eqSb5FiW0v9kwWyys2mL7K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/eYaGI/hyP2fl2gME/2eNePRiY1NVeowIJbc6wGk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665042791503&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b8fmRK/hyP3vU5s0K/KSMaFzfGLXukCKxKdObIVk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cmrI0N/hyP3IfOMwn/Ts1WzxOXy3sfxeghSsrugk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b8fmRK/hyP3vU5s0K/KSMaFzfGLXukCKxKdObIVk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/cmrI0N/hyP3IfOMwn/Ts1WzxOXy3sfxeghSsrugk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1665042799248&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lxgOy/hyP3v1RgCM/phqk4JiJOae2VNqiIoSOKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bgCQk2/hyP2jBYts3/pXFrI7a0ktbDtrJ203zOvk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lxgOy/hyP3v1RgCM/phqk4JiJOae2VNqiIoSOKk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bgCQk2/hyP2jBYts3/pXFrI7a0ktbDtrJ203zOvk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=quGdmMSE3Ac&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bLQgHA/hyP2cv40Ph/R1mzT4WBvWujGJfc6GIj71/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/quGdmMSE3Ac&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/449</guid>
      <comments>https://aries574.tistory.com/449#entry449comment</comments>
      <pubDate>Thu, 6 Oct 2022 16:54:23 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part2 기능 구현</title>
      <link>https://aries574.tistory.com/448</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-countDownTimer-part2-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0bldb/btrNPjduE5F/jRZBToyKwxJkz89c8jOFbk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0bldb/btrNPjduE5F/jRZBToyKwxJkz89c8jOFbk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0bldb/btrNPjduE5F/jRZBToyKwxJkz89c8jOFbk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0bldb%2FbtrNPjduE5F%2FjRZBToyKwxJkz89c8jOFbk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-countDownTimer-part2-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 기능 구현&lt;/span&gt;을 만들어 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.04 - [안드로이드] - [안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1666244064451&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&quot; data-og-description=&quot;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/447&quot; data-og-url=&quot;https://aries574.tistory.com/447&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkZAmN/hyQbu24QVF/ZZl9rNKAT7v1Mg2LjB7C0k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bmlk0G/hyQaz4KXa8/YQUsDYSmKpj2eqYwpKqUb0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bkvaYU/hyQbqM8AiC/CXjFkMSmb02UtAhEgVWGAk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/447&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/447&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkZAmN/hyQbu24QVF/ZZl9rNKAT7v1Mg2LjB7C0k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bmlk0G/hyQaz4KXa8/YQUsDYSmKpj2eqYwpKqUb0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bkvaYU/hyQbqM8AiC/CXjFkMSmb02UtAhEgVWGAk/img.jpg?width=433&amp;amp;height=882&amp;amp;face=0_0_433_882');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 뷰 바인딩 설정과 타이머 화면 구성을 만들어 보겠습니다. &amp;nbsp;목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;뷰 바인딩 3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 1.&amp;nbsp;실행&amp;nbsp;화면 &amp;nbsp;1-1 설정 화면 1-2 타이머 화면 2.&amp;nbsp;뷰바..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 실행 화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432502507&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/MTx4x/hyP0BbYWS9/Pj6an1EM7mNwhVY6Z7Tqek/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/cYL8bf/hyP0AjP8G1/kofeHEKAZACKZS4Mi37JhK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432502507?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. viewMode(&quot;start&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 인자 값에 따른 &lt;span style=&quot;color: #ee2323;&quot;&gt;화면 설정&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- start면 &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 모드&lt;/span&gt; cancel이면 &lt;span style=&quot;color: #ee2323;&quot;&gt;설정 모드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. startStop()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #000000;&quot;&gt;-&lt;/span&gt; 실행&lt;/span&gt;/&lt;span style=&quot;color: #ee2323;&quot;&gt;정지&lt;/span&gt; 상태에 따른 &lt;span style=&quot;color: #ee2323;&quot;&gt;기능 함수&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp;- 실행 중이면 &lt;span style=&quot;color: #ee2323;&quot;&gt;정지&lt;/span&gt;, 정지면 &lt;span style=&quot;color: #ee2323;&quot;&gt;실행&lt;/span&gt; 함수 &lt;span style=&quot;color: #ee2323;&quot;&gt;호출&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. stopTimer()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 타이머 &lt;span style=&quot;color: #ee2323;&quot;&gt;정지&lt;/span&gt; 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 타이머 &lt;span style=&quot;color: #ee2323;&quot;&gt;취소&lt;/span&gt;, 타이머 상태 값 &lt;span style=&quot;color: #ee2323;&quot;&gt;변경&lt;/span&gt;, 정지 버튼 텍스트 &lt;span style=&quot;color: #ee2323;&quot;&gt;변경&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. updateTime()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;- 1초마다 &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 변경&lt;/span&gt;하는 함수&lt;/p&gt;
&lt;pre id=&quot;code_1664944837094&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

    lateinit var countDownTimer: CountDownTimer

    var timerRunning = false //타이머 실행 상태
    var firstState = false //타이머 실행 처음인지 아닌지

    var time = 0L //타이머 시간
    var tempTime = 0L //타이머 임시 시간

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        //시작 버튼
        binding.startBtn.setOnClickListener {

            viewMode(&quot;start&quot;)
            startStop()
        }

        //정지 버튼
        binding.stopBtn.setOnClickListener {
            startStop()
        }

        //취소 버튼
        binding.cancelBtn.setOnClickListener {
            viewMode(&quot;cancel&quot;)
            stopTimer()
        }
    }//onCreate

    private fun viewMode(mode: String){
        //상태: 처음
        firstState = true

        if(mode == &quot;start&quot;){ //타이머 모드
            binding.settingLayout.visibility = View.GONE //사라짐
            binding.timerLayout.visibility = View.VISIBLE//보여짐
        }
        else{ //설정 모드
            binding.settingLayout.visibility = View.VISIBLE //사라짐
            binding.timerLayout.visibility = View.GONE//보여짐
        }
    }

    /**
     * 타이머 실행 상태에 따른 시작&amp;amp;정지
     */
    private fun startStop(){
        if(timerRunning){ // 실행중이면 정지
            stopTimer()
        }else{ //정지면 실행
            startTimer()
        }
    }

    /**
     * 타이머 실행
     */
    private fun startTimer(){

        //처음 실행이면 입력값을 타이머 설정값으로 사용
        if(firstState){
            val sHour = binding.hourEdit.text.toString()
            val sMin = binding.minEdit.text.toString()
            val sSec = binding.secEdit.text.toString()

            time = (sHour.toLong() * 3600000) + (sMin.toLong() * 60000) +
                    (sSec.toLong() * 1000) + 1000
        }else{ //정지 후 이어서 시작이면 기존값 사용
            time = tempTime
        }

        //타이머 실행
        countDownTimer = object: CountDownTimer(time, 1000){
            override fun onTick(millisUnitFinished: Long) {
                tempTime = millisUnitFinished
                //타이머 업데이트
                updateTime()
            }
            override fun onFinish() {}
        }.start()

        //정지 버튼 텍스트
        binding.stopBtn.text = &quot;일시 정지&quot;
        //타이머 상태: 실행
        timerRunning = true
        //처음 아님
        firstState = false
    }

    /**
     * 타이머 정지
     */
    private fun stopTimer(){
        //타이머 취소
        countDownTimer.cancel()

        //타이머 상태: 정지
        timerRunning = false

        //정지버튼 텍스트
        binding.stopBtn.text = &quot;계속&quot;
    }

    /**
     * 타이머 업데이트
     */
    private fun updateTime(){
        val hour = tempTime / 3600000
        val min = tempTime % 3600000 / 60000
        val sec = tempTime % 3600000 % 60000 / 1000

        //시간 추가
        var timeLeftText = &quot;$hour :&quot;

        //분이 10보다 작으면 0 붙이기
        if(min &amp;lt; 10) timeLeftText += &quot;0&quot;

        //분 추가
        timeLeftText += &quot;$min :&quot;

        //초가 10보다 작으면 0 붙이기
        if(sec &amp;lt; 10) timeLeftText += &quot;0&quot;

        //초 추가
        timeLeftText += sec

        //타이머 텍스트 보여주기
        binding.timerText.text = timeLeftText
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664945112513&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/itVI7/hyP17G65f1/GeFrLuYQHEPtkwrrZJjWQ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/gKxE8/hyP2hbTBZT/NRqjIZCU6uDNegBd8GoUv0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/itVI7/hyP17G65f1/GeFrLuYQHEPtkwrrZJjWQ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/gKxE8/hyP2hbTBZT/NRqjIZCU6uDNegBd8GoUv0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664945117650&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bSqdGX/hyP0vQrDCR/l5WC7KFcKdbbN13NMRI6Ak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/2C7oL/hyP0zeapuj/n9WhuHFMXkkWRSCwtZCRak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bSqdGX/hyP0vQrDCR/l5WC7KFcKdbbN13NMRI6Ak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/2C7oL/hyP0zeapuj/n9WhuHFMXkkWRSCwtZCRak/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664945119661&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Ringtone 효과음 내는 방법&quot; data-og-description=&quot;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/440&quot; data-og-url=&quot;https://aries574.tistory.com/440&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfIDw7/hyP2bbFTmz/W057kB4l3MffmImFFTSdqk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/UDdoA/hyP2f6dqXd/5uZQiEN6KkvbAKLiwWkGF1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/440&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfIDw7/hyP2bbFTmz/W057kB4l3MffmImFFTSdqk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/UDdoA/hyP2f6dqXd/5uZQiEN6KkvbAKLiwWkGF1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=u6drZPEDuZ0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/0CrBO/hyP16g9wDk/JprOv6xK86y9DGQo8m9Ub0/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/u6drZPEDuZ0&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>CountDownTimer</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/448</guid>
      <comments>https://aries574.tistory.com/448#entry448comment</comments>
      <pubDate>Wed, 5 Oct 2022 13:51:29 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] CountDownTimer 타이머 쉽게 만드는 방법 part1 뷰 바인딩 및 화면 구성</title>
      <link>https://aries574.tistory.com/447</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-countDownTimer-part1-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baAzqg/btrNHUrW738/fYkBOVKu52cdnZe0zqJL80/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baAzqg/btrNHUrW738/fYkBOVKu52cdnZe0zqJL80/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baAzqg/btrNHUrW738/fYkBOVKu52cdnZe0zqJL80/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaAzqg%2FbtrNHUrW738%2FfYkBOVKu52cdnZe0zqJL80%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-countDownTimer-part1-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;뷰 바인딩&lt;/span&gt; 설정과 타이머 &lt;span style=&quot;color: #ee2323;&quot;&gt;화면 구성&lt;/span&gt;을 만들어 보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&amp;nbsp;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;/b&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;뷰 바인딩&lt;/b&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1-1 설정 화면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin timer setting.JPG&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;887&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bR6yOO/btrNM4mM5Ka/6enqg6lz0xbPqoF2IvE9r0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bR6yOO/btrNM4mM5Ka/6enqg6lz0xbPqoF2IvE9r0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bR6yOO/btrNM4mM5Ka/6enqg6lz0xbPqoF2IvE9r0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbR6yOO%2FbtrNM4mM5Ka%2F6enqg6lz0xbPqoF2IvE9r0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;427&quot; height=&quot;887&quot; data-filename=&quot;kotlin timer setting.JPG&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;887&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1-2 타이머 화면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin timer timer.JPG&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdAoME/btrNM5stfdg/PxeORy8qB6gDU0RzA6vCwk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdAoME/btrNM5stfdg/PxeORy8qB6gDU0RzA6vCwk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdAoME/btrNM5stfdg/PxeORy8qB6gDU0RzA6vCwk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdAoME%2FbtrNM5stfdg%2FPxeORy8qB6gDU0RzA6vCwk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;433&quot; height=&quot;882&quot; data-filename=&quot;kotlin timer timer.JPG&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;2.&amp;nbsp;뷰바인딩&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;android&lt;/span&gt; 괄호 안에 아래 코드를 넣어주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;findViewById&lt;/span&gt; 없이 뷰 객체 접근하기 위한 설정&lt;/p&gt;
&lt;pre id=&quot;code_1664863984069&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  buildFeatures{
        viewBinding = true
    }&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;br /&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 큰 틀은&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;설정 레이아웃&lt;/span&gt;과 &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 레이아웃&lt;/span&gt;으로 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 설정 레이아웃은 &lt;span style=&quot;color: #ee2323;&quot;&gt;시&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;분&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;초 입력&lt;/span&gt;과 &lt;span style=&quot;color: #ee2323;&quot;&gt;시작 버튼&lt;/span&gt;으로 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 타이머 레이아웃은 &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 텍스트&lt;/span&gt;와 &lt;span style=&quot;color: #ee2323;&quot;&gt;정지 버튼,&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;취소 버튼&lt;/span&gt;으로 구성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 첫 화면은 &lt;span style=&quot;color: #ee2323;&quot;&gt;설정 레이아웃&lt;/span&gt;을 보여주고, &lt;span style=&quot;color: #ee2323;&quot;&gt;시작 버튼&lt;/span&gt;을 누르면 &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 레이아웃&lt;/span&gt; 보여준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. &lt;span style=&quot;color: #ee2323;&quot;&gt;타이머 레이아웃&lt;/span&gt;은 &lt;span style=&quot;color: #ee2323;&quot;&gt;visibility&lt;/span&gt;=&quot;gone&quot; 옵션으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;숨김&lt;/span&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664864088278&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;!--  설정 레이아웃 --&amp;gt;
    &amp;lt;LinearLayout
        android:id=&quot;@+id/settingLayout&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;100dp&quot;
        android:orientation=&quot;vertical&quot;&amp;gt;

        &amp;lt;!-- 텍스트 레이아웃 --&amp;gt;
        &amp;lt;LinearLayout
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:gravity=&quot;center&quot;
            android:orientation=&quot;horizontal&quot;&amp;gt;

            &amp;lt;TextView
                android:layout_width=&quot;100dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:gravity=&quot;center&quot;
                android:text=&quot;시&quot;
                android:textSize=&quot;30sp&quot;
                android:textStyle=&quot;bold&quot; /&amp;gt;

            &amp;lt;TextView
                android:layout_width=&quot;100dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:gravity=&quot;center&quot;
                android:text=&quot;분&quot;
                android:textSize=&quot;30sp&quot;
                android:textStyle=&quot;bold&quot; /&amp;gt;

            &amp;lt;TextView
                android:layout_width=&quot;100dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:gravity=&quot;center&quot;
                android:text=&quot;초&quot;
                android:textSize=&quot;30sp&quot;
                android:textStyle=&quot;bold&quot; /&amp;gt;
        &amp;lt;/LinearLayout&amp;gt;
        &amp;lt;!-- 텍스트 레이아웃 End--&amp;gt;

        &amp;lt;!-- 입력 레이아웃 --&amp;gt;
        &amp;lt;LinearLayout
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginTop=&quot;10dp&quot;
            android:gravity=&quot;center&quot;
            android:orientation=&quot;horizontal&quot;&amp;gt;

            &amp;lt;EditText
                android:id=&quot;@+id/hourEdit&quot;
                android:layout_width=&quot;100dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:gravity=&quot;center&quot;
                android:inputType=&quot;number&quot;
                android:selectAllOnFocus=&quot;true&quot;
                android:text=&quot;00&quot;
                android:textSize=&quot;25sp&quot; /&amp;gt;

            &amp;lt;EditText
                android:id=&quot;@+id/minEdit&quot;
                android:layout_width=&quot;100dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:gravity=&quot;center&quot;
                android:inputType=&quot;number&quot;
                android:selectAllOnFocus=&quot;true&quot;
                android:text=&quot;00&quot;
                android:textSize=&quot;25sp&quot; /&amp;gt;

            &amp;lt;EditText
                android:id=&quot;@+id/secEdit&quot;
                android:layout_width=&quot;100dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:gravity=&quot;center&quot;
                android:inputType=&quot;number&quot;
                android:selectAllOnFocus=&quot;true&quot;
                android:text=&quot;00&quot;
                android:textSize=&quot;25sp&quot; /&amp;gt;
        &amp;lt;/LinearLayout&amp;gt;
        &amp;lt;!-- 입력 레이아웃 End --&amp;gt;

        &amp;lt;Button
            android:id=&quot;@+id/startBtn&quot;
            android:layout_width=&quot;100dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_gravity=&quot;center&quot;
            android:layout_marginTop=&quot;30dp&quot;
            android:text=&quot;시작&quot;
            android:textSize=&quot;25sp&quot; /&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;
    &amp;lt;!--  설정 레이아웃 End --&amp;gt;

    &amp;lt;!-- 타이머 레이아웃 --&amp;gt;
    &amp;lt;LinearLayout
        android:id=&quot;@+id/timerLayout&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;100dp&quot;
        android:gravity=&quot;center&quot;
        android:orientation=&quot;vertical&quot;
        android:visibility=&quot;gone&quot;&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/timerText&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:gravity=&quot;center&quot;
            android:text=&quot;00:00:00&quot;
            android:textSize=&quot;50sp&quot; /&amp;gt;

        &amp;lt;!-- 버튼 레이아웃 --&amp;gt;
        &amp;lt;LinearLayout
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginTop=&quot;50dp&quot;
            android:gravity=&quot;center&quot;
            android:orientation=&quot;horizontal&quot;&amp;gt;

            &amp;lt;Button
                android:id=&quot;@+id/stopBtn&quot;
                android:layout_width=&quot;150dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:text=&quot;일시 정지&quot;
                android:textSize=&quot;25sp&quot; /&amp;gt;

            &amp;lt;Button
                android:id=&quot;@+id/cancelBtn&quot;
                android:layout_width=&quot;150dp&quot;
                android:layout_height=&quot;wrap_content&quot;
                android:layout_marginStart=&quot;30dp&quot;
                android:text=&quot;취소&quot;
                android:textSize=&quot;25sp&quot; /&amp;gt;
        &amp;lt;/LinearLayout&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;
    &amp;lt;!-- 타이머 레이아웃 End --&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.10.03 - [안드로이드] - [안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664864353978&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&quot; data-og-description=&quot;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/445&quot; data-og-url=&quot;https://aries574.tistory.com/445&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/o5r9U/hyP0wVthLy/m8AaHwZpvZpdK2BjqR65nK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/DlB7z/hyP0J1yG38/kdBN3DXzKSj5XVprqaj6P0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/445&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/445&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/o5r9U/hyP0wVthLy/m8AaHwZpvZpdK2BjqR65nK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/DlB7z/hyP0J1yG38/kdBN3DXzKSj5XVprqaj6P0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 스톱워치(StopWatch) 만드는 방법에 대하여 알아보겠습니다. 안드로이드에서는 Chronometer을 통해 스톱워치를 쉽게 만들 수 있습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664864361052&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LlKGp/hyP0ysbw27/cuG8wYl7QaS5KX9t47BL90/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bfOSkI/hyP0LE5LXy/SFdQBFRbf4rko9puVOcLJ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LlKGp/hyP0ysbw27/cuG8wYl7QaS5KX9t47BL90/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bfOSkI/hyP0LE5LXy/SFdQBFRbf4rko9puVOcLJ0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.27 - [안드로이드] - [안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664864364245&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&quot; data-og-description=&quot;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/441&quot; data-og-url=&quot;https://aries574.tistory.com/441&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fgTIv/hyP0Cah73b/iJVp1DjUCVyPnahy2vrdpk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/XnlXI/hyP0yMs8QS/U67yDZcd0kuBUuY3Ue2mX1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/441&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fgTIv/hyP0Cah73b/iJVp1DjUCVyPnahy2vrdpk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/XnlXI/hyP0yMs8QS/U67yDZcd0kuBUuY3Ue2mX1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=RfSCJe1--MA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/Pnnxx/hyP0ElBJy7/2c7skP45OtSdJilOxynjEK/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/RfSCJe1--MA&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>countDwonTimer</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/447</guid>
      <comments>https://aries574.tistory.com/447#entry447comment</comments>
      <pubDate>Tue, 4 Oct 2022 15:22:32 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] 스톱워치 StopWatch 쉽게 만드는 방법</title>
      <link>https://aries574.tistory.com/445</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-stopWatch-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kRBRl/btrNCf3agYN/KIToKtVi20klDl9U6L9Ma1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kRBRl/btrNCf3agYN/KIToKtVi20klDl9U6L9Ma1/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kRBRl/btrNCf3agYN/KIToKtVi20klDl9U6L9Ma1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkRBRl%2FbtrNCf3agYN%2FKIToKtVi20klDl9U6L9Ma1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-stopWatch-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;스톱워치&lt;/span&gt;(StopWatch) 만드는 방법에 대하여 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드에서는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Chronometer&lt;/span&gt;을 통해 스톱워치를 쉽게 만들 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432451964&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/mAKj0/hyP0K58lmi/qqq8CWr5yXY7262E2a7jIk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/tQjBf/hyPY4kQQea/5HOZqmV1AgAkUKCtTm0KwK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432451964?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 스톱워치를 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Chronometer&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 스톱워치 시작하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. 스톱워치 정지하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 스톱워치 초기화하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664776211881&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;Chronometer
        android:id=&quot;@+id/chronometer&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:gravity=&quot;center_horizontal&quot;
        android:textSize=&quot;30sp&quot; /&amp;gt;

    &amp;lt;LinearLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;50dp&quot;
        android:gravity=&quot;center_horizontal&quot;
        android:orientation=&quot;horizontal&quot;&amp;gt;

        &amp;lt;Button
            android:id=&quot;@+id/startBtn&quot;
            android:layout_width=&quot;100dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:text=&quot;start&quot; /&amp;gt;

        &amp;lt;Button
            android:id=&quot;@+id/stopBtn&quot;
            android:layout_width=&quot;100dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginStart=&quot;20dp&quot;
            android:text=&quot;stop&quot; /&amp;gt;

        &amp;lt;Button
            android:id=&quot;@+id/resetBtn&quot;
            android:layout_width=&quot;100dp&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginStart=&quot;20dp&quot;
            android:text=&quot;reset&quot; /&amp;gt;
    &amp;lt;/LinearLayout&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. chronometer.&lt;span style=&quot;color: #ee2323;&quot;&gt;base&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;스톱워치 기본 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. SystemClock.&lt;span style=&quot;color: #ee2323;&quot;&gt;elapsedRealtime&lt;/span&gt;()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;부팅하고 이후 &lt;span style=&quot;color: #ee2323;&quot;&gt;시간&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. chronometer.&lt;span style=&quot;color: #ee2323;&quot;&gt;start&lt;/span&gt;()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;스톱워치 &lt;span style=&quot;color: #ee2323;&quot;&gt;시작&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. chronometer.&lt;span style=&quot;color: #ee2323;&quot;&gt;stop&lt;/span&gt;()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;스톱워치 &lt;span style=&quot;color: #ee2323;&quot;&gt;정지&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. viewMode(&lt;span style=&quot;color: #ee2323;&quot;&gt;mode&lt;/span&gt;:&amp;nbsp;String)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;버튼 &lt;span style=&quot;color: #ee2323;&quot;&gt;활성화&lt;/span&gt;/&lt;span style=&quot;color: #ee2323;&quot;&gt;비활성화&lt;/span&gt; 함수&lt;/p&gt;
&lt;pre id=&quot;code_1664776237503&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var startBtn: Button
    lateinit var stopBtn: Button
    lateinit var resetBtn: Button

    var running: Boolean = false // 상태
    var pauseTime = 0L //멈춤 시간

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val chronometer: Chronometer = findViewById(R.id.chronometer)
        startBtn = findViewById(R.id.startBtn)
        stopBtn = findViewById(R.id.stopBtn)
        resetBtn = findViewById(R.id.resetBtn)

        //화면 설정
        viewMode(&quot;stop&quot;)

        //시작 이벤트
        startBtn.setOnClickListener {

            //정지 상태일때만 실행
            if(!running){
                //기본 셋팅
                chronometer.base = SystemClock.elapsedRealtime() - pauseTime

                //시작
                chronometer.start()

                //화면 설정
                viewMode(&quot;start&quot;)
            }
        }

        //정지 이벤트
        stopBtn.setOnClickListener {

            //실행 상태일때만 실행
            if(running){
                //정지
                chronometer.stop()

                //정지 시간 저장
                pauseTime = SystemClock.elapsedRealtime() - chronometer.base

                //화면 설정
                viewMode(&quot;stop&quot;)
            }
        }

        //초기화 이벤트
        resetBtn.setOnClickListener {
            //기본 셋팅
            chronometer.base = SystemClock.elapsedRealtime()

            //정지 시간 초기화
            pauseTime = 0L

            //정지
            chronometer.stop()

            //화면 설정
            viewMode(&quot;stop&quot;)
        }

    }//onCreate

    //화면 설정
    private fun viewMode(mode: String){

        //활성화 처리
        if(mode == &quot;start&quot;){
            startBtn.isEnabled = false
            stopBtn.isEnabled = true
            resetBtn.isEnabled = true
            running = true
        }else{
            startBtn.isEnabled = true
            stopBtn.isEnabled = false
            resetBtn.isEnabled = false
            running = false
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.30 - [안드로이드] - [안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664776621607&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&quot; data-og-description=&quot;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/444&quot; data-og-url=&quot;https://aries574.tistory.com/444&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bF9oEe/hyPY8t0oQ9/RqmTYcpV9dGXEbXNK1z7zk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/sBKW6/hyP0KE4N3h/XYhKAxQO3gO8Fh2waFv78k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/444&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/444&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bF9oEe/hyPY8t0oQ9/RqmTYcpV9dGXEbXNK1z7zk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/sBKW6/hyP0KE4N3h/XYhKAxQO3gO8Fh2waFv78k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Glide 라이브러리를 이용해서 이미지 쉽게 보여주는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;권한&amp;nbsp;등록 3.&amp;nbsp;라이브러리&amp;nbsp;등록 4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;Main&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664776631114&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxhRCP/hyP0zQ6iqP/iyAVNjRwpO7cscS261FFR1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WpMJZ/hyP0vOG6Zf/1G8MjDX3FbS37TKllbhea0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxhRCP/hyP0zQ6iqP/iyAVNjRwpO7cscS261FFR1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/WpMJZ/hyP0vOG6Zf/1G8MjDX3FbS37TKllbhea0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.22 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664776638012&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&quot; data-og-description=&quot;이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;클래스&amp;nbsp;Item.kt 3.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 4.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ItemAdapte..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/438&quot; data-og-url=&quot;https://aries574.tistory.com/438&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bmAdlO/hyP0Ah92tE/t6ati4RL4m5uugCkmSsg9K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bJqGd0/hyP0B9c3k4/aBgPcLwfGHjJuan64i9Qgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/438&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bmAdlO/hyP0Ah92tE/t6ati4RL4m5uugCkmSsg9K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bJqGd0/hyP0B9c3k4/aBgPcLwfGHjJuan64i9Qgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;클래스&amp;nbsp;Item.kt 3.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 4.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ItemAdapte..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Pl2bqu9LReg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/egqPbX/hyP0wNBA4i/UcH8VmUpvajWNALTUvss8K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Pl2bqu9LReg&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Kotlin</category>
      <category>StopWatch</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/445</guid>
      <comments>https://aries574.tistory.com/445#entry445comment</comments>
      <pubDate>Mon, 3 Oct 2022 14:59:32 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] HTTP Glide 이미지 쉽게 보여주는 방법</title>
      <link>https://aries574.tistory.com/444</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-http-image-Glide-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FXHJn/btrNt4N2QrG/pz0kFeC2KAjQfmWxNAJ2cK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FXHJn/btrNt4N2QrG/pz0kFeC2KAjQfmWxNAJ2cK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FXHJn/btrNt4N2QrG/pz0kFeC2KAjQfmWxNAJ2cK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFXHJn%2FbtrNt4N2QrG%2Fpz0kFeC2KAjQfmWxNAJ2cK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-http-image-Glide-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Glide&lt;/span&gt; 라이브러리를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;이미지&lt;/span&gt; 쉽게 보여주는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;권한&amp;nbsp;등록 &lt;br /&gt;3.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432378695&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cjsnnH/hyPXL59bj7/DDZB4AOzv5SKvrlLH6UKmk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/chnP38/hyPXLLPcPg/AsGZqMLH2pCPvWtVO7NJSk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432378695?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;권한&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AndroidManifest.xml&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-1 권한 등록&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;manifest 태그 안에 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664513961805&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-2 http통신 허용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application 태그 안에 옵션을 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664513980213&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;android:usesCleartextTraffic=&quot;true&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;라이브러리&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'com.github.bumptech.glide:glide:4.14.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.14.1'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;참조 문서&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/bumptech/glide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/bumptech/glide&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664514104228&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling&quot; data-og-description=&quot;An image loading and caching library for Android focused on smooth scrolling - GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/bumptech/glide&quot; data-og-url=&quot;https://github.com/bumptech/glide&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/i1AnP/hyPXPm8VzN/fRIBOjDJKKHC4e6QDMByc0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/bumptech/glide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/bumptech/glide&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/i1AnP/hyPXPm8VzN/fRIBOjDJKKHC4e6QDMByc0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;An image loading and caching library for Android focused on smooth scrolling - GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. api 호출한 이미지 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;ImageView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. api 호출하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664514125326&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;ImageView
        android:id=&quot;@+id/imaegView&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;300dp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/searchBtn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_gravity=&quot;center&quot;
        android:layout_margin=&quot;30dp&quot;
        android:text=&quot;이미지 보여주기&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. with(&lt;span style=&quot;color: #ee2323;&quot;&gt;this&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;Context&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. .load(&lt;span style=&quot;color: #ee2323;&quot;&gt;url&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이미지 위치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. .placeholder(&lt;span style=&quot;color: #ee2323;&quot;&gt;R.drawable.frame)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이미지 로딩 시에 보여줄 이미지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. .error(&lt;span style=&quot;color: #ee2323;&quot;&gt;R.drawable.error&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;오류 발생 시에 보여줄 이미지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. .into(&lt;span style=&quot;color: #ee2323;&quot;&gt;imageView&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;이미지 보여줄 뷰&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 이미지 res -&amp;gt; drawable&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/boySr4/btrNsEP0Ml1/vw85yW8g5nfhvqdzb77jd1/error.png?attach=1&amp;amp;knm=img.png&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;error.png&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bja6mE/btrNqutNcTy/8xaRra47DNnVSGv8XMWmo1/frame.png?attach=1&amp;amp;knm=img.png&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;frame.png&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1664514158181&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var imageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        imageView = findViewById(R.id.imaegView)

        val searchBtn: Button = findViewById(R.id.searchBtn)
        searchBtn.setOnClickListener {

            //이미지 가져오기
            showImage()
        }
    }

    /**
     * 이미지 보여주기
     */
    private fun showImage(){

        val url = &quot;https://picsum.photos/200&quot;

        Glide.with(this)
            .load(url)//이미지 위치
            .placeholder(R.drawable.frame)//로딩 이미지
            .error(R.drawable.error)//에러 이미지
            .into(imageView)//보여줄 위치
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664514586331&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/D4hWd/hyPXNCSK6y/KJpN05rtzYzKw15CrsrPz0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bpZt10/hyPXPAIefY/TJmKZPPAOArg2PbXB0zJdK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/D4hWd/hyPXNCSK6y/KJpN05rtzYzKw15CrsrPz0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bpZt10/hyPXPAIefY/TJmKZPPAOArg2PbXB0zJdK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.27 - [안드로이드] - [안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664514590099&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&quot; data-og-description=&quot;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/441&quot; data-og-url=&quot;https://aries574.tistory.com/441&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buFcXI/hyPXL595a4/1wPRnzgPVTXsU7JxWdzhxK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/6ZdfA/hyPXIVRzfC/uJAIwsCKwq6XVN55f2Fehk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/441&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buFcXI/hyPXL595a4/1wPRnzgPVTXsU7JxWdzhxK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/6ZdfA/hyPXIVRzfC/uJAIwsCKwq6XVN55f2Fehk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664514593395&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Ringtone 효과음 내는 방법&quot; data-og-description=&quot;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/440&quot; data-og-url=&quot;https://aries574.tistory.com/440&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/uw1l6/hyPXK0s4SA/WAE2JiXrK59BnsImoFmYtK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/qs7e0/hyPXQGl2yG/132Gd0VgTTx93d2XVE7M5k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/440&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/uw1l6/hyPXK0s4SA/WAE2JiXrK59BnsImoFmYtK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/qs7e0/hyPXQGl2yG/132Gd0VgTTx93d2XVE7M5k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=E6q0uqskacw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/khgRk/hyPXJmXg43/Qzndjer0jg52UiJkEJYUJk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/E6q0uqskacw&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Glide</category>
      <category>http</category>
      <category>image</category>
      <category>Kotlin</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/444</guid>
      <comments>https://aries574.tistory.com/444#entry444comment</comments>
      <pubDate>Fri, 30 Sep 2022 14:11:16 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part2 - 화면 및 기능</title>
      <link>https://aries574.tistory.com/443</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-http-retrofit2-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGcqPm/btrNi512lFw/yLITCcbu5CEBaNokbvTjlk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGcqPm/btrNi512lFw/yLITCcbu5CEBaNokbvTjlk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGcqPm/btrNi512lFw/yLITCcbu5CEBaNokbvTjlk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGcqPm%2FbtrNi512lFw%2FyLITCcbu5CEBaNokbvTjlk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-http-retrofit2-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Retrofit2&lt;/span&gt; 라이브러리를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;HTTP&lt;/span&gt; 통신을 하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;화면&lt;/span&gt; 및&lt;span style=&quot;color: #ee2323;&quot;&gt; 기능&lt;/span&gt;을 구현하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅은 아래 링크를 들어가시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.28 - [안드로이드] - [안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664431129102&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정&quot; data-og-description=&quot;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/442&quot; data-og-url=&quot;https://aries574.tistory.com/442&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ukmPK/hyPWMYWkGu/9Utkqx7sWKtMVjR1cG2yt0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/MTQ2c/hyPWBC6oVI/FINaqVBsAqh6W2MNMybztK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/442&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/442&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ukmPK/hyPWMYWkGu/9Utkqx7sWKtMVjR1cG2yt0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/MTQ2c/hyPWBC6oVI/FINaqVBsAqh6W2MNMybztK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] HTTP 통신 Retrofit2 사용법 part1 - 권한 및 설정&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Retrofit2 라이브러리를 이용해서 HTTP 통신을 하는 방법을 알아보겠습니다. 이번 시간에는 권한 및 설정을 하겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;라이브러리&amp;nbsp;등록 3.&amp;nbsp;모델&amp;nbsp;클래스 4.&amp;nbsp;서비스&amp;nbsp;인터페&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432353108&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bsmywq/hyPWGj52Y6/Q0GdF2RMIpfzXS9337BfWK/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/dODP8R/hyPXNhBlNy/hMqK88fOw0OVmoi1B66vKk/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432353108?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. api 호출 데이터 값 보여주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;TextView&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 조회 코인 입력 &lt;span style=&quot;color: #ee2323;&quot;&gt;EditText&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. api 호출 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664430711757&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;TextView
        android:id=&quot;@+id/resultText&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;200dp&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

    &amp;lt;EditText
        android:id=&quot;@+id/coinEdit&quot;
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_marginTop=&quot;30dp&quot; /&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/searchBtn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:layout_gravity=&quot;center&quot;
        android:layout_marginTop=&quot;30dp&quot;
        android:text=&quot;조회&quot; /&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. val&amp;nbsp;retrofit:&amp;nbsp;Retrofit&amp;nbsp;=&amp;nbsp;Retrofit.&lt;span style=&quot;color: #ee2323;&quot;&gt;Builder&lt;/span&gt;()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;&amp;nbsp;retrofit2 객체&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. val&amp;nbsp;apiService:&amp;nbsp;ApiService&amp;nbsp;=&amp;nbsp;retrofit.create(ApiService::class.java)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;service 객체&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. val&amp;nbsp;tickerCall&amp;nbsp;=&amp;nbsp;apiService.getCoinTicker(coinNm,&amp;nbsp;&quot;KRW&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;Call객체&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. tickerCall.enqueue(object:&amp;nbsp;Callback&amp;lt;Ticker&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;네트워크 &lt;span style=&quot;color: #ee2323;&quot;&gt;통신&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;5. api 문서&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;a href=&quot;https://apidocs.bithumb.com/reference/현재가-정보-조회&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://apidocs.bithumb.com/reference/현재가-정보-조회&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664431061095&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;현재가 정보 조회 (자산별)&quot; data-og-description=&quot;현재가 정보 조회 (자산별)get https://api.bithumb.com/public/ticker/_요청 당시 빗썸 거래소 가상자산 현재가 정보를 제공합니다. 필드설명타입status결과 상태 코드 (정상: 0000, 그 외 에러 코드 참조)Stringop&quot; data-og-host=&quot;apidocs.bithumb.com&quot; data-og-source-url=&quot;https://apidocs.bithumb.com/reference/현재가-정보-조회&quot; data-og-url=&quot;https://apidocs.bithumb.com/reference/%ED%98%84%EC%9E%AC%EA%B0%80-%EC%A0%95%EB%B3%B4-%EC%A1%B0%ED%9A%8C&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://apidocs.bithumb.com/reference/현재가-정보-조회&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://apidocs.bithumb.com/reference/현재가-정보-조회&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;현재가 정보 조회 (자산별)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;현재가 정보 조회 (자산별)get https://api.bithumb.com/public/ticker/_요청 당시 빗썸 거래소 가상자산 현재가 정보를 제공합니다. 필드설명타입status결과 상태 코드 (정상: 0000, 그 외 에러 코드 참조)Stringop&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;apidocs.bithumb.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1664430724220&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    lateinit var coinEdit: EditText
    lateinit var resultText: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        coinEdit = findViewById(R.id.coinEdit)
        resultText = findViewById(R.id.resultText)
        val searchBtn: Button = findViewById(R.id.searchBtn)

        //버튼 클릭 이벤트
        searchBtn.setOnClickListener {
            //초기화
            resultText.text = &quot;&quot;

            //api 호출
            apiRequest()
        }
    }

    /**
     * HTTP api 호출
     */
    private fun apiRequest(){

        //1. retrofit 객체 생성
        val retrofit: Retrofit = Retrofit.Builder()
            .baseUrl(&quot;https://api.bithumb.com/&quot;)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

        //2. service 객체 생성
        val apiService: ApiService = retrofit.create(ApiService::class.java)

        //3. Call객체 생성
        val coinNm = coinEdit.text.toString().uppercase()//입력값, 대문자로
        val tickerCall = apiService.getCoinTicker(coinNm, &quot;KRW&quot;)

        //4. 네트워크 통신
        tickerCall.enqueue(object: Callback&amp;lt;Ticker&amp;gt;{
            override fun onResponse(call: Call&amp;lt;Ticker&amp;gt;, response: Response&amp;lt;Ticker&amp;gt;) {
                //호출 데이터
                val tickerInfo = response.body()

                resultText.append(&quot;status: ${tickerInfo?.status} \n&quot;)
                resultText.append(&quot;closing_price: ${tickerInfo?.data?.closing_price} \n&quot;)
                resultText.append(&quot;opening_price: ${tickerInfo?.data?.opening_price} \n&quot;)
                resultText.append(&quot;max_price: ${tickerInfo?.data?.max_price} \n&quot;)
                resultText.append(&quot;min_price: ${tickerInfo?.data?.min_price} \n&quot;)
            }

            override fun onFailure(call: Call&amp;lt;Ticker&amp;gt;, t: Throwable) {
                //오류 시 발생
                call.cancel()
            }
        })
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.27 - [안드로이드] - [안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664430970128&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&quot; data-og-description=&quot;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/441&quot; data-og-url=&quot;https://aries574.tistory.com/441&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SUE8E/hyPXH2KPse/CJrCKGgDXP1QrwqOINSbN0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/wPbiJ/hyPWzedJ2z/JPyy8shdSzV6CuQn3ArTi1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/441&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SUE8E/hyPXH2KPse/CJrCKGgDXP1QrwqOINSbN0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/wPbiJ/hyPWzedJ2z/JPyy8shdSzV6CuQn3ArTi1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664430974383&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Ringtone 효과음 내는 방법&quot; data-og-description=&quot;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/440&quot; data-og-url=&quot;https://aries574.tistory.com/440&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/coHU7u/hyPWGdlQhE/VGAeY5QmUbLYdq1ZSJJGc1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mMHUX/hyPXMJKGWq/oH5jYxme1hBDqhT65zg6lK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/440&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/coHU7u/hyPWGdlQhE/VGAeY5QmUbLYdq1ZSJJGc1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/mMHUX/hyPXMJKGWq/oH5jYxme1hBDqhT65zg6lK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.22 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664430978724&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&quot; data-og-description=&quot;이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;클래스&amp;nbsp;Item.kt 3.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 4.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ItemAdapte..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/438&quot; data-og-url=&quot;https://aries574.tistory.com/438&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfqEX0/hyPXO8GbNr/7X7nQYOCxdTGW4z0zJTkGK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dkc0CD/hyPXNhBx1w/b0NE9Hjl1gNHZpKBHPHG51/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/438&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfqEX0/hyPXO8GbNr/7X7nQYOCxdTGW4z0zJTkGK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/dkc0CD/hyPXNhBx1w/b0NE9Hjl1gNHZpKBHPHG51/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;클래스&amp;nbsp;Item.kt 3.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 4.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ItemAdapte..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=YKV1a1YkuKE&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/NDYWN/hyPWIoG3eS/G3iz7hjYrVGNq6bskdAC5K/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/YKV1a1YkuKE&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>http</category>
      <category>Kotlin</category>
      <category>RETROFIT</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/443</guid>
      <comments>https://aries574.tistory.com/443#entry443comment</comments>
      <pubDate>Thu, 29 Sep 2022 14:58:23 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] HTTP 통신  Retrofit2 사용법 part1 - 권한 및 설정</title>
      <link>https://aries574.tistory.com/442</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-http-retrofit-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7FI77/btrNeG199yX/a5yyA20Xo0DzIxhlXkEiAK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7FI77/btrNeG199yX/a5yyA20Xo0DzIxhlXkEiAK/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7FI77/btrNeG199yX/a5yyA20Xo0DzIxhlXkEiAK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7FI77%2FbtrNeG199yX%2Fa5yyA20Xo0DzIxhlXkEiAK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-http-retrofit-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Retrofit2&lt;/span&gt; 라이브러리를 이용해서 &lt;span style=&quot;color: #ee2323;&quot;&gt;HTTP&lt;/span&gt; 통신을 하는 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;권한&lt;/span&gt; 및 &lt;span style=&quot;color: #ee2323;&quot;&gt;설정&lt;/span&gt;을 하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;권한&amp;nbsp;등록 &lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록 &lt;br /&gt;3.&amp;nbsp;모델&amp;nbsp;클래스 &lt;br /&gt;4.&amp;nbsp;서비스&amp;nbsp;인터페이스&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;권한&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AndroidManifest.xml&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-1 권한 등록&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;manifest 태그 안에 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664352509387&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-2 http통신 허용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;application 태그 안에 옵션을 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1664352566786&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;android:usesCleartextTraffic=&quot;true&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;라이브러리&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;build.gradle(Module:프로젝트명:app)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;dependencies&amp;nbsp;괄호&amp;nbsp;안에&amp;nbsp;아래&amp;nbsp;코드를&amp;nbsp;넣어주시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;converter-gson: 호출해서 받은 json타입을 모델 클래스에 넣어주는 일을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;retrofit: Retrofit을 사용하기 위한 필수 라이브러리입니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1646031627122&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;모델&amp;nbsp;클래스&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;b&gt;3-1 호출받을 데이터&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1664352879204&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
	&quot;status&quot;:&quot;0000&quot;,
	&quot;data&quot;:{
		&quot;opening_price&quot;:&quot;41990&quot;,
		&quot;closing_price&quot;:&quot;39250&quot;,
		&quot;min_price&quot;:&quot;38850&quot;,
		&quot;max_price&quot;:&quot;42040&quot;,
		&quot;units_traded&quot;:&quot;286216.39811369&quot;,
		&quot;acc_trade_value&quot;:&quot;11540564673.1119&quot;,
		&quot;prev_closing_price&quot;:&quot;42000&quot;,
		&quot;units_traded_24H&quot;:&quot;599231.9692916&quot;,
		&quot;acc_trade_value_24H&quot;:&quot;24648790492.2505&quot;,
		&quot;fluctate_24H&quot;:&quot;-2070&quot;,
		&quot;fluctate_rate_24H&quot;:&quot;-5.01&quot;,
		&quot;date&quot;:&quot;1664333725925&quot;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3-2 Ticker.kt&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. status: &lt;span style=&quot;color: #ee2323;&quot;&gt;status&lt;/span&gt; 받을 변수.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. data: &lt;span style=&quot;color: #ee2323;&quot;&gt;data&lt;/span&gt;안의 데이터를 받을 변수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. &lt;span style=&quot;color: #ee2323;&quot;&gt;이름&lt;/span&gt;을 &lt;span style=&quot;color: #ee2323;&quot;&gt;같게&lt;/span&gt; 해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. 변수명 위에 &lt;span style=&quot;color: #ee2323;&quot;&gt;@SerializedName&lt;/span&gt;(&quot;opening_price&quot;) 같이 하면 변수명을 똑같이 하지 않아도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5. 언더바 뒤에 첫 글자를 대문자로 변경하면 @SerializedName을 안해도 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;예: opening_price -&amp;gt; openingPrice&lt;/p&gt;
&lt;pre id=&quot;code_1664352926635&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class Ticker(

    val status: String,
    val data: Data
)&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3-3 Data.kt&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;data&lt;/span&gt; 안의 &lt;span style=&quot;color: #ee2323;&quot;&gt;키값&lt;span style=&quot;color: #000000;&quot;&gt;과 같은 이름으로 정해야 합니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664352948164&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;data class Data(
    val opening_price: String,
    val closing_price: String,
    val min_price: String,
    val max_price: String
)&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;4.&amp;nbsp;서비스&amp;nbsp;인터페이스&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 호출할 api 정보로 만든 함수가 있는 인터페이스&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. @GET(&quot;public/ticker/{order_currency}_{payment_currency}&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;GET방식으로 통신하며, { } 안에는 경로를 동적으로 호출하고 싶을 때 필요합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;공통 url 주소는 실제 이 함수를 호출할 때 지정합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. api 문서: &lt;a href=&quot;https://apidocs.bithumb.com/reference/현재가-정보-조회&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://apidocs.bithumb.com/reference/현재가-정보-조회&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;실제 호출 api : &lt;a href=&quot;https://api.bithumb.com/public/ticker/ETC_KRW&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.bithumb.com/public/ticker/ETC_KRW&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664353198437&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;interface ApiService {

    @GET(&quot;public/ticker/{order_currency}_{payment_currency}&quot;)
    fun getCoinTicker(
        @Path(&quot;order_currency&quot;) orderCurrency: String,
        @Path(&quot;payment_currency&quot;) paymentCurrency: String
    ): Call&amp;lt;Ticker&amp;gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.27 - [안드로이드] - [안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664353579946&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&quot; data-og-description=&quot;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/441&quot; data-og-url=&quot;https://aries574.tistory.com/441&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FZNnV/hyPWGKunfX/elFAYAYSZxwBJgYZya8Jgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/v26hI/hyPWHij8F8/DKEMFOiPa5KsK45kAk30l1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/441&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FZNnV/hyPWGKunfX/elFAYAYSZxwBJgYZya8Jgk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/v26hI/hyPWHij8F8/DKEMFOiPa5KsK45kAk30l1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Vibrator 진동 효과 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 진동으로 알림 효과 내는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;권한&amp;nbsp;등록 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;권한&amp;nbsp;등록 - 설명 - &amp;nbsp;진동 효과를 내기..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664353587902&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Ringtone 효과음 내는 방법&quot; data-og-description=&quot;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/440&quot; data-og-url=&quot;https://aries574.tistory.com/440&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/za1cI/hyPWCVABJE/Gx83d5giQ1u8E7CZht5UQk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/z3p9b/hyPWzR66cP/vBWsTbkysMU5cEDJtYYUmK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/440&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/za1cI/hyPWCVABJE/Gx83d5giQ1u8E7CZht5UQk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/z3p9b/hyPWzR66cP/vBWsTbkysMU5cEDJtYYUmK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/439&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.23 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 삭제하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664353594843&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] RecyclerView 다중 선택 삭제하는 방법&quot; data-og-description=&quot;이번 시간에는 다중 선택에 이어서 다중 삭제하는 방법에 대하여 알아보겠습니다. 이전 포스팅에 이어서 하니 아래 포스팅을 먼저 보시고 오시면 됩니다. 2022.09.22 - [안드로이드] - [안드로이드 &quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/439&quot; data-og-url=&quot;https://aries574.tistory.com/439&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/l2ZUV/hyPWGKuoc5/mjE21YTUofgOulIroHmRE1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/gpUBq/hyPWIhe06g/94xkyToH5fBBx9o7qT2JfK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/439&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/439&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/l2ZUV/hyPWGKuoc5/mjE21YTUofgOulIroHmRE1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/gpUBq/hyPWIhe06g/94xkyToH5fBBx9o7qT2JfK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] RecyclerView 다중 선택 삭제하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 다중 선택에 이어서 다중 삭제하는 방법에 대하여 알아보겠습니다. 이전 포스팅에 이어서 하니 아래 포스팅을 먼저 보시고 오시면 됩니다. 2022.09.22 - [안드로이드] - [안드로이드&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=UnfhKoYLQpI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/iPZHO/hyPWBWIhiW/21yuFsqk66yfSZZfDCQ9Lk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;600&quot; data-video-height=&quot;338&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/UnfhKoYLQpI&quot; width=&quot;600&quot; height=&quot;338&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>http</category>
      <category>Kotlin</category>
      <category>retrofit2</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/442</guid>
      <comments>https://aries574.tistory.com/442#entry442comment</comments>
      <pubDate>Wed, 28 Sep 2022 17:35:21 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Vibrator 진동 효과 내는 방법</title>
      <link>https://aries574.tistory.com/441</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-vibrator-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbLAbO/btrM6KKw4Gs/kGNILqWZscbDOFE1L8OKhk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbLAbO/btrM6KKw4Gs/kGNILqWZscbDOFE1L8OKhk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbLAbO/btrM6KKw4Gs/kGNILqWZscbDOFE1L8OKhk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbLAbO%2FbtrM6KKw4Gs%2FkGNILqWZscbDOFE1L8OKhk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-vibrator-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;진동&lt;/span&gt;으로 &lt;span style=&quot;color: #ee2323;&quot;&gt;알림 효과&lt;/span&gt; 내는 방법에 대하여 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;권한&amp;nbsp;등록 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;권한&amp;nbsp;등록&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;진동 효과를 내기 위해서는 권한을 등록해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;application&lt;/span&gt; 태그 위에 입력하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;manifests&amp;nbsp;-&amp;gt;&amp;nbsp;AndroidManifest.xml&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664251194008&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; &amp;lt;uses-permission android:name=&quot;android.permission.VIBRATE&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 진동 기능 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664251250400&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:gravity=&quot;center&quot;
    android:orientation=&quot;vertical&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/vibBtn&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:text=&quot;진동&quot;
        android:textSize=&quot;20sp&quot; /&amp;gt;

&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. getSystemService(&lt;span style=&quot;color: #ee2323;&quot;&gt;VIBRATOR_SERVICE&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;진동 &lt;span style=&quot;color: #ee2323;&quot;&gt;객체&lt;/span&gt; 가져오기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. if(Build.VERSION.SDK_INT&amp;nbsp;&amp;gt;=&amp;nbsp;Build.&lt;span style=&quot;color: #ee2323;&quot;&gt;VERSION_CODES.O&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;안드로이드 &lt;span style=&quot;color: #ee2323;&quot;&gt;버전 8&lt;/span&gt; 기준으로 진동 기능 구현이 달라집니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. VibrationEffect.&lt;span style=&quot;color: #ee2323;&quot;&gt;createOneShot&lt;/span&gt;(500,&amp;nbsp;VibrationEffect.DEFAULT_AMPLITUDE)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;진동 시간&lt;/span&gt;과 &lt;span style=&quot;color: #ee2323;&quot;&gt;진동 세기&lt;/span&gt;를 조절할 수 있습니다. 진동 세기는 1 ~ 255 정할 수도 있습니다.&amp;nbsp;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664251270984&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val vibBtn: Button = findViewById(R.id.vibBtn)
        vibBtn.setOnClickListener {
            //진동
            showVibrator()
        }
    }

    //진동 이벤트
    private fun showVibrator(){

        val vibrator = getSystemService(VIBRATOR_SERVICE) as Vibrator

        //버전 오레오, 그 이상(안드로이드 8)
        if(Build.VERSION.SDK_INT &amp;gt;= Build.VERSION_CODES.O){
            //진동시간, 세기 설정(0.5초, 기본세기)
            vibrator.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE))
        }else{ //오레오 이하
            //0.5초동안 울림
            vibrator.vibrate(500)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.26 - [안드로이드] - [안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664251734570&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] Ringtone 효과음 내는 방법&quot; data-og-description=&quot;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/440&quot; data-og-url=&quot;https://aries574.tistory.com/440&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/HmI9F/hyPWzXHp6x/b8MEZMJtiiLp6rKnA2I6K0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/4AIJE/hyPWMvYla2/YBiRlfgLUTlMUm4EkoBXW1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/440&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/440&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/HmI9F/hyPWzXHp6x/b8MEZMJtiiLp6rKnA2I6K0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/4AIJE/hyPWMvYla2/YBiRlfgLUTlMUm4EkoBXW1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] Ringtone 효과음 내는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 소리로 알림을 알려주는 방법에 대하여 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/437&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.21 - [안드로이드] - [안드로이드 코트린] SharedPreferences 간단한 데이터 저장하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664251743137&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코트린] SharedPreferences  간단한 데이터 저장하는 방법&quot; data-og-description=&quot;이번 시간에는 앱에서 아이디, 패스워드를 한번 입력하면 나중에 들어왔을 때 정보가 사라지지 않는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainA&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/437&quot; data-og-url=&quot;https://aries574.tistory.com/437&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5kaen/hyPVowIfSD/mu2GccjkDRLZ1RCQJ5ww5K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/h6s6f/hyPVjCakp5/fb09OleqAdSnS3x6GQLPfK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/437&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/437&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5kaen/hyPVowIfSD/mu2GccjkDRLZ1RCQJ5ww5K/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/h6s6f/hyPVjCakp5/fb09OleqAdSnS3x6GQLPfK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코트린] SharedPreferences 간단한 데이터 저장하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 앱에서 아이디, 패스워드를 한번 입력하면 나중에 들어왔을 때 정보가 사라지지 않는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainA&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/436&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.20 - [안드로이드] - [안드로이드 코틀린] 코드(MainActivity)에서 배경 색상 바꾸는 다양한 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664251747739&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] 코드(MainActivity) 에서 배경 색상 바꾸는 다양한 방법&quot; data-og-description=&quot;이번 시간에는 코드(MainActivity)에서 텍스트뷰 색상을 다양하게 변경하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/436&quot; data-og-url=&quot;https://aries574.tistory.com/436&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c2RzY8/hyPWLcK0Rw/B4npPrxXkhAOUHqB8YkZtK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bdnVlF/hyPWHg7WwB/2bHHR8LnnCMoglibiEEOuK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/436&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/436&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c2RzY8/hyPWLcK0Rw/B4npPrxXkhAOUHqB8YkZtK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bdnVlF/hyPWHg7WwB/2bHHR8LnnCMoglibiEEOuK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] 코드(MainActivity) 에서 배경 색상 바꾸는 다양한 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 코드(MainActivity)에서 텍스트뷰 색상을 다양하게 변경하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;&amp;nbsp;MainActivity.kt 1.&amp;nbsp;실행&amp;nbsp;화..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=aK9dbS2HOag&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cu2LU1/hyPWNBDNPv/VCFE5GzkzYkQ1CkuLVkX01/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/aK9dbS2HOag&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Kotlin</category>
      <category>VIBRATOR</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/441</guid>
      <comments>https://aries574.tistory.com/441#entry441comment</comments>
      <pubDate>Tue, 27 Sep 2022 13:10:12 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드 코틀린] Ringtone 효과음 내는 방법</title>
      <link>https://aries574.tistory.com/440</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kotlin-ringtone-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/APKxT/btrM7osEXXR/L5iPXudeF72yynZ1BIgKt0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/APKxT/btrM7osEXXR/L5iPXudeF72yynZ1BIgKt0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/APKxT/btrM7osEXXR/L5iPXudeF72yynZ1BIgKt0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAPKxT%2FbtrM7osEXXR%2FL5iPXudeF72yynZ1BIgKt0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;400&quot; data-filename=&quot;kotlin-ringtone-blog.webp&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 &lt;span style=&quot;color: #ee2323;&quot;&gt;소리&lt;/span&gt;로 &lt;span style=&quot;color: #ee2323;&quot;&gt;알림&lt;/span&gt;을 알려주는 방법에 대하여 알아보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목차&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면 &lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml &lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1.&amp;nbsp;실행&amp;nbsp;화면&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/432278113&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/biw4RK/hyPVeAaZYa/G3wKNVsxeNbpbYSXVYfQI1/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340,https://scrap.kakaocdn.net/dn/bH2TRW/hyPVe7ZKlk/Zu81bVvd3TZcjP6gSvAKZ1/img.jpg?width=1080&amp;amp;height=2340&amp;amp;face=0_0_1080_2340&quot; data-video-width=&quot;300&quot; data-video-height=&quot;650&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1863&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-play-service=&quot;daum_tistory&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/432278113?service=daum_tistory&quot; width=&quot;300&quot; height=&quot;650&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. 시스템 효과음 들려주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. 사용자 정의 효과음 들려주는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Button&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664184696563&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;
    android:orientation=&quot;vertical&quot;
    android:gravity=&quot;center&quot;
    tools:context=&quot;.MainActivity&quot;&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/systemBtn&quot;
        android:layout_width=&quot;150dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:text=&quot;시스템 소리&quot;
        android:textSize=&quot;20sp&quot;
        android:onClick=&quot;getSound&quot;/&amp;gt;

    &amp;lt;Button
        android:id=&quot;@+id/customBtn&quot;
        android:layout_width=&quot;150dp&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:text=&quot;사용자 소리&quot;
        android:textSize=&quot;20sp&quot;
        android:onClick=&quot;getSound&quot;/&amp;gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;

&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;br /&gt;3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainActivity.kt&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 설명 -&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;1. RingtoneManager.getDefaultUri&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;소리 &lt;span style=&quot;color: #ee2323;&quot;&gt;얻기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;2. RingtoneManager.getRingtone&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;소리 &lt;span style=&quot;color: #ee2323;&quot;&gt;담기&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3. ringtone.play()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 소리 &lt;span style=&quot;color: #ee2323;&quot;&gt;실행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;4. MediaPlayer.create&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;사용자 정의&lt;/span&gt; 음악 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;5.&amp;nbsp; &lt;span style=&quot;color: #ee2323;&quot;&gt;음악 폴더&lt;/span&gt; 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;res -&amp;gt; New -&amp;gt; Android Resource Directory -&amp;gt; Resource type : raw&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;6. res -&amp;gt; raw&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/0Stcj/btrM63vwr73/ljb70qx7XaNVourJYLjGfk/tiny_button_push_sound.mp3?attach=1&amp;amp;knm=tfile.mp3&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;tiny_button_push_sound.mp3&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✔&amp;nbsp;Tiny&amp;nbsp;Button&amp;nbsp;Push&amp;nbsp;Sound&amp;nbsp;by&amp;nbsp;Mike&amp;nbsp;Koenig&lt;br /&gt;✔&amp;nbsp;From&lt;br /&gt;&lt;a href=&quot;http://soundbible.com/419-Tiny-Button-Push.html&quot;&gt;http://soundbible.com/419-Tiny-Button-Push.html&lt;/a&gt;&lt;br /&gt;✔&amp;nbsp;Distributor&amp;nbsp;&lt;br /&gt;&amp;lsquo;대한민국&amp;nbsp;대표&amp;nbsp;BGM&amp;nbsp;셀바이뮤직&amp;rsquo;&amp;nbsp;&lt;a href=&quot;https://www.sellbuymusic.com&quot;&gt;https://www.sellbuymusic.com&lt;/a&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664184721314&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    //소리 알림
    fun getSound(view: View) {

        when(view.id){

            //시스템 소리
            R.id.systemBtn -&amp;gt; {
                //소리 얻기
                var sound: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)

                //소리 담기
                val ringtone = RingtoneManager.getRingtone(applicationContext, sound)

                //실행
                ringtone.play()
            }
            //사용자 정의
            R.id.customBtn -&amp;gt; {

                //소리 얻기
                val player: MediaPlayer = MediaPlayer.create(this, R.raw.tiny_button_push_sound)

                //실행
               player.start()
            }
        }// when
    }//getSound()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.22 - [안드로이드] - [안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664184761085&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&quot; data-og-description=&quot;이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;클래스&amp;nbsp;Item.kt 3.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 4.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ItemAdapte..&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/438&quot; data-og-url=&quot;https://aries574.tistory.com/438&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ojPzy/hyPVsE9bxZ/4V1xP84hZVcGgDnS7tg8E1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/IVfDJ/hyPVhwQWlX/5q4UXATKGlbhrIHjN9VXmk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/438&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/438&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ojPzy/hyPVsE9bxZ/4V1xP84hZVcGgDnS7tg8E1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/IVfDJ/hyPVhwQWlX/5q4UXATKGlbhrIHjN9VXmk/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] RecyclerView 다중 선택 색상 변경하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 RecyclerView로 만든 리스트의 아이템 다중 선택하는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;클래스&amp;nbsp;Item.kt 3.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 4.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ItemAdapte..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/437&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.21 - [안드로이드] - [안드로이드 코트린] SharedPreferences 간단한 데이터 저장하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664184764767&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코트린] SharedPreferences  간단한 데이터 저장하는 방법&quot; data-og-description=&quot;이번 시간에는 앱에서 아이디, 패스워드를 한번 입력하면 나중에 들어왔을 때 정보가 사라지지 않는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainA&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/437&quot; data-og-url=&quot;https://aries574.tistory.com/437&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AxnfQ/hyPVrzsO64/zWEmAgvFoLc4kyptTUIF2k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/0ZMka/hyPVgxVYYm/iTVEOXxnGhI0fOUYbJo2E1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/437&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/437&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AxnfQ/hyPVrzsO64/zWEmAgvFoLc4kyptTUIF2k/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/0ZMka/hyPVgxVYYm/iTVEOXxnGhI0fOUYbJo2E1/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코트린] SharedPreferences 간단한 데이터 저장하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 앱에서 아이디, 패스워드를 한번 입력하면 나중에 들어왔을 때 정보가 사라지지 않는 방법을 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;메인&amp;nbsp;화면&amp;nbsp;activity_main.xml 3.&amp;nbsp;메인&amp;nbsp;코드&amp;nbsp;MainA&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/435&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.09.19 - [안드로이드] - [안드로이드 코틀린] RecyclerView 홀수 행, 짝수 행 별 색상 다르게 하는 방법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664184769491&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드 코틀린] RecyclerView 홀수 행, 짝수 행 별 색상 다르게 하는 방법&quot; data-og-description=&quot;이번 시간에는 리스트에 쓰이는 RecyclerView 화면에서 홀수 행, 짝수 행 별 색상 다르게 보여주는 방법 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 3.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ListAdapter&quot; data-og-host=&quot;aries574.tistory.com&quot; data-og-source-url=&quot;https://aries574.tistory.com/435&quot; data-og-url=&quot;https://aries574.tistory.com/435&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tVHe1/hyPVnqhcBN/227IHWqDwJJhHw3s3MbGvK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/buTasK/hyPVeAbbAA/a8x5HRasWiVh4VvzqACWK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bxLpWJ/hyPVeNF7rR/3NpdYx8wZKhQNW4KvstHoK/img.jpg?width=401&amp;amp;height=809&amp;amp;face=0_0_401_809&quot;&gt;&lt;a href=&quot;https://aries574.tistory.com/435&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aries574.tistory.com/435&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tVHe1/hyPVnqhcBN/227IHWqDwJJhHw3s3MbGvK/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/buTasK/hyPVeAbbAA/a8x5HRasWiVh4VvzqACWK0/img.jpg?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400,https://scrap.kakaocdn.net/dn/bxLpWJ/hyPVeNF7rR/3NpdYx8wZKhQNW4KvstHoK/img.jpg?width=401&amp;amp;height=809&amp;amp;face=0_0_401_809');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[안드로이드 코틀린] RecyclerView 홀수 행, 짝수 행 별 색상 다르게 하는 방법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 리스트에 쓰이는 RecyclerView 화면에서 홀수 행, 짝수 행 별 색상 다르게 보여주는 방법 알아보겠습니다. 목차 1.&amp;nbsp;실행&amp;nbsp;화면 2.&amp;nbsp;아이템&amp;nbsp;화면&amp;nbsp;list_item.xml 3.&amp;nbsp;아이템&amp;nbsp;어댑터&amp;nbsp;ListAdapter&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aries574.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=7aVYiRjCEzg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/DNmMQ/hyPVhQ8u5s/julSvM1FsZYWmReTev4oE1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;600&quot; data-video-height=&quot;450&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/7aVYiRjCEzg&quot; width=&quot;600&quot; height=&quot;450&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>안드로이드</category>
      <category>Android</category>
      <category>androidstudio</category>
      <category>Kotlin</category>
      <category>ringtone</category>
      <category>sound</category>
      <author>aries574</author>
      <guid isPermaLink="true">https://aries574.tistory.com/440</guid>
      <comments>https://aries574.tistory.com/440#entry440comment</comments>
      <pubDate>Mon, 26 Sep 2022 18:45:14 +0900</pubDate>
    </item>
  </channel>
</rss>