Android Kotlin Fundamentals 05.1: ViewModel and ViewModelFactory 번역 #3

Task : Explore the starter code


Step1 : Get Started

 

1. Download the GuessTheWord starter code

 

google-developer-training/android-kotlin-fundamentals-starter-apps

android-kotlin-fundamentals-starter-apps. Contribute to google-developer-training/android-kotlin-fundamentals-starter-apps development by creating an account on GitHub.

github.com

코드를 다운 받은 후 안드로이드 스튜디오에서 열어주세요.

 

2. 앱을 에뮬레이터나 실제 핸드폰에서 한번 실행 시켜보세요.

3. 버튼들을 눌러보세요. Skip버튼은 다음 단어를 표시하고 점수는 하나씩 줄입니다. Got It 버튼은 다음 단어를 표시하고, 점수는 하나 증가시킵니다. 현재 End 버튼은 구현 되지 않아서 눌러도 아무일도 일어나지 않습니다.

 

Step2: Do a code walkthrough

 

1. 안드로이드 스튜디오에서 이 앱이 어떻게 작동하는지 코드들을 살펴보세요.

2. 아래에 설명하고 있는 파일을 중요하니 꼭 확인 해보세요.

 

MainActivity.kt

MainActiviy에는 프로젝트 생성 시 기본적으로 들어가는 코드들만 있습니다.

 

res/layout/main_activity.xml

이 파일은 해당 앱의 메인 레이아웃을 담고 있습니다. NavHostFragment는 해당 앱에서 Navigation할 수 있는 Fragment들을 담을 수 있습니다.

 

  <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/main_navigation" />

 

UI Fragments

 

해당 starter code는 3개의 프레그먼트를 가지고 있고, 해당 프레그먼트들을 각각 다른 패키지에 존재합니다.

  • title/TitleFragment은 title을 표시하기 위한 프레그먼트 입니다.
  • game/GameFragment는 game screen을 위한 프레그먼트 입니다.
  • score/ScoreFragment는 score를 위한 프레그먼트 입니다.

screens/title/TitleFragment.kt

 

해당 프레그먼트는 앱이 시작되면 가장 먼저 표시되는 화면입니다. 클릭 핸들러는 play button을 누르면 game screen으로 네비게이션 되도록 해줍니다.

 

screens/game/GameFragment.kt

 

이 프레그먼트는 메인 프레그먼트 입니다. 거의 모든 게임에 대한 액션이 해당 프레그먼트에서 일어납니다.

  • 현재 단어와 현재 점수에 대한 변수들이 정의되어 있습니다.
  • wordList는 resetList()안에 정의되어 있습니다.
 /**
     * Resets the list of words and randomizes the order
     */
    private fun resetList() {
        wordList = mutableListOf(
                "queen",
                "hospital",
                "basketball",
                "cat",
                "change",
                "snail",
                "soup",
                "calendar",
                "sad",
                "desk",
                "guitar",
                "home",
                "railway",
                "zebra",
                "jelly",
                "car",
                "crow",
                "trade",
                "bag",
                "roll",
                "bubble"
        )
        wordList.shuffle()
    }

 

 

  • onSkip()은 Skip 버튼을 클릭했을 때 호출 됩니다. 점수를 하나 감점시키고, nextWord()함수를 호출하여 다음 단어를 띄워 줍니다.
  • onCorrect() Got it버튼을 클릭했을 때 호출 됩니다. 이 함수는 onSkip과 비슷하게 구현되어 있습니다. 한가지 다른 점은 점수를 증가 시켜준다는 것 입니다.

screen/score/ScoreFragment.kt

 

ScoreFragment는 게임의 마지막 화면 입니다. 해당 화면에서는 플레이어의 최종 점수를 나타냅니다. 이 코드랩에서 최종 점수를 표시하는 것을 구현해 볼 것입니다.

 

res/navigation/main_navigation.xml

 

navigation graph는 어떻게 프레그먼트들이 연결되어 있는지 보여줍니다.

  • 타이틀 프레그먼트로 부터 게임 프레그먼트로 
  • 게임 프레그먼트로 부터 스코어 프레그먼트로
  • 스코어 프레그먼트에서 다시 게임 프레그먼트로

 

 

댓글



Designed by JB FACTORY