Sep 10ComposeでLifecycleを監視する(2023年9月バージョン)ComposeでLifecycleを監視するには DisposableEffect を使う方法が一番使用されてるのかなと思います。公式ドキュメントにも記載されています。 Lifecycle 2.7.0-alpha01 からこれがちょっと簡単に記述できるようになります。 注意: まだalphaなので今後変更があるかもです。 FlowでLifecycleの状態を取得 currentStateAsSta …Android4 min readAndroid4 min read
Jul 2WindowInsetsのConsumeについてWindowInsets には Consume/Consumption(消費)の仕組みがあります。この仕組みについてまとめます。 ※この記事ではComposeについてのみ解説しています。 Consume/Consumption WindowInsetsの消費とはどういうことかというと、親要素でWindowInsetsのPaddingを設定したあとに、子要素で同じものを設定したとしても何も起き …Jetpack Compose6 min readJetpack Compose6 min read
May 28Jetpack ComposeでカスタムShapeを実装するJetpack Composeには Shape というのがあり、これを使って、画像を切り抜いたり、背景色を塗ったり、ボーダーを描いたりすることができます。 Compose側では CircleShape , RoundedCornerShape , CutCornerShape などが定義されていますので、基本的なものはこれらで対応可能になっています。 もし、定義されていないShapeを使用したい場合は、自分でカスタムのShapeも実装することが可能です …Jetpack Compose5 min readJetpack Compose5 min read
Apr 10Kotlinのdata objectKotlin 1.9でリリース予定で、これを書いてる時点の最新バージョン(1.8.20)ではPreview機能として使用できる data object について簡単にまとめておきます。 基本はドキュメントを読んでもらえば良いかなとは思います。 What's new in Kotlin 1.8.20 | Kotlin Release date: April 3, 2023 The Kotlin 1.8.20 release is out and here are some of its biggest highlights: You can also…kotlinlang.org 通常の object との違いなどを見ていきます。 toString() data object では toString() が定義され …Kotlin7 min readKotlin7 min read
Apr 2JetpackComposeのmovableContentOf状態を保持したまま要素の配置を変更可能にする movableContentOf について紹介します。 movableContentOf の基本 まずは例として以下のように条件によって縦と横の並びを変更したいとします。 @Composable fun MovableContentSample() { // ... if (vertical) { Column { …Android4 min readAndroid4 min read
Feb 23GradleのDependency lockingGradleは依存関係のバージョン指定に動的バージョンを使用することができますが、このバージョンを固定する機能があるので、それについてまとめておきます。 Locking dependency versions Use of dynamic dependency versions (e.g. 1.+ or [1.0,2.0)) makes builds non-deterministic. This causes builds to break…docs.gradle.org 他言語のライブラリ管理のロックファイル(BundlerのGemfile.lockやnpmのpackage-lock.json)と似たようなものになります。 動的なバージョン ぼくが観測している範囲では基本的にあまり …Gradle10 min readGradle10 min read
Jan 20Composeの様々なクリック処理ComposeではModifierを使ってクリックを処理する方法がいくつかありますので、それらをまとめておきます。 Modifier.clickable clickable は一番シンプルなクリックイベントを処理するものになります。 Box( modifier = Modifier.clickable { // クリックされたときの処理 } ) この cli …Jetpack Compose6 min readJetpack Compose6 min read
Dec 30, 2022ViewModelで画面引数を受け取る意外と知られていない気がするので、ViewModelで画面引数を受け取る方法をまとめておきます。 AssistedInjectなどの特殊なことも必要なく、かなり簡単にViewModelで画面引数を受け取れます。 受け取る方法 実はViewModelで画面引数を受け取るには非常に簡単で、以下のように SavedStateHandle から取得できます。 class SampleViewModel( savedStateHandle: SavedStateHandle ) : ViewModel() { val userId: String? = savedStateHandle["userId"] // ... } ViewModelのコンストラクタで SavedStateHandle を受け取るようにしておくと、画面引数として渡したときと同じキーを使うだけ取得できます。Android4 min readAndroid4 min read
Dec 9, 2022Proto DataStoreで様々なデータを扱うProto DataStoreはSharedPreferencesに比べて多くのデータタイプを扱うことができるようになっています。Proto DataStoreでどのようなデータを扱うことができるかを見ていきます。Protocol Buffersの話がメインになります。 また、最後にprotoファイルを変更するときに気をつけることを簡単に書いてい …Android9 min readAndroid9 min read
Nov 19, 2022Jetpack Composeで画面の結果を返すComposeの画面遷移で、前の画面に結果を返す方法についてまとめておきます。 基本的にはFragmentと同じような感じで NavBackStackEntry の SavedStateHandle を使用していきます。 結果を返す ScreenAからScreenBに遷移して、ScreenBでの画面の結果をScreenAに返す処理です。 navController.previousBackStackEntry?.run { savedStateHandle["result"] = "Foo" } 上記のように NavHostController#previousBackStackEntry の SavedStateHandle にKey-Valueで設定するだけです。 previousBackStackEntry っていうのが大事で前の画面の NavBackStackEntry アクセスしています。Jetpack Compose4 min readJetpack Compose4 min read