Skip to content

Latest commit

 

History

History
150 lines (117 loc) · 5.88 KB

README.md

File metadata and controls

150 lines (117 loc) · 5.88 KB

Simple MVVM

A simple Android MVVM pattern example and template.

Developer Buy Me A Coffee

Screenshots

Used Components/Libraries

Others

  • Splash Screen (Introduced in Android 12)
  • Custom Build variant (https://developer.android.com/studio/build/build-variants)
  • Environment variable based on Build variant
  • Custom Snackbar
  • Dark Mode
  • Awesome module naming example (see AwesomeModuleConstants)
  • Dynamic accent color from image (see calculatePaletteInImage())
  • Simple Encryption Utils (see EncryptionUtils)
  • Data pass and receive example between Activities
    • Pass data on Activity start (startActivity())
    • Start Activity for result (registerForActivityResult())
  • Data pass and receive example between Fragments
    • Pass data between child Fragment using parent ViewModel
    • Pass data between child Fragment using FragmentResultListener
    • Pass data on Fragment transaction
  • Simple Todo app (for beginner)
    • Single Activity approach
    • Used Go REST API (Just Todo API)
    • Offline support
  • Simple CMS app
    • Single Activity approach
    • Used Go REST API
    • Sections: User, Post, Todo and Comment
    • Navigation Component
    • Hilt
    • Material 3
  • Service example
    • Foreground service
    • Data-pass using Broadcast
  • GitHub Actions
  • Send test push notification to self using OneSignal

Extension Functions (see utils/extensions)

  • DateTime
  • Dialog
  • Dimension
  • Flow
  • General Spinner
  • Miscellaneous: show/hide keyboard, download file, open permission settings, open url, send mail etc.
  • Retrofit
  • Snackbar
  • String
  • Toast

Common Binding Adapters

  • RecyclerView
  • Spinner
  • ImageView
  • TextView (for Date() to formatted date-time)

Utilities

  • SharedPref
  • AlarmUtils
  • LocationProviderUtilClient
  • Event Class: Get notified for identical values in LiveData, Channel, Flow etc.
  • ignoreCrash { }: Ignore exceptions for a block.

Todo

  • UI/Unit Testing
  • Example of LocationProviderUtilClient
  • Migrate full app to Material 3

Note

  • For dependency version check I am currently using Gradle Versions Plugin. I added this in the Gradle init script and can check versions using the following commend.
./gradlew dependencyUpdates
  • The project using spotless with klint. Apply spotless using the following command.
./gradlew spotlessApply

Setup

Go REST API Key

Open the local.properties in your project level directory, and then add the following code. Replace YOUR_API_KEY with your Go REST API key.

API_KEY=YOUR_API_KEY

My Other Projects

  • Oops! No Internet! - A simple no Internet dialog and snackbar, which will automatically appear and disappear based on Internet connectivity status.
  • Why Not! Image Carousel! - An easy, super simple and customizable image carousel view for Android.
  • Why Not Compose! - A collection of animations, compositions, UIs using Jetpack Compose. You can say Jetpack Compose cookbook or play-ground if you want!
  • Why Not SwiftUI! - A collection of Swift, SwiftUI and iOS goodies.

Licence

Copyright 2023 Md. Mahmudul Hasan Shohag

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.