Android

Navigation Componentの暗黙的DeepLinkの処理を追う

背景/概要 最近FragmentベースのNavigation Componentの導入を再検討しています。 数年前はXMLでNavGraphを作成し、actionで画面遷移を定義するのが一般的でしたが、バージョン 2.4.0からナビゲーションルートとKotlin DSLによる動的なグラフ作成が導入され…

proguard-rules.proとconsumer-rules.pro

背景/概要 Androidのライブラリモジュールを作成するとconsumer-rules.proとproguard-rules.proも作成されますが、その役割を「難読化」という表面的なことしか知らずにいました。 このままではプロのAndroidエンジニアとは名乗れない気がしたので、ちゃんと…

Androidで安全にブラーをかける

背景 ブラー効果の流行 最近はアプリでブラー効果をよく見ます。 YouTube Music アプリでのブラー効果 ブラー効果を使う理由は、次のようなものだと思います。 背景をぼかすことで、その上の文字や画像に注目させたい 没入感を高める(奥行きを出す) また注…

プロダクトで安全にDataStore移行する

DataStoreの紹介 Preferences DataStore と Proto DataStore Preferences DataStoreの実装イメージ ① DataStoreのインスタンス作成 ② キーの定義 ③ データの取得 ④ データの更新 Preferences Storeをプロダクトへ導入する アプリ アーキテクチャとの関係 Dat…

レイアウトパラメータってStyleに書いていいの?

はじめに StyleはViewの外観を指定する属性(attribute)の集まりです。 そのため、Viewの属性の共通化したい時に使っていると思います。 ただ最近「レイアウトパラメータってStyleに書いていいのかなぁ」と疑問に思うことがありました。 ※ レイアウトパラメ…

In-App Review API の導入とトラブルシューティング

In-App Review API とは? アプリ内でPlayストアのレビューができる機能です。 これまではユーザをPlayストアに移動させてレビューしてもらっていましたが、この In-App Review API を使うと、Playストアに移動することなくアプリ上でレビューすることができ…

ActivityのisFinishingで破棄される理由を確認する

ActivityのisFinishingでわかること 公式ドキュメントのonDestroyの章では、以下2つのシナリオを区別するのに用いると書かれています。 アクティビティが終了する(ユーザーがアクティビティを完全に閉じるか、アクティビティに対して finish() が呼び出さた…