A series of Android Kotlin apps based on Google & Udacity trainings. In addition to extra resources to cover latest MAD features and Android associate developer certificate requirements.
This repository includes Kotlin sample application created based on latest Android guidelines available in the following references:
- Developing Android apps with Kotlin series.
- Advanced Android apps with Kotlin series.
- Associate Android developer materials.
You can use these applications as reference to learn more about Android latest features or to prepare for Android associate developer certificate.
The applications tuned a little from the original course with more features to validate extra development capabilities or to work with latest Android studio and Kotlin releases in 2021 after the course:
All applications under /basic folder:
- DiceRoller: the basic of Android layouts and actions.
- Aboutme: how to use Android data binding features.
- ColorMyviews: build responsive views with constraint layout.
- AndroidTrivia: introduction to navigation graphs, navigation drawer and fragments.
- DessertPusher: handling acitivty/ fragment lifecycle and observers.
- GuessIt: a word guessing game to learn about application archeticture, viewModel and liveData.
- SleepQualityTracker: room database, recyclerview, coroutines and basic unit testing.
- GridSleepQualityTracker: room database and grid layout.
- MarsRealEstate: demo app using viewModel & liveData with retrofit, glide and moshi in Kotlin.!
- DevByteViewer: show case room database and retrofit2 with workManager using MVVM architecture.
- Theme: themes, styles, overlays, attributes, tint and more.
All applications under /advanced folder:
- EggTimer: learn how to show and custom notifications (require to generate google-services.json from firebase).
- CustomFanControl: design and implement the functionality of custom view to control a dummy fan.
- MiniPaint: draw on custom view using a canvas and cache for better performance.
- TodoTester: Write basic tests for a todo application, and choose between instrumented/ local tests.
- firebaseLogin: Create user authentication using Firebase backend.
Projects to showcase the rest of the Android associate certificate topics, that was not fully covered in the kotlin series applications.
All applications under /extras folder:
- MotionDemo: learn how to build widget animation using the motion layout.
- MemoryEater: async task and memory leaks.
- GitHubPaging: search GitHub for repositories displayed in paging list.
- AppWithSettings: Simple settings fragment with toggle switch.
This section to show the topics of the Kotlin Android associate developer exam and related reference applications in this repository.
Topic | Application | Filename |
---|---|---|
Toast | EggTimer | EggTimerFragment |
Snackbar | SleepQualityTracker | SleepTrackerFragment |
Snackbar | Theme | GdgListFragment |
Create a Notification | EggTimer | NotificationUtils, EggTimerFragment (createChannel), AlarmReceiver [optional] |
AndroidX | DiceRoller | - |
Android KTX | reference | - |
Android KTX (Navigation) | AndroidTrivia | MainActivity, navigation_main |
Android KTX (Room) | GridSleepQualityTracker | - |
Android KTX (WorkManager) | DevByteViewer | RefreshDataWork, DevByteApplication (setupPeriodicWorker) |
Topic | Application | Filename |
---|---|---|
ConstraintLayout | ColorMyviews | activity_main, build.gradle |
RecyclerView list | SleepQualityTracker, GridSleepQualityTracker |
SleepNightAdapter, SleepTrackerFragment, fragment_sleep_tracker |
Navigation drawer | AndroidTrivia | MainActivity, activity_main, navdrawer_menu |
Custom view components | CustomFanControl | DialView |
Start activity | GridSleepQualityTracker | SleepTrackerFragment |
Start activity with result | FirebaseLogin | MainFragment (firebaseLauncher) |
Share Intent | AndroidTrivia | GameWonFragment (createShareIntent) |
themes | Theme | - |
Lifecycles | DessertPusher | MainActivity |
Paging library and flow | GitHubPaging | GithubPagingSource, GithubRepository, SearchRepositoriesViewModel, ReposAdapter |
Loading state footer | GitHubPaging | ReposLoadStateViewHolder, ReposLoadStateAdapter, SearchRepositoriesActivity (initAdapter) |
Menu | AndroidTrivia | winner_menu, GameWonFragment |
Topic | Application | Filename | Fun |
---|---|---|---|
viewModelScope | TodoTester | TasksViewModel | completeTask, clearCompletedTasks |
App settings with shared preferences | AppWithSettings | SettingsFragment, MainActivity (displaySwitchValue) | |
App settings with shared preferences | firebaseLogin | settings, SettingsFragment |
|
Room database and liveview | SleepQualityTracker, GridSleepQualityTracker |
SleepTrackerViewModel (allNights) | |
Repository | DevByteViewer | VideosRepository, VideoDao, Network |
Topic | Reference |
---|---|
Debugging | https://developer.android.com/studio/debug/ |
Android logs | https://developer.android.com/studio/debug/am-logcat |
Topic | Application | Filename | Test Method |
---|---|---|---|
Junit basic | TodoTester | StatisticsUtilsTest | Local Test |
Hamcrest (English written test) |
TodoTester | StatisticsUtilsTest | Local Test |
Junit for liveData and viewModel (AndroidX test) |
TodoTester | TasksViewModelTest | Local Test |
Fake viewModel repository | TodoTester | TasksViewModelTestFake | Local Test |
Dependency inject test | TodoTester | DefaultTasksRepositoryTest | Local Test |
coroutines test | TodoTester | build.gradle, DefaultTasksRepositoryTest |
Local Test |
Fragment intigration test (ServiceLocator, Espresso & Mokito) |
TodoTester | build.gradle, ServiceLocator, TodoApplication, TaskDetailFragmentTest |
AndroidTest |
Mocks using mockito | TodoTester | TasksFragmentTest | AndroidTest |
runBlockingTest | TodoTester | TasksFragmentTest | AndroidTest |
Junit rule & coroutine dispatcher | TodoTester | MainCoroutineRule, TasksViewModelTestFake |
Local Test |
Room and Dao test | TodoTester | build.gradle, TasksDaoTest |
AndroidTest |
Room and local data source | TodoTester | build.gradle, TasksLocalDataSourceTest |
AndroidTest |
End to end espresso test (ActivityScenario used) |
TodoTester | TasksActivityTest | AndroidTest |
Make sure to review the official exam guide:, for the latest updated exam topics: https://developers.google.com/certification/associate-android-developer/study-guide
The applications created using Android studio 4.1.1