Jetpack Composeで線の描画などをする際に使用するAndriod Pathクラスについて大体わかるようにまとめました。 はじめに この記事は「Android Pathクラスが大体わかる」を目標にまとめています。 そのためにはoffset(オフセット)の考え方が必要になるかもしれないため、こちらも読んでみてください。 下記は学びやすいと思う順番に筆者が並べました。 参考程度に読んでいただければと思います。 大体わかる順 moveTo こちらは描画を開始する点を指定する関数です。 画面に対する描画は発生しませんが、引数の値の考え方(offset)がわかりやすいと思います。 relativeMoveTo こちらはmoveToと基本的には同じですが、offsetが異なります。 しかしこの違いがわかればここから先も大体わかると思います。 lineTo こちらは開始点から引数で指定した点ま
表示の変わらないUI要素(Composable関数)に対して行われる再Composeは無駄な処理です。 ですので、極力排除したいところですが、表示が変わらないため、画面上からの判断が難しくなっています。 このようなとき、Layout Inspectorを利用すると、無駄な再Composeを見つけ出すことが出来ます。 ※環境:Android Studio Giraffe | 2022.3.1 Patch 1 再Composeの確認方法 Android StudioのLayout Inspectorを使うと、再Compose(フェーズComposition)が実施された関数と回数をグラフィカルに確認できます。 この機能を使うためには、「Show Recomposition Counts」にチェックが必要です。 Layout Inspectorの画面は図のような構成になっています。 ライブアップ
Kotlin Coroutines Flow Kotlinには便利なFlowというインターフェースがあります。 これがとても便利なのですが、いろいろな種類のクラスと拡張関数が用意されていて使いこなすのは一苦労です。 この記事では、私がよく使うFlowのテクニックとその解説を紹介します。 Flowとは何か Flowはコールドストリームな非同期処理インターフェースです。 コールドストリームとは、購読者が現れて初めて動き出すストリームで、対となるのはホットストリームなChannelです。 それぞれよく使われる用途があるのですが、Flowの方が圧倒的に使う場面は多いと思います。 よく使うFlowの例 大きく分けて、 StateFlow / MutableStateFlow SharedFlow / MutableSharedFlow callbackflow { } に分かれます。 StateFl
こんにちは。Android アプリ開発担当の nagayama(@nagayan_dev)です。 この記事は Gunosy Advent Calendar 2023 の 1 日目の記事です。昨年最後の記事は koid さんの 障害発生時の社内コミュニケーションをスムーズにするために でした。 今年もよろしくお願いします。 今回は私が担当している「auサービスToday」で DataStore の導入と段階的移行の基本実装を行ったため、その内容についてお伝えします。 DataStore とは 現状と対応方針 方針 1. Repository のインタフェースとなっている「データごとの取得・保存メソッド」はそのまま使用する 方針 2. Repository の戻り値は Flow型 にする 方針 3. SharedPreferences と DataStore が共存できるようにする 移行実装
CompositionLocalの継承関係 CompositionLocalは次に示すような継承関係を持ちます。 CompositionLocal#provided関数の実装に見ると、Dynamic側はremember+mutableStateOfが用いられているのに対し、Static側はdata classが用いられています。 : : fun <T> staticCompositionLocalOf( defaultFactory: () -> T ): ProvidableCompositionLocal<T> = StaticProvidableCompositionLocal( defaultFactory ) : : : internal class StaticProvidableCompositionLocal<T>( defaultFactory: () -> T ) :
Jetpack ComposeにおいてUIの下位階層にデータを渡すには、Composable関数に引数を渡していくのが一般的だと思います。 引数で渡す以外の方法として、CompositionLocal があります。 これの使い方について解説します。 注意事項先に CompositionLocal に関する注意事項を書いておきます。 CompositionLocal はほとんどケースでは使わなくて良いものです。グローバル変数のように見えるため乱用するとメンテンスが難しくなったりバグを引き起こしやすくなったりする可能性があります。 一部ケースで有用なものですが、使用する際は十分に注意してください。 実装方法例として、User情報を下位階層に渡したい場合を実装していきます。 まず compositionLocalOf を使ってCompositionLocal のキーを作成します。 型パラメータと
はじめに 今回はJetpack Roomの導入方法から基本的な使い方、シードデータを登録するサンプルまでをやっていきたいと思います。 Jetpack Roomとは? Jetpack Roomは、Android Jetpackの一部である永続データベースライブラリです。RoomはSQLiteを対象とした抽象化レイヤで、データベースのセットアップ、設定、クエリを行うための便利なAPIが用意されています。これにより、Androidアプリがデータベースとやりとりする際の処理を自動化することが可能になります Room を使用してデータを永続化する | Android Developers Room を使用してローカル データベースにデータを保存する | デベロッパー向け Android | Android Developers Roomの最新バージョン AndroidX Tech: an
Jetpack Compose には Composition Local という仕組みが用意されています。 これを使うとバケツリレー問題に対応することができます。 バケツリレー問題 例えば深いところの Composable で Context が必要だとします。 class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val context: Context = this setContent { MyAppTheme { MyApp(context) } } } } @Composable fun MyApp(context:Context) { TopScreen(context)
StateFlowの深堀り、SharedFlowとの違いとstateIn【kotlin coroutines flow】 StateFlowはkotlin corouteinsの1.3.6で追加された状態管理用の特別なFlowです。 以前、「StateFlowのドキュメントを読み込む」という記事を書きましたが、その後SharedFlowが追加され、若干実装に変更がありました。 また、新たにstateInというoperatorも追加されています。 今回はそれらを含めたStateFlowの詳細な仕様に関して深堀りしていきたいと思います。 Flow, SharedFlow, StateFlowの比較はこちらの記事を、SharedFlowの深堀りはこちらの記事を参考にしてください。 StateFlowの基本的な使い方StateFlowは状態管理に特化したFlowです。 StateFlowはMuta
このガイドでは、Windows機械を使用してAndroidアプリを開発する際のビルド時間を短縮するために、Microsoft Defenderのセキュリティ設定で除外を設定する方法について説明します。 Microsoft Defenderのアンチウイルスの概要 Windows 10バージョン1703以降では、Microsoft Defender AntivirusアプリはWindows Securityの一部です。 Microsoft Defenderは、ウイルス、ランサムウェア、スパイウェア、およびその他のセキュリティ脅威からリアルタイムで保護することで、PCを安全に保つことを目的としています。 しかし、Microsoft Defenderのリアルタイム保護は、Androidアプリの開発時にファイルシステムへのアクセスを大幅に遅くし、速度を上げることにもなります。 Android のビル
はじめに 今回はAndroidの実装しているときに割と忘れがちな画面回転やアプリから離脱した時にActivityの再生成が走った時のUI保存について書いていきます。 まず、従来のViewシステムではActivityまたはFragmentのonSaveInstanceStateを内でBundleに保存する。 またはViewModelにSavedStateHandleコンストラクタ引数を渡して保持するという選択肢もあるかと思います。 一方JetpackComposeではFragmentは基本的に使わず、さらにrememberSaveableというUIの状態を保存するAPIが用意されているためそちらを使用します……というのはComposeの状態保存では必須と言っても過言ではないrememberの派生で存在自体は把握している人がほとんどかと思います。 そこで今回はrememberとremember
Jetpack Compose とandroidx.lifecycle 2.5.0 の SavedStateHandle 連携強化を試す こんにちは、株式会社カウシェで Android 版アプリを開発している @sintario です。 今回は Jetpack Compose でのアプリ開発における androidx.lifecycle 2.5.0 を使った状態管理のシンプルな実装プラクティスをご紹介します。 目次・本稿執筆時のライブラリ ・問題設定 ・素朴に実装してみる: androidx.lifecycle 2.4.x の範囲で ・API と状態定義 ・Jetpack Compose で状態を UI に反映する 素朴にデータ読み込みを実装してみる ・少し厳しい条件を追加:状態保持 ・状態を持ち越せる ViewModel に書き換える ・androidx.lifecycle 2.5.0
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く