Annictter 1.4.1をリリースした。
細かい修正をいくつかした。codelabまわり触ってて学んだことを反映したりなどなど。
1.4.1変更点
- Rxを廃止してcoroutineを使うようにした
- NavigationBarを透明にした
- DataBindingを導入
- Accountページの表示を少し最適化
Rxを廃止してcoroutineを使うようにした
長らくお世話になっていたRxですが、実はAPI呼び出しなどの非同期処理にしか使ってなかったため、coroutineに置き換えてみたら思ったより問題なく動いたので移行しました。
基本的にはViewModelのviewModelScope呼び出しで済むので、今まで雑だったキャンセル処理もうまいことやってくれるようになったs。
NavigationBarを透明にした
ジェスチャーナビゲーションを有効にしていると下に黒い棒がでているのが急に気になりだしてカッとなって対応した。
普通にThemeでtransparent指定するだけなので一瞬でした。
before | after |
---|---|
DataBindingを導入
Data Binding in AndroidのcodelabをやってみたでViewModelのLiveDataなどをそのままDataBindingする使い方がすごいいい感じだったので、一部の画面に導入してみた。
FragmentのonCreateViewでviewModelの情報をobserveしてもりもりbindingのviewに値を設定していたコードが全部消えてスッキリした。
- viewModel.account.observe(viewLifecycleOwner, Observer {
- it?.let { account ->
- binding.name.text = account.name
- binding.username.text = "@${account.username}"
- binding.description.text = account.description
-
- glide.load(account.backgroundImageUrl)
- .centerCrop()
- .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
- .skipMemoryCache(false)
- .placeholder(R.drawable.no_image)
- .into(binding.backgroundImage)
-
- glide.load(account.avatarUrl)
- .circleCrop()
- .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
- .skipMemoryCache(false)
- .placeholder(R.drawable.no_image)
- .into(binding.avatarImage)
- }
- })
-
+ binding.lifecycleOwner = this
+ binding.viewModel = viewModel
Accountページの表示を少し最適化
Accountページ自体は特にいじってないんですが、MainActivityのほうでログイン状態が確認できた時点でAccount情報をAnnictのapi呼び出しで取得してSQLiteに書き込んでおく(Cache)ことで、Accountページ表示時にAPI呼び出しを待たずに表示するようにした。
新規登録後やログアウト後にプレースホルダーの画像が0.5〜1秒くらい表示されて「う〜ん」ってなってのをこれでひとまず解消した。