銭湯協会で定期的に行われるスタンプラリーの管理アプリです。
スタンプ管理以外にも、各銭湯の詳細画面から外部アプリ「Google Map, GMail, Phone, Twitter, Facebook, Browser」などを起動し、銭湯の詳細情報をすぐに確認できるところがポイントです。
また、ビルドタイプを切り替えるだけで同じようなアプリを作る仕組みにしているのも特徴です。
Part1 | Part2 |
---|---|
Part1 |
---|
- Single Module, Single Activity, MVVMを採用
- Product Flavorを使用しバージョン管理
- Jetpack Compose未使用 (従来のViewの実装を採用)
-
UI Layer
- Activity
- Toolbar, FloatingActionButton, NavigationViewを持つ
- NavHostFragmentを1つ持つ
- Fragment
- 画面遷移は、Navigation Graphを使用する
- Toolbarを持たない
- viewModelで定義されている1つのLiveDataを監視し、UI更新を行う(UiState)
- エラーハンドリングはTrowableの型によって適切なエラー表示(ダイアログ、トースト、テキスト)を行う
- viewModel
- Fragmentに処理結果を返す手段はLivedata
- 1つのLiveDataを定義し、値はseald interfaceで定義されたオブジェクトを指定する (Error用はThrowableをデータとして持つ)(UiState)
- FlowのcollectはviewModelで行う
- Activity
-
domain Layer
- 作成していない
-
data Layer
- roomを使用してローカルデータベースを管理
- Exceptionが発生した場合、sealedで定義したobjectに変換し、処理結果を返す
共通コード
東京ゆらん 2021専用コード
浅草湯めぐり 2021専用コード
https://github.com/LeoAndo/android-onsen-stamp-rally-app/blob/main/app/build.gradle#L58:L86