├── .github ├── scripts │ └── gradlew_recursive.sh └── workflows │ ├── android.yml │ └── copy-branch.yml ├── .gitignore ├── .google └── packaging.yaml ├── CONTRIB.md ├── LICENSE ├── NOTICE ├── README.markdown ├── app ├── build.gradle └── src │ └── main │ └── AndroidManifest.xml ├── base ├── build.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── google │ │ └── samples │ │ └── apps │ │ └── topeka │ │ ├── Login.kt │ │ ├── activity │ │ └── SignInActivityTest.kt │ │ ├── helper │ │ ├── AnswerHelperAndroidTest.kt │ │ ├── ParcelableHelperAndroidTest.kt │ │ └── PreferencesHelperAndroidTest.kt │ │ └── model │ │ └── PlayerAndroidTest.kt │ ├── debug │ └── AndroidManifest.xml │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── google │ │ │ └── samples │ │ │ └── apps │ │ │ └── topeka │ │ │ ├── activity │ │ │ └── SignInActivity.kt │ │ │ ├── adapter │ │ │ └── AvatarAdapter.kt │ │ │ ├── fragment │ │ │ └── SignInFragment.kt │ │ │ ├── helper │ │ │ ├── ActivityLaunchHelper.kt │ │ │ ├── AnswerHelper.kt │ │ │ ├── ApiLevelHelper.kt │ │ │ ├── ContextExtensions.kt │ │ │ ├── CredentialsHelper.kt │ │ │ ├── FragmentExtensions.kt │ │ │ ├── JsonExtensions.kt │ │ │ ├── ParcelExtensions.kt │ │ │ ├── TransitionHelper.kt │ │ │ └── ViewExtensions.kt │ │ │ ├── model │ │ │ ├── Avatar.kt │ │ │ ├── Category.kt │ │ │ ├── JsonAttributes.kt │ │ │ ├── Player.kt │ │ │ ├── Theme.kt │ │ │ └── quiz │ │ │ │ ├── AlphaPickerQuiz.kt │ │ │ │ ├── FillBlankQuiz.kt │ │ │ │ ├── FillTwoBlanksQuiz.kt │ │ │ │ ├── FourQuarterQuiz.kt │ │ │ │ ├── MultiSelectQuiz.kt │ │ │ │ ├── OptionsQuiz.kt │ │ │ │ ├── PickerQuiz.kt │ │ │ │ ├── Quiz.kt │ │ │ │ ├── QuizType.kt │ │ │ │ ├── SelectItemQuiz.kt │ │ │ │ ├── ToggleTranslateQuiz.kt │ │ │ │ └── TrueFalseQuiz.kt │ │ │ ├── persistence │ │ │ ├── CategoryTable.kt │ │ │ ├── QuizTable.kt │ │ │ └── TopekaDatabaseHelper.kt │ │ │ └── widget │ │ │ ├── AvatarView.kt │ │ │ ├── OffsetDecoration.kt │ │ │ ├── TextWatcherAdapter.kt │ │ │ ├── TransitionListenerAdapter.kt │ │ │ └── outlineprovider │ │ │ └── RoundOutlineProvider.kt │ └── res │ │ ├── drawable-hdpi │ │ ├── avatar_10_raster.png │ │ ├── avatar_11_raster.png │ │ ├── avatar_12_raster.png │ │ ├── avatar_13_raster.png │ │ ├── avatar_14_raster.png │ │ ├── avatar_15_raster.png │ │ ├── avatar_16_raster.png │ │ ├── avatar_1_raster.png │ │ ├── avatar_2_raster.png │ │ ├── avatar_3_raster.png │ │ ├── avatar_4_raster.png │ │ ├── avatar_5_raster.png │ │ ├── avatar_6_raster.png │ │ ├── avatar_7_raster.png │ │ ├── avatar_8_raster.png │ │ ├── avatar_9_raster.png │ │ ├── ic_arrow_back_black.png │ │ ├── ic_check_black.png │ │ ├── ic_close_black.png │ │ └── ic_play_arrow_black.png │ │ ├── drawable-mdpi │ │ ├── avatar_10_raster.png │ │ ├── avatar_11_raster.png │ │ ├── avatar_12_raster.png │ │ ├── avatar_13_raster.png │ │ ├── avatar_14_raster.png │ │ ├── avatar_15_raster.png │ │ ├── avatar_16_raster.png │ │ ├── avatar_1_raster.png │ │ ├── avatar_2_raster.png │ │ ├── avatar_3_raster.png │ │ ├── avatar_4_raster.png │ │ ├── avatar_5_raster.png │ │ ├── avatar_6_raster.png │ │ ├── avatar_7_raster.png │ │ ├── avatar_8_raster.png │ │ ├── avatar_9_raster.png │ │ ├── ic_arrow_back_black.png │ │ ├── ic_check_black.png │ │ ├── ic_close_black.png │ │ └── ic_play_arrow_black.png │ │ ├── drawable-v21 │ │ ├── ic_arrow_back.xml │ │ ├── ic_cross.xml │ │ ├── ic_play.xml │ │ ├── ic_tick.xml │ │ ├── selector_button.xml │ │ ├── selector_checkable.xml │ │ └── selector_subtle.xml │ │ ├── drawable-v22 │ │ ├── avatar_1.xml │ │ ├── avatar_10.xml │ │ ├── avatar_11.xml │ │ ├── avatar_12.xml │ │ ├── avatar_13.xml │ │ ├── avatar_14.xml │ │ ├── avatar_15.xml │ │ ├── avatar_16.xml │ │ ├── avatar_2.xml │ │ ├── avatar_3.xml │ │ ├── avatar_4.xml │ │ ├── avatar_5.xml │ │ ├── avatar_6.xml │ │ ├── avatar_7.xml │ │ ├── avatar_8.xml │ │ └── avatar_9.xml │ │ ├── drawable-xhdpi │ │ ├── avatar_10_raster.png │ │ ├── avatar_11_raster.png │ │ ├── avatar_12_raster.png │ │ ├── avatar_13_raster.png │ │ ├── avatar_14_raster.png │ │ ├── avatar_15_raster.png │ │ ├── avatar_16_raster.png │ │ ├── avatar_1_raster.png │ │ ├── avatar_2_raster.png │ │ ├── avatar_3_raster.png │ │ ├── avatar_4_raster.png │ │ ├── avatar_5_raster.png │ │ ├── avatar_6_raster.png │ │ ├── avatar_7_raster.png │ │ ├── avatar_8_raster.png │ │ ├── avatar_9_raster.png │ │ ├── ic_arrow_back_black.png │ │ ├── ic_check_black.png │ │ ├── ic_close_black.png │ │ └── ic_play_arrow_black.png │ │ ├── drawable-xxhdpi │ │ ├── avatar_10_raster.png │ │ ├── avatar_11_raster.png │ │ ├── avatar_12_raster.png │ │ ├── avatar_13_raster.png │ │ ├── avatar_14_raster.png │ │ ├── avatar_15_raster.png │ │ ├── avatar_16_raster.png │ │ ├── avatar_1_raster.png │ │ ├── avatar_2_raster.png │ │ ├── avatar_3_raster.png │ │ ├── avatar_4_raster.png │ │ ├── avatar_5_raster.png │ │ ├── avatar_6_raster.png │ │ ├── avatar_7_raster.png │ │ ├── avatar_8_raster.png │ │ ├── avatar_9_raster.png │ │ ├── ic_arrow_back_black.png │ │ ├── ic_check_black.png │ │ ├── ic_close_black.png │ │ └── ic_play_arrow_black.png │ │ ├── drawable-xxxhdpi │ │ ├── avatar_10_raster.png │ │ ├── avatar_11_raster.png │ │ ├── avatar_12_raster.png │ │ ├── avatar_13_raster.png │ │ ├── avatar_14_raster.png │ │ ├── avatar_15_raster.png │ │ ├── avatar_16_raster.png │ │ ├── avatar_1_raster.png │ │ ├── avatar_2_raster.png │ │ ├── avatar_3_raster.png │ │ ├── avatar_4_raster.png │ │ ├── avatar_5_raster.png │ │ ├── avatar_6_raster.png │ │ ├── avatar_7_raster.png │ │ ├── avatar_8_raster.png │ │ ├── avatar_9_raster.png │ │ ├── ic_arrow_back_black.png │ │ ├── ic_check_black.png │ │ ├── ic_close_black.png │ │ └── ic_play_arrow_black.png │ │ ├── drawable │ │ ├── avatar_1.xml │ │ ├── avatar_10.xml │ │ ├── avatar_11.xml │ │ ├── avatar_12.xml │ │ ├── avatar_13.xml │ │ ├── avatar_14.xml │ │ ├── avatar_15.xml │ │ ├── avatar_16.xml │ │ ├── avatar_2.xml │ │ ├── avatar_3.xml │ │ ├── avatar_4.xml │ │ ├── avatar_5.xml │ │ ├── avatar_6.xml │ │ ├── avatar_7.xml │ │ ├── avatar_8.xml │ │ ├── avatar_9.xml │ │ ├── ic_arrow_back.xml │ │ ├── ic_cross.xml │ │ ├── ic_play.xml │ │ ├── ic_tick.xml │ │ ├── selector_avatar.xml │ │ ├── selector_button.xml │ │ ├── selector_checkable.xml │ │ ├── selector_list.xml │ │ └── selector_subtle.xml │ │ ├── layout-land │ │ └── fragment_sign_in.xml │ │ ├── layout │ │ ├── activity_sign_in.xml │ │ ├── fab_done.xml │ │ ├── fragment_sign_in.xml │ │ ├── item_avatar.xml │ │ ├── sign_in_avatars.xml │ │ └── sign_in_username.xml │ │ ├── menu │ │ └── menu_category.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── raw │ │ └── categories.json │ │ ├── transition-v21 │ │ ├── signin_enter.xml │ │ └── signin_exit.xml │ │ ├── values-land │ │ └── dimens.xml │ │ ├── values-sw600dp │ │ └── dimens.xml │ │ ├── values-v21 │ │ └── styles.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ids.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ ├── tick_cross.xml │ │ ├── transition_names.xml │ │ └── transitions.xml │ └── test │ └── java │ └── com │ └── google │ └── samples │ └── apps │ └── topeka │ ├── helper │ └── AnswerHelperTest.kt │ └── model │ ├── CategoryTest.kt │ └── quiz │ ├── AbsQuizTestCase.kt │ ├── AlphaPickerQuizTest.kt │ ├── FillBlankQuizTest.kt │ ├── FillTwoBlanksQuizTest.kt │ ├── FourQuarterQuizTest.kt │ ├── MultiSelectQuizTest.kt │ ├── PickerQuizTest.kt │ ├── SelectItemQuizTest.kt │ ├── ToggleTranslateQuizTest.kt │ └── TrueFalseQuizTest.kt ├── build.gradle ├── categories ├── build.gradle ├── proguard.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── google │ │ └── samples │ │ └── apps │ │ └── topeka │ │ └── activity │ │ └── CategorySelectionActivityTest.kt │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── samples │ │ └── apps │ │ └── topeka │ │ ├── Login.kt │ │ ├── activity │ │ └── CategorySelectionActivity.kt │ │ ├── adapter │ │ └── CategoryAdapter.kt │ │ └── fragment │ │ └── CategorySelectionFragment.kt │ └── res │ ├── drawable-hdpi │ ├── icon_category_entertainment_raster.png │ ├── icon_category_food_raster.png │ ├── icon_category_geography_raster.png │ ├── icon_category_history_raster.png │ ├── icon_category_knowledge_raster.png │ ├── icon_category_leaderboard_raster.png │ ├── icon_category_music_raster.png │ ├── icon_category_science_raster.png │ ├── icon_category_sports_raster.png │ └── icon_category_tvmovies_raster.png │ ├── drawable-mdpi │ ├── icon_category_entertainment_raster.png │ ├── icon_category_food_raster.png │ ├── icon_category_geography_raster.png │ ├── icon_category_history_raster.png │ ├── icon_category_knowledge_raster.png │ ├── icon_category_leaderboard_raster.png │ ├── icon_category_music_raster.png │ ├── icon_category_science_raster.png │ ├── icon_category_sports_raster.png │ └── icon_category_tvmovies_raster.png │ ├── drawable-v22 │ ├── icon_category_entertainment.xml │ ├── icon_category_food.xml │ ├── icon_category_geography.xml │ ├── icon_category_history.xml │ ├── icon_category_knowledge.xml │ ├── icon_category_leaderboard.xml │ ├── icon_category_music.xml │ ├── icon_category_science.xml │ ├── icon_category_sports.xml │ └── icon_category_tvmovies.xml │ ├── drawable-xhdpi │ ├── icon_category_entertainment_raster.png │ ├── icon_category_food_raster.png │ ├── icon_category_geography_raster.png │ ├── icon_category_history_raster.png │ ├── icon_category_knowledge_raster.png │ ├── icon_category_leaderboard_raster.png │ ├── icon_category_music_raster.png │ ├── icon_category_science_raster.png │ ├── icon_category_sports_raster.png │ └── icon_category_tvmovies_raster.png │ ├── drawable-xxhdpi │ ├── icon_category_entertainment_raster.png │ ├── icon_category_food_raster.png │ ├── icon_category_geography_raster.png │ ├── icon_category_history_raster.png │ ├── icon_category_knowledge_raster.png │ ├── icon_category_leaderboard_raster.png │ ├── icon_category_music_raster.png │ ├── icon_category_science_raster.png │ ├── icon_category_sports_raster.png │ └── icon_category_tvmovies_raster.png │ ├── drawable-xxxhdpi │ ├── icon_category_entertainment_raster.png │ ├── icon_category_food_raster.png │ ├── icon_category_geography_raster.png │ ├── icon_category_history_raster.png │ ├── icon_category_knowledge_raster.png │ ├── icon_category_leaderboard_raster.png │ ├── icon_category_music_raster.png │ ├── icon_category_science_raster.png │ ├── icon_category_sports_raster.png │ └── icon_category_tvmovies_raster.png │ ├── drawable │ ├── icon_category_entertainment.xml │ ├── icon_category_food.xml │ ├── icon_category_geography.xml │ ├── icon_category_history.xml │ ├── icon_category_knowledge.xml │ ├── icon_category_leaderboard.xml │ ├── icon_category_music.xml │ ├── icon_category_science.xml │ ├── icon_category_sports.xml │ └── icon_category_tvmovies.xml │ ├── layout │ ├── activity_category_selection.xml │ ├── fragment_categories.xml │ └── item_category.xml │ ├── transition-v21 │ ├── category_enter.xml │ ├── category_exit.xml │ └── category_shared_enter.xml │ ├── values-v21 │ └── styles.xml │ └── values │ └── styles.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── quiz ├── build.gradle ├── proguard.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── google │ │ └── samples │ │ └── apps │ │ └── topeka │ │ ├── Login.kt │ │ ├── SolveQuizUtil.kt │ │ └── activity │ │ └── quiz │ │ ├── BaseQuizActivityTest.kt │ │ ├── EntertainmentQuizTest.kt │ │ ├── FoodAndDrinkQuizTest.kt │ │ ├── GeneralKnowledgeQuizTest.kt │ │ ├── GeographyQuizTest.kt │ │ ├── HistoryQuizTest.kt │ │ ├── MusicQuizTest.kt │ │ ├── ScienceAndNatureQuizTest.kt │ │ ├── SportsQuizTest.kt │ │ └── TVAndMoviesQuizTest.kt │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── google │ │ └── samples │ │ └── apps │ │ └── topeka │ │ ├── activity │ │ └── QuizActivity.kt │ │ ├── adapter │ │ ├── OptionsQuizAdapter.kt │ │ ├── QuizAdapter.kt │ │ └── ScoreAdapter.kt │ │ ├── fragment │ │ └── QuizFragment.kt │ │ └── widget │ │ ├── SeekBarListener.kt │ │ ├── TextResizeTransition.kt │ │ ├── TextSharedElementCallback.kt │ │ ├── fab │ │ └── CheckableFab.kt │ │ └── quiz │ │ ├── AbsQuizView.kt │ │ ├── AlphaPickerQuizView.kt │ │ ├── FillBlankQuizView.kt │ │ ├── FillTwoBlanksQuizView.kt │ │ ├── FourQuarterQuizView.kt │ │ ├── MultiSelectQuizView.kt │ │ ├── PickerQuizView.kt │ │ ├── SelectItemQuizView.kt │ │ ├── TextInputQuizView.kt │ │ ├── ToggleTranslateQuizView.kt │ │ └── TrueFalseQuizView.kt │ └── res │ ├── animator-v21 │ ├── cross_to_tick_line_1.xml │ ├── cross_to_tick_line_2.xml │ ├── rotate_cross_to_tick.xml │ ├── rotate_tick_to_cross.xml │ ├── slide_in_bottom.xml │ ├── slide_out_top.xml │ ├── tick_to_cross_line_1.xml │ └── tick_to_cross_line_2.xml │ ├── drawable-hdpi │ ├── image_category_entertainment_raster.png │ ├── image_category_food_raster.png │ ├── image_category_geography_raster.png │ ├── image_category_history_raster.png │ ├── image_category_knowledge_raster.png │ ├── image_category_music_raster.png │ ├── image_category_science_raster.png │ ├── image_category_sports_raster.png │ └── image_category_tvmovies_raster.png │ ├── drawable-mdpi │ ├── image_category_entertainment_raster.png │ ├── image_category_food_raster.png │ ├── image_category_geography_raster.png │ ├── image_category_history_raster.png │ ├── image_category_knowledge_raster.png │ ├── image_category_music_raster.png │ ├── image_category_science_raster.png │ ├── image_category_sports_raster.png │ └── image_category_tvmovies_raster.png │ ├── drawable-v22 │ ├── image_category_entertainment.xml │ ├── image_category_food.xml │ ├── image_category_geography.xml │ ├── image_category_history.xml │ ├── image_category_knowledge.xml │ ├── image_category_music.xml │ ├── image_category_science.xml │ ├── image_category_sports.xml │ └── image_category_tvmovies.xml │ ├── drawable-xhdpi │ ├── image_category_entertainment_raster.png │ ├── image_category_food_raster.png │ ├── image_category_geography_raster.png │ ├── image_category_history_raster.png │ ├── image_category_knowledge_raster.png │ ├── image_category_music_raster.png │ ├── image_category_science_raster.png │ ├── image_category_sports_raster.png │ └── image_category_tvmovies_raster.png │ ├── drawable-xxhdpi │ ├── image_category_entertainment_raster.png │ ├── image_category_food_raster.png │ ├── image_category_geography_raster.png │ ├── image_category_history_raster.png │ ├── image_category_knowledge_raster.png │ ├── image_category_music_raster.png │ ├── image_category_science_raster.png │ ├── image_category_sports_raster.png │ └── image_category_tvmovies_raster.png │ ├── drawable-xxxhdpi │ ├── image_category_entertainment_raster.png │ ├── image_category_food_raster.png │ ├── image_category_geography_raster.png │ ├── image_category_history_raster.png │ ├── image_category_knowledge_raster.png │ ├── image_category_music_raster.png │ ├── image_category_science_raster.png │ ├── image_category_sports_raster.png │ └── image_category_tvmovies_raster.png │ ├── drawable │ ├── answer_quiz_fab.xml │ ├── image_category_entertainment.xml │ ├── image_category_food.xml │ ├── image_category_geography.xml │ ├── image_category_history.xml │ ├── image_category_knowledge.xml │ ├── image_category_music.xml │ ├── image_category_science.xml │ ├── image_category_sports.xml │ ├── image_category_tvmovies.xml │ ├── selector_avatar.xml │ ├── selector_checkable.xml │ ├── selector_false.xml │ ├── selector_list.xml │ └── selector_true.xml │ ├── layout │ ├── activity_quiz.xml │ ├── answer_submit.xml │ ├── fragment_quiz.xml │ ├── item_answer.xml │ ├── item_answer_start.xml │ ├── item_scorecard.xml │ ├── question.xml │ ├── quiz_edit_text.xml │ ├── quiz_fill_blank_with_surroundings.xml │ ├── quiz_layout_picker.xml │ └── quiz_radio_group_true_false.xml │ ├── transition-v21 │ └── quiz_shared_enter.xml │ ├── values-v21 │ └── styles.xml │ └── values │ ├── arrays.xml │ └── styles.xml ├── screenshots ├── categories.png ├── category_history.png ├── ic_web.png └── quiz_shakespeare.png └── settings.gradle /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2020 The Android Open Source Project 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # https://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | name: Android CI 16 | 17 | on: 18 | push: 19 | branches: [ master ] 20 | pull_request: 21 | branches: [ master ] 22 | 23 | jobs: 24 | 25 | build: 26 | name: Build 27 | runs-on: ubuntu-18.04 28 | 29 | steps: 30 | - uses: actions/checkout@v1 31 | - name: set up JDK 1.8 32 | uses: actions/setup-java@v1 33 | with: 34 | java-version: 1.8 35 | - name: Build project 36 | run: .github/scripts/gradlew_recursive.sh assembleDebug 37 | - name: Zip artifacts 38 | run: zip -r assemble.zip . -i '**/build/*.apk' '**/build/*.aab' '**/build/*.aar' '**/build/*.so' 39 | - name: Upload artifacts 40 | uses: actions/upload-artifact@v1 41 | with: 42 | name: assemble 43 | path: assemble.zip 44 | -------------------------------------------------------------------------------- /.github/workflows/copy-branch.yml: -------------------------------------------------------------------------------- 1 | # Duplicates default main branch to the old master branch 2 | 3 | name: Duplicates main to old master branch 4 | 5 | # Controls when the action will run. Triggers the workflow on push or pull request 6 | # events but only for the main branch 7 | on: 8 | push: 9 | branches: [ main ] 10 | 11 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 12 | jobs: 13 | # This workflow contains a single job called "copy-branch" 14 | copy-branch: 15 | # The type of runner that the job will run on 16 | runs-on: ubuntu-latest 17 | 18 | # Steps represent a sequence of tasks that will be executed as part of the job 19 | steps: 20 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it, 21 | # but specifies master branch (old default). 22 | - uses: actions/checkout@v2 23 | with: 24 | fetch-depth: 0 25 | ref: master 26 | 27 | - run: | 28 | git config user.name github-actions 29 | git config user.email github-actions@github.com 30 | git merge origin/main 31 | git push 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .idea 3 | .build 4 | local.properties 5 | *.iml 6 | build 7 | -------------------------------------------------------------------------------- /.google/packaging.yaml: -------------------------------------------------------------------------------- 1 | # GOOGLE SAMPLE PACKAGING DATA 2 | # 3 | # This file is used by Google as part of our samples packaging process. 4 | # End users may safely ignore this file. It has no relevance to other systems. 5 | --- 6 | status: PUBLISHED 7 | technologies: [Android] 8 | categories: [Design] 9 | languages: [Kotlin] 10 | solutions: [Mobile] 11 | 12 | github: googlesamples/android-topeka 13 | 14 | level: INTERMEDIATE 15 | 16 | icon: screenshots/ic_web.png 17 | 18 | apiRefs: 19 | - android:android.animation.Animator 20 | - android:android.animation.AnimatorListenerAdapter 21 | - android:android.animation.ObjectAnimator 22 | - android:android.widget.AdapterViewAnimator 23 | - android:android.view.ViewAnimationUtils 24 | - android:android.view.animation.AnimationUtils 25 | - android:android.view.animation.Interpolator 26 | - android:android.view.ViewOutlineProvider 27 | - android:android.view.ContextThemeWrapper 28 | 29 | license: apache2 30 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | This sample uses the following software: 2 | 3 | Copyright 2015 Google Inc. 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | apply plugin: 'com.android.application' 18 | apply plugin: 'kotlin-android' 19 | 20 | android { 21 | compileSdkVersion rootProject.compileSdk 22 | 23 | defaultConfig { 24 | targetSdkVersion rootProject.targetSdk 25 | minSdkVersion rootProject.minSdk 26 | versionCode 1 27 | } 28 | 29 | buildTypes { 30 | release { 31 | signingConfig signingConfigs.debug 32 | } 33 | } 34 | 35 | dynamicFeatures = [":categories", ":quiz"] 36 | } 37 | 38 | dependencies { 39 | implementation project(":base") 40 | } 41 | -------------------------------------------------------------------------------- /base/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /base/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/helper/ContextExtensions.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.helper 18 | 19 | import android.content.Context 20 | import android.view.LayoutInflater 21 | import android.view.View 22 | import android.view.ViewGroup 23 | import com.google.samples.apps.topeka.persistence.TopekaDatabaseHelper 24 | 25 | const val TAG = "Topeka" 26 | 27 | fun Context.database() = TopekaDatabaseHelper.getInstance(this) 28 | 29 | fun Context.inflate(resource: Int, root: ViewGroup?, attachToRoot: Boolean): View = 30 | LayoutInflater.from(this).inflate(resource, root, attachToRoot) -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/helper/FragmentExtensions.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.helper 18 | 19 | import androidx.annotation.IdRes 20 | import androidx.fragment.app.Fragment 21 | import androidx.fragment.app.FragmentActivity 22 | 23 | fun FragmentActivity.replaceFragment(@IdRes id: Int, fragment: Fragment) { 24 | supportFragmentManager.beginTransaction().replace(id, fragment).commit() 25 | } 26 | 27 | fun FragmentActivity.findFragmentByTag(tag: String): Fragment? = 28 | supportFragmentManager.findFragmentByTag(tag) 29 | 30 | fun FragmentActivity.findFragmentById(tag: Int): Fragment? = 31 | supportFragmentManager.findFragmentById(tag) 32 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/helper/JsonExtensions.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.helper 18 | 19 | import org.json.JSONArray 20 | 21 | /** 22 | * Make an [Array] of type [String] out of this JSONArray. 23 | */ 24 | fun JSONArray.toStringArray(): Array = Array(this.length()) { this.getString(it) } 25 | 26 | /** 27 | * Make an [IntArray] out of this JSONArray. 28 | */ 29 | fun JSONArray.toIntArray(): IntArray = IntArray(this.length()) { this.getInt(it) } -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/helper/ParcelExtensions.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.helper 18 | 19 | import android.os.Parcel 20 | 21 | /** 22 | * Writes a single boolean to a [Parcel]. 23 | 24 | * @param toWrite Value to write. 25 | */ 26 | fun Parcel.writeBoolean(toWrite: Boolean) = writeInt(if (toWrite) 0 else 1) 27 | 28 | /** 29 | * Retrieves a single boolean from a [Parcel]. 30 | */ 31 | fun Parcel.readBoolean() = 0 == this.readInt() -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/JsonAttributes.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model 18 | 19 | object JsonAttributes { 20 | 21 | const val ANSWER = "answer" 22 | const val END = "end" 23 | const val ID = "id" 24 | const val MAX = "max" 25 | const val MIN = "min" 26 | const val NAME = "name" 27 | const val OPTIONS = "options" 28 | const val QUESTION = "question" 29 | const val QUIZZES = "quizzes" 30 | const val START = "start" 31 | const val STEP = "step" 32 | const val THEME = "theme" 33 | const val TYPE = "type" 34 | const val SCORES = "scores" 35 | const val SOLVED = "solved" 36 | } -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/AlphaPickerQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class AlphaPickerQuiz( 20 | override val question: String, 21 | override val answer: String, 22 | override var solved: Boolean 23 | ) : Quiz(question, answer, solved) { 24 | 25 | override val type get() = QuizType.ALPHA_PICKER 26 | 27 | override val stringAnswer: String get() = answer 28 | } 29 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/FillBlankQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class FillBlankQuiz( 20 | override val question: String, 21 | override val answer: String, 22 | val start: String?, val end: String?, 23 | override var solved: Boolean 24 | ) : Quiz(question, answer, solved) { 25 | 26 | override val stringAnswer get() = answer 27 | 28 | override val type get() = QuizType.FILL_BLANK 29 | 30 | override fun isAnswerCorrect(answer: String?): Boolean = this.answer 31 | .equals(answer, ignoreCase = true) 32 | } 33 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/FourQuarterQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class FourQuarterQuiz( 20 | override val question: String, 21 | override val answer: IntArray, 22 | override var options: Array, 23 | override var solved: Boolean 24 | ) : OptionsQuiz(question, answer, options, solved) { 25 | 26 | override val type get() = QuizType.FOUR_QUARTER 27 | 28 | override val stringAnswer get() = getAnswer(answer, options) 29 | 30 | } 31 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/MultiSelectQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class MultiSelectQuiz( 20 | override val question: String, 21 | override val answer: IntArray, 22 | override var options: Array, 23 | override var solved: Boolean 24 | ) : OptionsQuiz(question, answer, options, solved) { 25 | 26 | override val type get() = QuizType.MULTI_SELECT 27 | 28 | override val stringAnswer get() = getAnswer(answer, options) 29 | } 30 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/PickerQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class PickerQuiz( 20 | override val question: String, 21 | override val answer: Int, 22 | val min: Int, val max: Int, val step: Int, 23 | override var solved: Boolean 24 | ) : Quiz(question, answer, solved) { 25 | 26 | override val type get() = QuizType.PICKER 27 | 28 | override val stringAnswer get() = answer.toString() 29 | } 30 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/SelectItemQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class SelectItemQuiz( 20 | override val question: String, 21 | override val answer: IntArray, 22 | override var options: Array, 23 | override var solved: Boolean 24 | ) : OptionsQuiz(question, answer, options, solved) { 25 | 26 | override val type get() = QuizType.SINGLE_SELECT 27 | 28 | override val stringAnswer get() = getAnswer(answer, options) 29 | 30 | } 31 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/ToggleTranslateQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class ToggleTranslateQuiz( 20 | override val question: String, 21 | override val answer: IntArray, 22 | override var options: Array>, 23 | override var solved: Boolean 24 | ) : OptionsQuiz>(question, answer, options, solved) { 25 | 26 | val readableOptions get() = Array(options.size, { createReadablePair(options[it]) }) 27 | 28 | override val type get() = QuizType.TOGGLE_TRANSLATE 29 | 30 | override val stringAnswer get() = getAnswer(answer, readableOptions) 31 | 32 | private fun createReadablePair(option: Array) = "${option[0]} <> ${option[1]}" 33 | 34 | } 35 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/model/quiz/TrueFalseQuiz.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.model.quiz 18 | 19 | data class TrueFalseQuiz( 20 | override val question: String, 21 | override val answer: Boolean, 22 | override var solved: Boolean 23 | ) : Quiz(question, answer, solved) { 24 | 25 | override val stringAnswer get() = answer.toString() 26 | 27 | override val type get() = QuizType.TRUE_FALSE 28 | 29 | } 30 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/widget/OffsetDecoration.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.widget 18 | 19 | import android.graphics.Rect 20 | import androidx.recyclerview.widget.RecyclerView 21 | import android.view.View 22 | 23 | class OffsetDecoration(private val offset: Int) : RecyclerView.ItemDecoration() { 24 | 25 | override fun getItemOffsets(outRect: Rect, 26 | view: View, 27 | parent: RecyclerView, 28 | state: RecyclerView.State) { 29 | outRect.set(offset, offset, offset, offset) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/widget/TextWatcherAdapter.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.widget 18 | 19 | import android.text.Editable 20 | import android.text.TextWatcher 21 | 22 | object TextWatcherAdapter : TextWatcher { 23 | override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit 24 | 25 | override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) = Unit 26 | 27 | override fun afterTextChanged(s: Editable) = Unit 28 | 29 | } -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/widget/TransitionListenerAdapter.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.widget 18 | 19 | import android.annotation.TargetApi 20 | import android.os.Build 21 | import android.transition.Transition 22 | 23 | /** 24 | * Empty implementation of [Transition.TransitionListener]. 25 | */ 26 | 27 | @TargetApi(Build.VERSION_CODES.KITKAT) 28 | object TransitionListenerAdapter : Transition.TransitionListener { 29 | 30 | override fun onTransitionStart(transition: Transition) = Unit 31 | 32 | override fun onTransitionEnd(transition: Transition) = Unit 33 | 34 | override fun onTransitionCancel(transition: Transition) = Unit 35 | 36 | override fun onTransitionPause(transition: Transition) = Unit 37 | 38 | override fun onTransitionResume(transition: Transition) = Unit 39 | } 40 | -------------------------------------------------------------------------------- /base/src/main/java/com/google/samples/apps/topeka/widget/outlineprovider/RoundOutlineProvider.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.google.samples.apps.topeka.widget.outlineprovider 18 | 19 | import android.annotation.TargetApi 20 | import android.graphics.Outline 21 | import android.os.Build 22 | import android.view.View 23 | import android.view.ViewOutlineProvider 24 | 25 | /** 26 | * Creates round outlines for views. 27 | */ 28 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 29 | class RoundOutlineProvider(private val size: Int) : ViewOutlineProvider() { 30 | 31 | init { 32 | if (0 > size) throw IllegalArgumentException("size needs to be > 0. Actually was $size") 33 | } 34 | 35 | override fun getOutline(view: View, outline: Outline) = outline.setOval(0, 0, size, size) 36 | 37 | } 38 | -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_10_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_10_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_11_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_11_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_12_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_12_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_13_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_13_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_14_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_14_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_15_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_15_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_16_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_16_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_1_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_1_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_2_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_2_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_3_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_3_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_4_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_4_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_5_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_5_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_6_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_6_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_7_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_7_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_8_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_8_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/avatar_9_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/avatar_9_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/ic_arrow_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/ic_arrow_back_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/ic_check_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/ic_close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/ic_close_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-hdpi/ic_play_arrow_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-hdpi/ic_play_arrow_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_10_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_10_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_11_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_11_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_12_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_12_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_13_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_13_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_14_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_14_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_15_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_15_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_16_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_16_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_1_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_1_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_2_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_2_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_3_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_3_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_4_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_4_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_5_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_5_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_6_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_6_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_7_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_7_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_8_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_8_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/avatar_9_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/avatar_9_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/ic_arrow_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/ic_arrow_back_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/ic_check_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/ic_close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/ic_close_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-mdpi/ic_play_arrow_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-mdpi/ic_play_arrow_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-v21/ic_arrow_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /base/src/main/res/drawable-v21/ic_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /base/src/main/res/drawable-v21/selector_button.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /base/src/main/res/drawable-v21/selector_checkable.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /base/src/main/res/drawable-v21/selector_subtle.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_10_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_10_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_11_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_11_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_12_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_12_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_13_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_13_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_14_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_14_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_15_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_15_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_16_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_16_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_1_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_1_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_2_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_2_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_3_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_3_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_4_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_4_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_5_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_5_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_6_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_6_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_7_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_7_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_8_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_8_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/avatar_9_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/avatar_9_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/ic_arrow_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/ic_arrow_back_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/ic_check_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/ic_close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/ic_close_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xhdpi/ic_play_arrow_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xhdpi/ic_play_arrow_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_10_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_10_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_11_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_11_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_12_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_12_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_13_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_13_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_14_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_14_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_15_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_15_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_16_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_16_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_1_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_1_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_2_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_2_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_3_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_3_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_4_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_4_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_5_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_5_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_6_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_6_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_7_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_7_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_8_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_8_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/avatar_9_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/avatar_9_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/ic_arrow_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/ic_arrow_back_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/ic_check_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/ic_close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/ic_close_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxhdpi/ic_play_arrow_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxhdpi/ic_play_arrow_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_10_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_10_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_11_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_11_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_12_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_12_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_13_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_13_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_14_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_14_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_15_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_15_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_16_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_16_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_1_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_1_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_2_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_2_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_3_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_3_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_4_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_4_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_5_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_5_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_6_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_6_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_7_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_7_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_8_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_8_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/avatar_9_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/avatar_9_raster.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/ic_arrow_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/ic_arrow_back_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/ic_check_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/ic_check_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/ic_close_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/ic_close_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable-xxxhdpi/ic_play_arrow_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/drawable-xxxhdpi/ic_play_arrow_black.png -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_1.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_10.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_11.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_12.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_13.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_14.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_15.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_16.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_2.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_3.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_4.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_5.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_6.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_7.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_8.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/avatar_9.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/ic_arrow_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/ic_cross.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/ic_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 20 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/ic_tick.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/selector_avatar.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/selector_button.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/selector_checkable.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/selector_list.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /base/src/main/res/drawable/selector_subtle.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | -------------------------------------------------------------------------------- /base/src/main/res/layout/activity_sign_in.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 26 | -------------------------------------------------------------------------------- /base/src/main/res/layout/fab_done.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 30 | -------------------------------------------------------------------------------- /base/src/main/res/layout/item_avatar.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 24 | -------------------------------------------------------------------------------- /base/src/main/res/menu/menu_category.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | 23 | -------------------------------------------------------------------------------- /base/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /base/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /base/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /base/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /base/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/base/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /base/src/main/res/transition-v21/signin_enter.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /base/src/main/res/transition-v21/signin_exit.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /base/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 72dp 19 | 20 | -------------------------------------------------------------------------------- /base/src/main/res/values-sw600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 24dp 19 | 20 | -------------------------------------------------------------------------------- /base/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 23 | 24 | 28 | 29 | 30 | 33 | 34 | -------------------------------------------------------------------------------- /base/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /base/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 2dp 19 | 4dp 20 | 8dp 21 | 16dp 22 | 72dp 23 | 24 | 56dp 25 | 40dp 26 | 24dp 27 | 28 | 4dp 29 | 30 | 48dp 31 | 144dp 32 | 33 | 4dp 34 | 35 | 18sp 36 | 14sp 37 | 38 | -------------------------------------------------------------------------------- /base/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /base/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | Topeka 19 | Last Initial 20 | First Name 21 | Sign In 22 | Choose an Avatar 23 | An Avatar 24 | %1$d / %2$d 25 | True 26 | False 27 | Category 28 | Sign out 29 | %1$d pts 30 | back 31 | -------------------------------------------------------------------------------- /base/src/main/res/values/transition_names.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | AvatarTransition 19 | ToolbarTransition 20 | -------------------------------------------------------------------------------- /base/src/main/res/values/transitions.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 350 20 | -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/AlphaPickerQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class AlphaPickerQuizTest : AbsQuizTestCase() { 22 | 23 | private val ANSWER = "answer" 24 | 25 | override val quiz get() = AlphaPickerQuiz(QUESTION, ANSWER, false) 26 | 27 | override val expectedQuizType get() = QuizType.ALPHA_PICKER 28 | 29 | override fun quiz_answer_correctlyStored() = assertThat(ANSWER, `is`(quiz.answer)) 30 | 31 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 32 | 33 | 34 | } -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/FillTwoBlanksQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class FillTwoBlanksQuizTest : AbsQuizTestCase() { 22 | 23 | override val quiz get() = FillTwoBlanksQuiz(QUESTION, STRING_ARRAY, false) 24 | 25 | override val expectedQuizType get() = QuizType.FILL_TWO_BLANKS 26 | 27 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 28 | 29 | override fun quiz_answer_correctlyStored() = assertThat(STRING_ARRAY, `is`(quiz.answer)) 30 | } -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/FourQuarterQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class FourQuarterQuizTest : AbsQuizTestCase() { 22 | 23 | override val quiz get() = FourQuarterQuiz(QUESTION, INT_ARRAY, STRING_ARRAY, false) 24 | 25 | override val expectedQuizType get() = QuizType.FOUR_QUARTER 26 | 27 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 28 | 29 | override fun quiz_answer_correctlyStored() = assertThat(INT_ARRAY, `is`(quiz.answer)) 30 | } -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/MultiSelectQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class MultiSelectQuizTest : AbsQuizTestCase() { 22 | 23 | override val quiz get() = MultiSelectQuiz(QUESTION, INT_ARRAY, STRING_ARRAY, false) 24 | 25 | override val expectedQuizType get() = QuizType.MULTI_SELECT 26 | 27 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 28 | 29 | override fun quiz_answer_correctlyStored() = assertThat(INT_ARRAY, `is`(quiz.answer)) 30 | } -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/SelectItemQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class SelectItemQuizTest : AbsQuizTestCase() { 22 | 23 | override val quiz get() = SelectItemQuiz(QUESTION, INT_ARRAY, STRING_ARRAY, false) 24 | 25 | override val expectedQuizType get() = QuizType.SINGLE_SELECT 26 | 27 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 28 | 29 | override fun quiz_answer_correctlyStored() = assertThat(INT_ARRAY, `is`(quiz.answer)) 30 | } -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/ToggleTranslateQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class ToggleTranslateQuizTest : AbsQuizTestCase() { 22 | 23 | private val OPTIONS = arrayOf(STRING_ARRAY, STRING_ARRAY) 24 | private val CORRECT_ANSWER = intArrayOf(0, 1) 25 | 26 | override val quiz get() = ToggleTranslateQuiz(QUESTION, CORRECT_ANSWER, OPTIONS, false) 27 | 28 | override val expectedQuizType get() = QuizType.TOGGLE_TRANSLATE 29 | 30 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 31 | 32 | override fun quiz_answer_correctlyStored() = assertThat(CORRECT_ANSWER, `is`(quiz.answer)) 33 | 34 | } -------------------------------------------------------------------------------- /base/src/test/java/com/google/samples/apps/topeka/model/quiz/TrueFalseQuizTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package com.google.samples.apps.topeka.model.quiz 17 | 18 | import org.hamcrest.CoreMatchers.`is` 19 | import org.hamcrest.MatcherAssert.assertThat 20 | 21 | class TrueFalseQuizTest : AbsQuizTestCase() { 22 | 23 | private val ANSWER = true 24 | 25 | override val quiz get() = TrueFalseQuiz(QUESTION, ANSWER, false) 26 | 27 | override val expectedQuizType get() = QuizType.TRUE_FALSE 28 | 29 | override fun quiz_answer_isCorrect() = assertThat(quiz.isAnswerCorrect(quiz.answer), `is`(true)) 30 | 31 | override fun quiz_answer_correctlyStored() = assertThat(ANSWER, `is`(quiz.answer)) 32 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 18 | 19 | buildscript { 20 | ext.kotlin_version = '1.4.0' 21 | repositories { 22 | google() 23 | jcenter() 24 | } 25 | dependencies { 26 | classpath 'com.android.tools.build:gradle:4.0.1' 27 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 28 | 29 | // NOTE: Do not place your application dependencies here; they belong 30 | // in the individual module build.gradle files 31 | } 32 | } 33 | 34 | allprojects { 35 | repositories { 36 | google() 37 | jcenter() 38 | } 39 | } 40 | 41 | ext { 42 | compileSdk = 29 43 | targetSdk = 29 44 | minSdkInstant = 21 45 | minSdk = 14 46 | 47 | } 48 | -------------------------------------------------------------------------------- /categories/proguard.pro: -------------------------------------------------------------------------------- 1 | -dontobfuscate -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_entertainment_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_entertainment_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_food_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_food_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_geography_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_geography_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_history_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_history_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_knowledge_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_knowledge_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_leaderboard_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_leaderboard_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_music_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_music_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_science_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_science_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_sports_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_sports_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-hdpi/icon_category_tvmovies_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-hdpi/icon_category_tvmovies_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_entertainment_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_entertainment_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_food_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_food_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_geography_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_geography_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_history_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_history_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_knowledge_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_knowledge_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_leaderboard_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_leaderboard_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_music_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_music_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_science_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_science_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_sports_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_sports_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-mdpi/icon_category_tvmovies_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-mdpi/icon_category_tvmovies_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_entertainment_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_entertainment_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_food_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_food_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_geography_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_geography_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_history_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_history_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_knowledge_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_knowledge_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_leaderboard_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_leaderboard_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_music_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_music_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_science_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_science_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_sports_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_sports_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xhdpi/icon_category_tvmovies_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xhdpi/icon_category_tvmovies_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_entertainment_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_entertainment_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_food_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_food_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_geography_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_geography_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_history_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_history_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_knowledge_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_knowledge_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_leaderboard_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_leaderboard_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_music_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_music_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_science_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_science_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_sports_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_sports_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxhdpi/icon_category_tvmovies_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxhdpi/icon_category_tvmovies_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_entertainment_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_entertainment_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_food_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_food_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_geography_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_geography_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_history_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_history_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_knowledge_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_knowledge_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_leaderboard_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_leaderboard_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_music_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_music_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_science_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_science_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_sports_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_sports_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable-xxxhdpi/icon_category_tvmovies_raster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/categories/src/main/res/drawable-xxxhdpi/icon_category_tvmovies_raster.png -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_entertainment.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_food.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_geography.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_history.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_knowledge.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_leaderboard.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_music.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_science.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_sports.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/drawable/icon_category_tvmovies.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 19 | -------------------------------------------------------------------------------- /categories/src/main/res/layout/fragment_categories.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 33 | -------------------------------------------------------------------------------- /categories/src/main/res/transition-v21/category_enter.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /categories/src/main/res/transition-v21/category_exit.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /categories/src/main/res/transition-v21/category_shared_enter.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /categories/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 26 | -------------------------------------------------------------------------------- /categories/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 21 | 22 | -------------------------------------------------------------------------------- /screenshots/categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/screenshots/categories.png -------------------------------------------------------------------------------- /screenshots/category_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/screenshots/category_history.png -------------------------------------------------------------------------------- /screenshots/ic_web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/screenshots/ic_web.png -------------------------------------------------------------------------------- /screenshots/quiz_shakespeare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/android/topeka/40737032a604383eca118827a12700dffa2c1cc6/screenshots/quiz_shakespeare.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2015 Google Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | include ':app' 18 | include ':base', ':quiz', ':categories' 19 | --------------------------------------------------------------------------------