Skip to content

BILLyTheLiTTle/Learning_Android

Repository files navigation

Learning_Android

Various Android examples based on what comes to my mind!

Table of Contents

  • Use Bottom Navigation Bar
  • Fragments
  • Navigation Graph
  • LiveData
  • Data Binding (one-way & two-way)
  • Model-View-ViewModel design pattern
  • Unit Testing
  • Instrumented Testing
  • Hilt in a simple application
  • A multi-module project
  • Clean Architecture
  • Reactive Programming
  • Data Binding
  • MVVM Pattern
  • Variants & Flavours
  • Unit Testing
  • Instrumented Testing
  • Use these projects in a basic level workshop
  • Explain and apply clean code techniques
  • Simple Unit testing cases
  • Simple instrumented testing cases
  • Test and debug any issues found in this projects
  • Very simple UI (no effort to understand)
  • Implement MVI pattern using OO State Design Pattern
  • Use Main UI Components (List, Tabs and Pager, Loading)
  • Use MVI pattern (a possible implementation)
  • Not a perfect but a good implementation of a LazyColumn with double sticky headers
  • It also shows an implementation of indexed Column bond in a LazyColumn
  • Request permission
  • Keep track of granted/denied/never ask again permissions
  • Jetpack Compose
  • Jetpack Compose Navigation
  • Jetpack Paging Library
  • Kotlin Coroutines
  • Kotlin Flow (StateFlow, SharedFlow)
  • Dependency Injection (Hilt)
  • Retrofit
  • Clean architecture
  • Testing (Unit, Coroutines Unit, UI Testing, MockWebServer)
  • Create DB
  • Execute simple queries to DB
  • Experiment with DB relationship from code and avoid lengthy queries
  • Android Keystore
  • Biometrics
  • Encryption for persistence (Read and Save user password)
  • Insert libraries:
    • From local folder
    • From local repository
  • Create a sample task to show the difference between configuration and execution phase
  • Create a custom task to rename output file per flavor
  • Modify the above custom task to:
    • A new binary plugin (TODO)
    • A new script plugin
  • Create new tasks dynamically
  • Run gradle tasks (dependsOn, mustRunAfter doLast, doFirst) and use attributes in command line (profiling)
  • Gradle Android properties (split apk, manual shrinking)

12. Jetpack Compose Navigation(Very Bad example of using a navigation module.)

  • Modular application (3 feature modules, navigation, app)
  • Navigation module
  • Nested Navigation
  • Weird navigation flow (Home Screen -> Screen 1 -> Screen 1_1 -> back to Home Screen directly, etc)
  • [Ch.11, 12] Use different Subcomponents:
    • ApplicationComponent
    • ActivityComponent (Subcomponent of `ApplicationComponent)
    • FragmentComponent (Subcomponent of `ActivityComponent)
  • [Ch.11] Use different Scopes(ApplicationScope, ActivityScope, FragmentScope)
  • [Ch.9] Use Qualifiers (@Named) and create new annotation classes to submit qualifiers
  • [Ch.9] Allow optional binding (@BindsOptionalOf) (TODO)
  • [Ch.8] Break cyclic dependency with Provider<T> (TODO)
  • [Ch.8] Use @Provides in object and in abstract and see the one file per @Provides function generated (TODO)
  • [Ch.10] Build above components using Component.Builder and Component.Factory (with @BindsInstance) (this example contains only Factory pattern)
  • [Ch.13, 14] Dagger multibinding for ViewModels (will not do)
  • Use KMM for sharing the logic between Android/iOS/Desktop (unable to work on iOS environment)
  • Use buildSrc module
  • Integrate Ktor for KMM network calls
  • Integrate Insert-Koin for DI
  • Integrate SQLDelight for DB functionality
  • Implement Unit Tests with Insert-Koin
  • Use of AsyncListDiffer for your RecyclerView Adapter
  • Use property delegation instead of inheritance
  • Use of Shared Preferences DataStore
  • Use of Protocol Buffer DataStore
  • Implement Netflix's scroll behaviour
  • Use Tabbed Activity
  • Fragments
  • Navigation Graph
  • Model-View-Intent architecture using Uniflow
  • Dagger 2
  • Unit Testing
  • Instrumented Testing

About

Various Android examples based on what comes to mind!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages