Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

Compose UI

レイアウト、描画、入力など、デバイスの操作に必要な Compose UI の基本コンポーネント。
最新の更新 現在の安定版リリース 次のリリース候補 ベータ版リリース アルファ版リリース
2020 年 11 月 11 日 - - - 1.0.0-alpha07

構造

Compose は、androidx 内の 7 つの Maven Group ID を組み合わせたものです。各グループには対象とする機能のサブセットが含まれ、それぞれに固有のリリースノートがあります。

次の表に、各グループの説明と、それぞれのリリースノートのリンクを示します。

グループ説明
compose.animationJetpack Compose アプリ内でアニメーションを作成して、ユーザー エクスペリエンスを拡充します。
compose.compiler@Composable 関数を変換し、Kotlin コンパイラ プラグインで最適化を有効にします。
compose.foundationすぐに使用できるビルディング ブロックで Jetpack Compose アプリを作成し、独自のデザイン システム要素を構築する基盤を拡張します。
compose.materialすぐに使用できるマテリアル デザイン コンポーネントで Jetpack Compose UI を構築します。Compose の上位レベルのエントリ ポイントであり、www.material.io のガイドラインと適合するコンポーネントを提供するように設計されています。
compose.runtimeCompose のプログラミング モデルと状態管理の基本ビルディング ブロックと、Compose コンパイラ プラグインがターゲットとするコアランタイム。
compose.uiレイアウト、描画、入力など、デバイスの操作に必要な Compose UI の基本コンポーネント。
uiJetpack Compose ライブラリを操作します。

依存関係の宣言

Compose への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

dependencies {
    implementation "androidx.compose.ui:ui:1.0.0-alpha03"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerVersion "1.4.0"
        kotlinCompilerExtensionVersion "1.0.0-alpha03"
    }
}

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
    kotlinOptions {
        jvmTarget = "1.8"
        freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
    }
}

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

バージョン 1.0.0

Compose UI バージョン 1.0.0-alpha07

2020 年 11 月 11 日

androidx.compose.ui:ui-*:1.0.0-alpha07 がリリースされました。バージョン 1.0.0-alpha07 に含まれるコミットについては、こちらをご覧ください。

新機能

API の変更

  • スケーリングが不均一なユースケースに対応するために、互いに独立した水平軸と垂直軸のスケーリング ファクタを表す ScaleFactor インライン クラスが導入されました。
    • computeScaleFactor メソッドを ContentScale に追加しました。
    • 不均一なスケーリングを実施し、src 境界を拡大してデスティネーションを完全に占有する ContentScale.FillBounds を追加しました。
    • Size パラメータを使用して ScaleFactor パラメータを計算する演算子メソッドを追加しました。
    • Ic96a6b/172291582
  • Alignment を作成するための BiasAlignment ファクトリと BiasAbsoluteAlignment ファクトリが追加されました。(Iac836b/169406772
  • デベロッパーがフォーカスを強制的にクリアできるようにしました。(I90372
  • Compose 内のビューにエレベーションが描画されないバグが修正されました。(If7782
  • 命名規則が Modifier.drawBehind と一致するように、ContentDrawScope 内に onDrawBehind API を作成しました。(I4fc3ab/171955269
  • レイヤ API での 3D 変換 rotationX / rotationY を補完するように、カメラ距離のサポートを追加しました。(I40213b/171492100
  • コールバックなしの SelectionContainer を追加しました(Ibfadb
  • ExperimentalSubcomposeLayoutApi アノテーションを削除しました。@OptIn を追加せずに SubcomposeLayout を使用できるようになりました(I708ad
  • FirstBaseline と LastBaseline を androidx.compose.ui.layout パッケージに移動しました(Ied2e7
  • わかりにくかったため、drawShadow() 修飾子から不透明度を削除しました。(I82c62b/171624638
  • MeasureResult を MeasureScope の外に移動しました。(Ibf96db/171184002
  • いくつかのレイアウト関連シンボルを androidx.compose.ui から androidx.compose.layout.ui に移動しました。(I0fa98b/170475424
  • サポートが終了した FocusState2 を削除しました(I686cbb/168686446
  • ZIndexModifier が内部用になりました(I1808bb/171493718
  • 非 null の Size を返して不要なボックス化を回避するように、Size パラメータにおける lerp メソッドの戻り値の型を更新しました。(Ib0044
  • kotlinx-coroutines-test の runBlockingTest を使用してコンポジション フレーム イベントを待機するために Compose の MonotonicFrameClock に依存するコードをテストするための、TestMonotonicFrameClock を追加しました(I4402f
  • GestureScope.localToGlobal を削除しました(I15299b/171462785
  • onAllNodesWithSubstring ファインダーを追加しました(I81dd7b/171462889
  • androidx.ui.test モジュールのサポートが終了しました。androidx.compose.ui.test と androidx.compose.ui.test.junit4 に移行してください(I452e8

バグの修正

  • captureToBitmap を captureToImage に移動しました。(I86385
  • foundation.Text のサポートが終了し、material.Text に置き換えられました。テーマの値を使用しない、基本的で独自性のないテキスト API については、androidx.compose.foundation.BasicText をご覧ください。(If64cb
  • KeyboardOptions を受け入れるように TextFields を更新しました(Ida7f3
  • KeyboardOptions の名前を ImeOptions に変更しました(I82f36
  • KeyboardType と ImeAction を KeyboardOptions に移動しました(I910ce
  • アンビエントを提供する代替手段として provideDefault が追加されました。アンビエント値がまだ提供されていない場合にのみ設定されるアンビエント値を指定するために使用できます。(Id6635b/171024925
  • BaseTextField のサポートが終了しました。代わりに BasicTextField を使用してください。(I896eb
  • ui-test-junit4 モジュールを導入しました(Ib91f8
  • relativePaddingFrom の名前が paddingFrom に変更されました。レイアウト境界からテキスト ベースラインまでの距離を指定する際に便利なように、paddingFromBaseline 修飾子が追加されました。(I0440ab/170633813
  • SideEffect API と DisposableEffect API との整合性を持たせるために、LaunchedTask の名前が LaunchedEffect に変更されました。ベスト プラクティスを促進するために、サブジェクト パラメータのない LaunchedEffect は許可されません。(Ifd3d4
  • 構成が更新されたときに再コンポーズするリソース コンポーザブルを導入しました。(I6387cb/167352819
  • Recomposer は、作成時に CoroutineContext が必要になりました(Ic4610
  • 複数の Modifier.zIndex() を適用する場合は zIndex 値を合計します。以前は最初のものが優先されていました。(Ic514cb/170623936
  • 公開 API に影響を与えない、内部 SlotTable 実装に変更しました。(If9828
  • キーボード自動修正の IME オプションを追加しました(I57b8d
  • androidx.ui.test を androidx.compose.ui.test に移動しました(I9ffdb
  • KeyboardOptions.toImeOptions を公開 API から削除しました。(Ic2e45

外部からの協力

  • 内部アーティファクト androidx.compose.ui:ui-text-android の公開を無効にしました(Ib93fa

バージョン 1.0.0-alpha06

2020 年 10 月 28 日

androidx.compose.ui:ui-*:1.0.0-alpha06 がリリースされました。バージョン 1.0.0-alpha06 に含まれるコミットについては、こちらをご覧ください。

API の変更

  • Recomposer が CompositionReference になり、有効なコンポジションの親になりました。明示的な Recomposer が必要な場面は少なくなりました。(I4036f
  • コンポーザブル API がコンポジション間でデータを保持するために「remember」を内部的に利用していることをわかりやすく示すために、VectorPainter のサポートが終了し、rememberVectorPainter に置き換えられました。(Ifda43
  • 描画コマンドの順序を変更できる実装を提供するために、ContentDrawScope を DrawScope ではなくレシーバー スコープとして公開するように、Modifier.drawWithCache API を更新しました。これは、対応するプレンドモード アルゴリズムを適切に適用するために、コンテンツ ピクセルを最初にレンダリングする必要のあるブレンド / 色合い調整のユースケースに便利です。(Ie7ec8
  • SimpleContainer を PopupTestUtils.kt に移動しました(I78c57
  • ConsumedData がデータクラスではなくなりました。詳細については https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 をご覧ください(I1737f
  • Rtl ハンドル位置を修正しました。(I6e1e0
  • DrawScope と ContentDrawScope を、抽象クラスではなくインターフェースにリファクタリングしました
    • DrawScope の CanvasDrawScope 実装を作成しました
    • 代わりに CanvasScope を使用するように、DrawScope の実装をリファクタリングしました
    • DrawScope の依存関係をラップする DrawContext を作成しました
    • DrawScope の、サポートが終了したメソッドを削除しました(I56f5e
  • 互換性を破る変更: ポインタ イベントで変更できる必要がある唯一の値が消費データであるため、PointerInputFilter.onPointerEvent(...) からの戻り値を削除しました。PointerInputFilter.onPointerEvent(...) からデータを返すのではなく、渡された PointerEvents の消費データを変更するだけで済むようになりました。(I6acd0
  • MeasureScope と IntrinsicMeasureScope をインターフェースにしました。(I1a087b/170461665
  • AlignmentLine のマージ関数を非表示にしました。(I9da1ab/170612900b/170611568
  • コンポーズされた修飾子でインスペクタ情報を指定する機能を追加しました(Idee08b/163494569
  • SelectAll オプションを選択メニューに追加しました(Ief02b
  • ドキュメントに合わせて、デフォルト ピボット パラメータである center を取るように DrawTransform.rotate を更新しました。
    • 他の変換メソッドに合わせて、ピボット ポイントのオフセットを使用するように DrawScope.rotateRad を更新しました。
    • ピボットの x 座標と y 座標に浮動小数点数を使用する DrawScope.rotateRad オーバーロードのサポートが終了しました。
    • Iffcbbb/170434992

バグの修正

  • MissingGetterMatchingBuilder の API lint チェックが androidx で有効になりました(I4bbeab/138602561
  • テストを追加しました。(I6b8ae
  • ComposeTestRule で遷移が有効になりました。ComposeTestRule から、カーソルの点滅を有効にするオプションを削除しました。(If0de3
  • KeyboardCapitalization IME オプションを追加しました(I8ac38
  • 単一行のキーボード オプションを CoreTextField に追加しました(I72e6d
  • SimpleContainer を PopupTestUtils.kt に移動しました(I65c3e
  • Compose 全体での使用方法をわかりやすく表現するために、Radius API の名前を CornerRadius に変更しました。負のコーナー半径が 0 に固定されることを示すようにドキュメントを更新しました。(I130c7b/168762961
  • ACTION_DOWN を除くすべてのアクションで、onTouchEvent について false を返す子 Android ビューに MotionEvents を継続的に送信することで、Android の相互運用性を改善しました(I94c5ab/170320973
  • Box がインライン関数になりました。(Ibce0cb/155056091

外部からの協力

  • AnnotatedString.capitalizeAnnotatedString.decapitalize について、さまざまなロケールをサポートしました(I4aa7f

バージョン 1.0.0-alpha05

2020 年 10 月 14 日

androidx.compose.ui:ui-*:1.0.0-alpha05 がリリースされました。バージョン 1.0.0-alpha05 に含まれるコミットについては、こちらをご覧ください

API の変更

  • インスペクタ情報を指定するための DSL が追加されました(Ic9a22
  • LongPress が Text に移動されました(Iff2bc
  • 試験運用版の Modifier.pointerInput 入力一時停止修飾子(Ia77d2
  • コピー / 貼り付け / 切り取りのユーザー補助アクションが追加されました(I6db4f
  • AndroidOwner のパブリック コンストラクタが削除されました(Iacaef
  • ポップアップとダイアログが親ウィンドウから FLAG_SECURE を継承するようになりました。また、これを明示的に設定するためのオプションが追加されました(I64966b/143778148b/143778149
  • 消費データが変更可能になりました。また、消費を行う拡張関数の呼び出しが、新しい PointerInputChange を返さないようになり、その代わりに指定された PointerInputChange を変更できるようになりました

    これは、ユーザーコードで他のポインタデータを編集できないよう PointerEvent データを変更可能にする 2 段階プロセスの最初のステップです。2 つ目のステップで、PointerInputFilter.onPointerEvent(...) からの戻り値の型 List<PointerInputChange> を削除します(Id067e

  • Text での選択と、デモが無効になりました(Ie7e97

  • onGloballyPositioned がインライン関数になりました(I15830

  • OnPositionedModifier が OnGloballyPositionedModifier という名前に、onPositioned() が onGloballyPositioned() という名前に変更されました(I587e8b/169083903

  • hasPendingMeasureOrLayout プロパティが Owner に追加され、Owner に保留中のレイアウト作業があるかどうかを伝えられるようになりました(I3d9f8b/169038599

  • プログラムでフォーカスをクリアするために API を追加しました(Ie1dc2b/161487952

  • PointerInputFilter.onPointerInput(...) が削除されました。代わりに PointerInputFilter.onPointerEvent(...) を使用してください(I6f04a

  • Size の変更

    • Size.getFlipped が削除されました
    • Size.rem が削除されました
    • Size.truncDiv が削除されました(Ief44db/169790720
  • インライン クラス向け標識値の標準化の一環として、他のインライン クラスと整合するよう Color.Unset が Color.Unspecified という名前に変更されました(I97611b/169797763

  • TextOverflow.None が導入されました。オーバーフローが None の場合、Text はそれ以上オーバーフローを処理せず、実際のサイズを LayoutNode に報告するようになりました(I175c9b/158830170

  • API の一貫性を確保するため AnnotatedString.Builder.addStringAnnotation 内の scope パラメータが tag という名前に変更されました(I7c8cb

バグの修正

  • LazyColumn/Row のスクロール パフォーマンスが、スクロールごとのサブコンポジションでの作業を軽減することで改善されました。Composition クラス用の新しい hasInvalidations() メソッドが追加されました。Recomposer の hasPendingChanges() メソッドは hasInvalidations() という名前に変更されました(Ib2f32b/168293643b/167972292b/165028371
  • Float.POSITIVE_INFINITY ではなく Float.NaN になるよう Size.Unspecified パラメータが更新されました。無制限の Sizes だけでなく Size.Unspecified もチェックするよう Painter の実装が更新されました(I95a7e
  • カスタム Layouts での place() 呼び出しの順序で、子の描画順序を定義できるようになりました(Ibc9f6
  • ユーザー補助のために AnnotatedString から SpannableString への変換がサポートされるようになりました(Ief907
  • 可能な限りリフレクションの使用を回避するため、古いプラットフォームにある android クラス向けのスタブが追加されました(Ia1790
  • バグの修正: ソフトウェア キーボードの表示によってアプリが翻訳された場合に、ポインタ入力の座標が不正確になります(Ic4cecb/163077821

バージョン 1.0.0-alpha04

2020 年 10 月 1 日

androidx.compose.ui:ui-*:1.0.0-alpha04 がリリースされました。バージョン 1.0.0-alpha04 に含まれるコミットについては、こちらをご覧ください

API の変更

  • レイアウトや図形描画のモニタリング スコープを、有効でなくなった後に収集できるように、OwnerScope を追加しました。(Ic4cf8
  • コンテンツ レイアウトが再測定されたときとサイズが変更されたときに、それぞれコールバックを受け取るように、OnRemeasuredModifier と onSizeChanged() を追加しました。(I657cfb/154108792
  • 長いクリック セマンティクス アクションを追加しました。(I6281bb/156468846
  • FocusManager を非公開にしました。(I7872f
  • 実装を更新して、DrawModifier にオプションのプロパティを追加せずに専用の DrawCacheModifier 実装を作成するようにしました。

    各種メソッドのドキュメントを更新しました。(Ibd166

  • オブジェクト作成を回避するために、TextRange をインライン化しました。(Id034b

  • PlacementScope#parentWidth と PlacementScope#parentLayoutDirection を、カスタム レイアウトのプレースメント ブロックから読み取ることができなくなります。(Icc1aeb/168295623

  • セマンティクス プロパティに AccessibilityScrollState を追加しました。(Ifeda9

  • Modifier.drawWithCache を導入しました。これにより、サイズや状態に関する情報に依存する依存関係を条件付きで再作成する描画オブジェクトを容易に作成できるようになります。(I376dc

  • ParagraphConstraints を削除しました。幅が直接 Paragraph に渡されるようになりました。(Ica712

バグの修正

  • グラフィック API を多数更新しました。
    • スケール変換 API と回転変換 API を更新しました。これにより、DrawScope と DrawTransform の x 座標と y 座標に 2 つの float パラメータを使用してピボット座標を別個に示すのではなく、単一の Offset パラメータを使用するようにしました。
    • Rect.expandToInclude メソッドと Rect.join メソッドを削除しました。
    • 楕円に加えて長円を表示するように Radius のドキュメントを更新しました。
    • インライン Radius クラスのパブリック コンストラクタを直接呼び出すのではなく、関数コンストラクタを通じて Radius オブジェクトをインスタンス化する必要があることをドキュメントに記載しました。
    • topRight、bottomRight、bottomCenter などを照会するための RoundRect API を削除しました。
    • Rect.shift のサポートを終了して Rect.translate に置き換えました。
    • RoundRect.grow API と Rect.shrink API を削除しました。
    • RoundRect.outerRect の名前を Rect.boundingRect に変更しました。
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect と Rect.isStadium メソッドを削除しました。
    • RoundRect.longestSide の名前を RoundRect.maxDimension に変更しました。
    • RoundRect.shortestSide の名前を RoundRect.minDimension に変更しました。
    • RoundRect.center は、関数ではなくプロパティになりました。
    • RoundRect コンストラクタを更新し、x/y 半径の値の個々のパラメータではなく Radius プロパティを使用するようにしました。
    • 原点が(0,0)の長方形であると仮定していた Size API を削除しました。
    • Radius に記述解除 API を追加しました。
    • さまざまな RoundRect 拡張関数をプロパティに移行しました。
    • I8f5c7b/168762961
  • foundation.Box はサポートが終了しました。代わりに foundation.layout.Box を使用してください。(Ie5950b/167680279
  • Stack が Box に名前変更されました。compose.foundation.layout にある新しい Box を優先して、既存の Box はサポートが終了します。Box の子が複数ある場合、新しい Box は子を互いに重ね合わせるように動作します。これは、Column と同じように動作していた以前の Box とは異なります。(I94893b/167680279
  • Box 装飾パラメータのサポートは終了しました。Box に装飾やパディングを付ける場合は、代わりに修飾子を使用します。(Modifier.background、Modifier.border、Modifier.padding)(Ibae92b/167680279
  • グラフィック API を多数更新しました。
    • 範囲限定変換メソッドのある DrawScope API を更新し、変換がコールバック内でのみ適用され、コールバックが呼び出された後に削除されることを示すようにしました。
    • 丸みを帯びた長方形ではなくパスを参照するように clipPath のドキュメントを更新しました。
    • ドキュメント内の clipPath の右パラメータの間隔を修正しました。
    • DrawScope.drawCanvas の名前を drawIntoCanvas に変更し、size パラメータを削除しました。
    • インセット メソッドの dx パラメータと dy パラメータの名前を horizontal と vertical に変更しました。
    • 4 つのすべての境界に同じインセット値を指定するインセット オーバーロードを追加しました。
    • インセットが 4 つの辺すべてに適用されることを示すインセット メソッドに関するドキュメントを削除しました。
    • Rect クラス用のドキュメントを更新しました。
    • kdoc スタイルに合わせて Rect パラメータのコメントを更新しました。
    • Rect.join と Rec.expandToInclude を削除しました。
    • Rect.translate(offset) のオーバーロードを作成し、Rect.shift のサポートを終了しました。
    • If086ab/167737376
  • rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled、textInputServiceFactory を @VisibleForTesting でアノテーションし、内部 API 化して kdoc を非表示にしました。(I554ebb/168308412
  • デフォルトの選択を無効にし、予期しない動作を回避するために、SelectionContainer を Top から削除しました。代わりに SelectionContainer を使用することで、選択する必要があるコンテンツをラップできます。(I8dfe0b/158459594

バージョン 1.0.0-alpha03

2020 年 9 月 16 日

androidx.compose.ui:ui-*:1.0.0-alpha03 がリリースされました。バージョン 1.0.0-alpha03 に含まれるコミットについては、こちらをご覧ください

API の変更

  • スクロールの前後のセマンティクス アクションを削除しました。AccessibilityRangeInfo に steps を追加しました。(Ia47b0
  • Owner から onInvalidate() を削除しました。OwnedLayer が無効化を処理します。(Ica72bb/162061312
  • Offset パラメータを使用する Size API の演算子メソッドを削除しました。これらのオペレーションの結果は不明確であり、結果の型は予期しないものです。例: size - offset は相違のあるオフセットまたはサイズ結果を返すか?

    また、Size クラスのサポートが終了したメソッドを削除しました。(Iec902b/166514214

バグの修正

  • LazyColumn のアイテムが誤って描画される問題を修正しました。この問題は、条件によってはクラッシュも伴っていました。(Ibcf17b/163066980b/165921895
  • DpConstraints とそれを使用する API のサポートは終了しました。(I90cdbb/167389835
  • createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android から androidx.ui.test に移動しました(Idef08b/164060572
  • レイアウト API の gravity の用法で、名前が align または alignment に一貫して変更されました。(I2421ab/164077038
  • 現在のグローバル メソッドのサポートが終了するため、onNode などのグローバル メソッドが ComposeTestRule に追加されました。(Ieae36

バージョン 1.0.0-alpha02

2020 年 9 月 2 日

androidx.compose.ui:ui-*:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 に含まれるコミットについては、こちらをご覧ください。

API の変更

  • layoutnode 境界が変更されたときに、コールバックを削除してオーナーに通知します。(If654eb/166106882
  • evenOdd または NonZero パスの塗りつぶし規則に従ったシェイプのカットアウトをサポートするために、ベクター グラフィック パスでの filltype パラメータのサポートを追加しました。(I43dd2
  • Uptime と Velocity がインライン クラスになりました(I48f4a
  • Duration がインライン クラスになりました(I565eb
  • layoutnode 境界が変更されたときに、オーナーに通知するコールバックを追加します。(Ic40b3
  • オフセットと半径を指定した Rect 関数コンストラクタによって、左、上、右、下ではなく、左、右、上、下の順序で Rect が作成される問題を修正しました。

    Rect で非推奨のコンパニオン メソッドを削除し、関数コンストラクタに置き換えました。

    Rect.kt にメソッドを確認するテストを追加しました。(I08460b/165822356

バグの修正

  • MutableRect(変更可能な長方形)を追加しました。(I71bd2b/160140398
  • Matrix4 が Matrix に変更されました。vectormas パッケージの他のすべての部分が削除されました。(Ibd665b/160140398
  • コンポーズ可能な関数の呼び出し規則が変更されました。これは互換性を破るバイナリの変更です。このバージョンの Compose コンパイラ プラグインで動作するには、すべてのライブラリを再コンパイルする必要があります。

    変更された API は明示的なオプトインがあるコンパイラ API だけであるため、ソースレベルで互換性を破る変更はありません。(I7afd2b/158123185

  • PointerInputFilter にディスパッチすると PointerInputFilter が同期的に削除される可能性があるクラッシュを修正しました。(I58f25

バージョン 1.0.0-alpha01

2020 年 8 月 26 日

androidx.compose.ui:ui-*:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 に含まれるコミットについては、こちらをご覧ください

バージョン 0.1.0-dev

バージョン 0.1.0-dev17

2020 年 8 月 19 日

androidx.compose.ui:ui-*:0.1.0-dev17 がリリースされました。バージョン 0.1.0-dev17 に含まれるコミットについては、こちらをご覧ください

API の変更

  • emitView のサポートが終了しました。Compose 内で View を出力する場合、可能であれば、代わりに AndroidView を使用してください。View と ViewGroup を直接コンポーズする方法は、将来サポートされなくなります。ただし、これらがコンポジション ツリーに残っていて、AndroidView を使用してコンポーズされる場合は除きます。(I29b1eb/163871221
  • FocusState2 のサポートが終了し、FocusState に置き換えられました。(Ia8b79b/160822876b/160923332
  • サポートが終了した AndroidView のオーバーロードが削除されました。(I946b9b/163802393
  • カスタム出力では、1 つ以上のセッターをスキップし、その出力とは関係なく再コンポーズできることを宣言できるようになりました。(Ibbd13
  • ベクタークラスが変更され、データクラスではなくなりました。同じオブジェクト インスタンスがコンポジションに使用されるためです。

    ベクターの内容が変わる場合に条件付きで再描画できるように、VectorPainter の mutableStateOf フラグが追加されました。

    VectorComponent インスタンスがリファクタリングされて VectorPainter の一部となり、コンポジション全体で再利用されるようになりました。

    GroupComponent と PathComponent が更新されて、名前フィールドが変更可能になりました。(Ieae45b/151378808

  • onChildPositionedOnChildPositionedModifier が削除されました。 代わりに子レイアウトで onPositionedOnPositionedModifier を使用する必要があります。(I4522eb/162109766

  • オフセットがインライン クラスになりました。(Iaec70

  • SelectionContainer に修飾子パラメータを追加しました。(I4aadab/161487952

  • サポートが終了した FocusModifier を削除しました。(I0b4bab/160922116b/160821157b/162441435b/160822875b/160921940

  • SemanticsPropertyKeymergePolicy ラムダを追加しました。これを使用して、mergeAllDescendants セマンティクスのマージに関するカスタム ポリシーを定義できます。デフォルトのポリシーでは、すでに存在する場合は親の値が使用され、それ以外の場合は子の値が使用されます。(Iaf6c4b/161979921

  • Constraints がインライン クラスになりました。(I88736

  • 一般的なフォーカス ロジックを AndroidComposeView から移動させる FocusManager を追加しました。(I528efb/161487952b/162206799

  • アルファ版リリースの PointerEventPass の名前を更新しました。(Ifda6f

  • IntOffset がインライン クラスになりました。(Iac0bf

  • IntSize がインライン クラスになりました。(I2bf42

  • PlacementScope.placeAbsolute() の名前が PlacementScope.place() に変更され、以前の PlacementScope.place() の名前が PlacementScope.placeRelative() に変更されました。その結果、PlacementScope.place() メソッドは、右から左(RTL)へのコンテキストで、自動的に位置をミラーリングしなくなります。必要な場合は、代わりに PlacementScope.placeRelative() を使用してください。(I873acb/162916675

  • AlertDialog はボタンに FlowRow を使用するようになりました。(I00ec1b/161809319b/143682374

  • 一部のテスト ユーティリティは、所属している場所にないため、非公開になりました。今後一般公開される予定です。(I32ab1

  • ポインタ入力コードの編成をリファクタリングしました。(Ie3f45

  • PxBounds のサポートを終了して Rect に置き換えました。PxBounds のすべての使用を更新して Rect に置き換え、移行に役立つ適切なサポート終了およびアノテーションへの置き換えを追加しました。(I37038b/162627058

  • サポートが終了した KeyEvent2 を削除しました。代わりに KeyEvent を使用してください。(Ied2d0b/162097587

  • KeyEvent に unicode プロパティが追加されました。このプロパティを使用すると、指定したキーとメタキーの状態の組み合わせにより生成される Unicode 文字を取得できます。(If3afc

  • DelayUp カスタム イベントと関連クラスは、変更される可能性が高いため、オプトイン API になりました。(I56d6f

  • 不要になった 2 つの PointerEventPass が削除されました。(I3dd9d

  • Paragraph.paint にパラメータ color、shadow、TextDecoration を追加しました。この関数を使用すると、不要な Paragraph の再作成を回避できます。(I81689

バグの修正

  • TextField から onFocusChanged コールバックを削除しました。代わりに Modifier.focusObserver を使用してください。(I51089b/161297615
  • Modifier.drawBorder のサポートが終了しました。代わりに Modifier.border を使用してください。Border データクラスは BorderStroke に置き換えられました。(I4257d, b/158160576
  • サポートが終了した FrameManager の呼び出しを削除しました。

    内部コンポーズ API が変更され、mutableStateof() などの状態オブジェクトを追跡するオーバーヘッドが減りました。(I80ba6

  • VerticalScroller と HorizontalScroller が削除されました。代わりに、ScrollableColumn/Row を使用してください。Modifier.drawBackground を削除しました。Modifier.background を使用してください。(I73b0db/163019183

  • 状態を保存する何かが for ループ内で使用されたときにクラッシュする問題が修正されました。現在は savedInstanceState() 内で同じキーを持つことが可能になり、UiSavedStateRegistry の API がこの新しい要件に合わせて調整されました。(I4ab76b/160042650b/156853976b/159026663b/154920561

  • 明確化のため、state { ... } composable のサポートを終了し、remember { mutableStateOf(...) } の明示的な呼び出しに置き換えました。これにより、状態管理の API サーフェス全般とコンセプトの数が縮小され、クラス プロパティ委任の by mutableStateOf() パターンと一致するようになります。(Ia5727

  • compose の命名パターンに合わせて RRect を RoundRect に名前変更しました。RRect に類似する関数コンストラクタを作成し、RRect 関数コンストラクタのサポートを終了しました。(I5d325

バージョン 0.1.0-dev16

2020 年 8 月 5 日

androidx.compose.ui:ui-*:0.1.0-dev16 がリリースされました。バージョン 0.1.0-dev16 に含まれるコミットについては、こちらをご覧ください

API の変更

  • OnChildPositioned のサポートが終了しました。代わりに、OnPositioned を子で使用してください。(I87f95b/162109766
  • setViewContent のサポートが終了しました。代わりに setContent を使用してください。(I7e497b/160335130
  • ViewBinding に基づいてレイアウト リソースをインフレート、コンポーズするための AndroidViewBinding API を追加しました。(I081c6
  • KeyEvent2 は KeyEvent に置き換えられました。(I2d770, b/162097585
  • Alt ハードウェア キーのサポートを追加しました。(I9036b
  • FocusManager のサポートが終了しました。代わりに Modifier.focus()、Modifier.focusObserver()、Modifier.focusRequester() を使用してください。(I74ae4b/162211322
  • loadVectorResource は trimPath 属性をサポートします。(I808fe
  • ダイアログを UI に移動しました。(I47fa6
  • 不要になった 2 つの PointerEventPass が削除されました。(I33ca7
  • PointerInteropModifier を実装しました。この機能を使用すると、MotionEvents を受け取り、Android View を実装しているかのように Compose とやり取りできるようになります。(Ieb08c
  • サポートが終了したタグ修飾子を削除しました。代わりに layoutId を使用してください。(Idaa05b/162023919
  • 右から左(RTL)をサポートする API が更新されました。レイアウト方向の読み取りと変更に使用できる LayoutDirectionAmbient が追加されました。Modifier.rtl と Modifier.ltr が削除されました。(I080b3
  • ベクター グラフィックでのパスのトリミングをサポートします。(Ie16c9b/158188351
  • 必要に応じてカスタム レイアウト修飾子を作成できる Modifier.layout() を追加しました。(I73b69b/161355194
  • 新しい AndroidView API を追加し、既存の API のサポートを終了しました。(I5bcfd
  • Modifier.plus のサポートが終了しました。代わりに Modifier.then を使用してください。「then」を使用すると、より順序付けが明確になります。また、チェーンを破壊して読みにくくする「Modifier.padding().background() + anotherModifier」の入力が防止されます。(Iedd58, b/161529964
  • View 階層内で Compose コンテンツをホストするための [Abstract]ComposeView View サブクラスを追加しました。(I46357
  • RowColumn をインライン関数にしました。これにより、使用する際のオーバーヘッドが大幅に削減されます。(I75c10
  • SubcomposeLayout を追加しました。これは、測定中に後にならないと使用できない値を使用してサブツリーをコンポーズする場合に、子をコンポーズできるようにする低レベル プリミティブです。たとえば、WithConstraints は SubcomposeLayout を使用せずに実装されています。(I25cc8
  • Compose 階層のルートを基準とする SemanticsNode の相対位置を取得する SemanticsNode.positionInRoot を追加しました。(Icdf26, b/161336532
  • MotionEvents は、Android から Compose に渡されて、Android に再び返されるようになりました。(I14be8b/158034713
  • dropdownPopup を削除しました。(I00430
  • カットアウト ディスプレイにおけるポップアップ位置を修正しました。(Idd7dd
  • TextLayoutResult を取得するユーザー補助アクションを追加しました。(I9d6e6
  • RemeasurementModifier を追加しました。レイアウトを同期的に再測定できるようになります。通常、再測定 / 再レイアウトは自動的に行われるため、この機能は必要ではありませんが、スクロール中に LazyColumnItems 内で使用できます。(I5f331b/160791058
  • getLineEllipsisOffset / getLineEllipsisCount を削除しました。代わりに getLineVisibleEnd / getLineEnd / isLineEllipsized を使用してください。(I85aa2
  • 推奨する方法を示すためにマークとアノテーションを追加しました。(I66b20
  • TextLayoutResult でより多くの行の API が公開されます。(I79bd2
  • 組み込みの単位を変換するための組み込みのベクター コンバーターに Foo.VectorConverter を介してアクセスできるようになりました。例: Dp.VectorConverter、Color.VectorConverter、Float.VectorConverter など。(I3e273

バグの修正

  • 広範な API の修正に対応しました。(I077bc
    1. 未使用の OffsetBase インターフェースを削除しました。
    2. 一貫性のある API サーフェスを持つように Offset クラスと IntOffset クラスを調整しました。
    3. Offset API に合わせて、IntOffset.Origin を IntOffset.Zero に名前変更しました。
    4. ユーザーが独自の Canvas インスタンスを作成できるように、Canvas インターフェースから nativeCanvas メソッドを削除しました。
    5. lateinit の代わりに非 null パラメータとなり、フィールドの非 null 可能性が確保されるように DrawScope をリファクタリングするため、スタブ EmptyCanvas クラスを作成しました。
    6. ClipOp 列挙型の名前をパスカルケースに変更しました。
    7. FilterQuality 列挙型の名前をパスカルケースに変更しました。
    8. StrokeJoin 列挙型の名前をパスカルケースに変更しました。
    9. PointMode 列挙型の名前をパスカルケースに変更しました。
    10. PaintingStyle 列挙型の名前をパスカルケースに変更しました。
    11. PathFillType 列挙型の名前をパスカルケースに変更しました。
    12. StrokeCap 列挙型の名前をパスカルケースに変更しました。
    13. DrawCache の実装が更新され、lateinit パラメータを使用しなくなりました。
    14. DrawScope が更新され、fillPaint および strokePaint 内部パラメータの遅延委任を使用しなくなりました。
    15. オーバーヘッドを削減するため、Box の使用を回避するように Image composable を更新しました。
    16. Outline クラスを更新して @Immutable アノテーションを追加しました。
    17. PathNode を更新して、各パス手順に @Immutable アノテーションを追加しました。
    18. Vector サブコンポジションを更新し、等価性に関する冗長な条件付きチェックを削除しました。Compose はすでにこの処理に対応しているためです。
    19. Rect コンパニオン コンストラクタ メソッドのサポートが終了し、関数コンストラクタに置き換わりました。
    20. Brush のクラスと関数コンストラクタを @Immutable および @Stable API で更新しました。
    21. PascalCase となるように VertexMode 列挙型を更新しました。
    22. DrawScope selectPaint メソッドを更新し、ペイントでストローク パラメータが変更されている場合は、条件付きで上書きできるようにしました。
    23. Size を更新して API の分解を追加し、UnspecifiedSize を Unspecified に名前変更して、未使用のメソッドを削除しました。
  • API レベルに応じて Android フレームワークの BlendMode と PorterDuff モードを適切にマッピングするように Compose BlendMode API の使用方法を更新しました。BlendMode#isSupported API を導入しました。この API は可能性クエリとして機能し、使用する前にデバイスで BlendMode がサポートされているかどうかを判断できます。(I0ef42
  • Lazy リストの itemContent パラメータとして LazyItemScope が追加されました。これにより、親の最大サイズを塗りつぶすための修飾子が提供されます。アイテムでビューポートを塗りつぶす必要があるが、アイテムが制約なしで測定されるため通常の Modifier.fillMaxSize() が機能しない事例を解決できます。(Ibd3b2b/162248854
  • SemanticsNodeInteraction.performPartialGesture を削除しました。代わりに SemanticsNodeInteraction.performGesture を使用してください(Id9b62
  • LazyColumnItems の名前が LazyColumnFor に変更されました。LazyRowItems の名前が LazyRowFor に変更されました。(I84f84
  • foundation.shape.corner パッケージが foundation.share にフラット化されました。(I46491b/161887429
  • AndroidComposeTestRule の名前を createAndroidComposeRule に変更しました。(I70aaf
  • TextLayoutResult にさらに API を追加しました。(Id7e04
  • material の FilledTextFieldTextField に、foundation の TextFieldBaseTextField に名前変更されたため、最もシンプルで望ましい API を簡単に見つけて使用できるようになりました。(Ia6242b/155482676
  • Modifier.drawBackground の名前が Modifier.background に変更されました。(I13677

バージョン 0.1.0-dev15

2020 年 7 月 22 日

androidx.compose.ui:ui-*:0.1.0-dev15 がリリースされました。バージョン 0.1.0-dev15 に含まれるコミットについては、こちらをご覧ください

依存関係の更新

  • 0.1.0-dev15 バージョンの Compose を使用するには、上記の依存関係の宣言で示されている新しいコード スニペットに従って、依存関係を更新する必要があります。

API の変更

  • FocusModifier のサポートが終了し、Modifier.focus、Modifier.focusRequester、Modifier.focusObserver に置き換えられました。FocusState と FocusDetailedState のサポートが終了し、FocusState2 に置き換えられました。(I46919b/160822875b/160922136
  • フォーカス状態の変化を監視するための修飾子を追加しました。(I05866b/160924455b/160923326
  • フォーカスの変更をリクエストするための修飾子を追加しました。(I8dd73b/161182057b/160924778
  • ツールバー メニューを調整して、コピー、切り取り、貼り付けが適切に表示されるようにしました。(Id3955
  • 単一値のセマンティクス プロパティで呼び出しスタイルが使用されるようになりました。たとえば、「semantics { hidden = true }」は、現在は semantics { hidden() } として記述されます。(Ic1afdb/145951226b/145955412
  • FocusModifier に代えて Modifier.focus を追加しました。(Ib852ab/160924778
  • TextField の選択用に FloatingToolbar を追加しました。(Ie8b07
  • キー入力関連の API に試験運用版 API アノテーションを追加しました。(I53c0a
  • すべてのフォーカス関連の API に試験運用版 API アノテーションを追加しました。(I53b24b/160903352
  • FocusDetailedState に代わるものとして FocusState2 を追加しました。(I0a3bab/160822595
  • Focus API 用の @OptIn アノテーションである ExperimentalFocus を追加しました。(I1544bb/160820961
  • レイアウトからの整数ピクセル境界を表す IntBounds ユニットクラスが追加されました。PopupPositionProvider の API が更新され、これを使用するようになりました。(I0d8d0b/159596546
  • Applier には、コンポジションを破棄するための clear() メソッドが必要になりました。(Ibe697
  • KeyEvent のサポートが終了し、KeyEvent2 に置き換えられました。(I68730
  • 新しいオプションのフラグ useUnmergedTree がテスト ファインダーに追加されました。(I2ce48
  • LayoutNode API が試験運用版になりました。(I4f2e9
  • 以下のさまざまなインライン クラスタイプにコピーメソッドを追加しました。

    • Offset
    • Size
    • Radius
    • Motion
    • TransformOrigin

    • Size.copy コンパニオン オブジェクト メソッドのサポートを終了し、インスタンス コピーメソッドに置き換えました。(Ife290b/159905651

  • ポップアップ、ダイアログ、メニューがコンテキストに応じた MaterialTheme を継承するようになりました。(Ia3665b/156527485

  • TextDirection の名前が ResolvedTextDirection に変更されました。(I3ff38

  • Layout() 関数の測定ブロックからレイアウト方向のパラメータを削除しました。ただし、測定スコープ オブジェクトを介してコールバック内でレイアウト方向を使用できます。(Ic7d9d

  • 再利用するため、SelectionHandles をリファクタリングしました。(I420e0

  • Clickable が削除されました。Modifier.clickable を使用してください。(I84bdf

  • TestTag と Semantics が削除されました。代わりに Modifier.testTag と Modifier.semantics を使用してください。(I15ff0b/158841414

  • この変更が行われる前、compose コンパイラ プラグインは、スコープ内の解決された「composer」に「emit 演算子」メソッドが見つかった場合、@Composable 関数内のコンストラクタの呼び出しに対して自明でないインターセプトを実行していました。(I5205ab/158123804

  • Modifier.testTag との混同を避けるため、Modifier.tag の名前が Modifier.layoutId に変更されました。(I995f0

  • Placeable#get(AlignmentLine) から返されるアライメント ラインの Int 位置が非 null になりました。クエリされたアライメント ラインが見つからなかった場合は、AlignmentLine.Unspecified が返されます。(I896c5b/158134875

  • AndroidView composable に修飾子パラメータが追加されました。(I48a88b/158746303

  • Semantics() のサポートが終了しました。代わりに Modifier.semantics() を使用してください。(I72407b/158841414

  • viewModel() composable を追加しました。これにより、アクティビティ内またはフラグメント内と同様に、ViewModel の作成や、作成済み ViewModel の取得を行うことができます。(I5fdd1

  • IntPx の使用を Int に置き換えました。IntPxPosition を IntOffset に置き換えました。IntPxSize を IntSize に置き換えました。(Ib7b44

  • サイズ設定情報を示す際に使用するクラスの数を整理統合するため、PxSize ではなく Size クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される幅と高さを示す 2 つの float 値をパックできるようになります。(Ic0191

  • 位置情報を示す際に使用するクラスの数を整理統合するため、PxPosition ではなく Offset クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される x オフセットと y オフセットを示す 2 つの float 値をパックできるようになります。(I3ad98

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。Px クラス全体が削除されています。(I3ff33

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I086f4

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Id3434

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I97a5a

  • TestTag のサポートが終了しました。代わりに Modifier.testTag を使用してください。(If5110b/157173105

  • ParentDataModifier#modifyParentData のデフォルトの no-op 実装が削除されました。これは、そもそもインターフェースを実装しないのと同じでした。(I0deaa

  • 以前にサポートが終了した ScaleFit が削除されました。代わりに ContentScale を使用してください。(Ifbc5b

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I19d02

  • マテリアル デザイン メニューの実装である ui-material に DropdownMenu コンポーネントを追加しました。(I9bb3d

  • サポートが終了した LayoutTag() を削除しました。代わりに Modifier.tag() を使用してください。サポートが終了した Modifier.matchParent() を削除しました。代わりに Modifier.matchParentSize() を使用してください。(If8044

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I57bff

  • Modifier.semantics のサポートが再開され、上位レベルのコンポーネントでの使用が可能になりました。(I4cfdc

  • CanvasScope の実装を整理統合し、DrawScope と ContentDrawScope のみとしました。CanvasScope の名前を DrawScope に変更しました。DrawScope を更新して Density インターフェースを実装し、LayoutDirection を提供しました。ContentDrawScope の DrawScope サブクラスを削除しました。Painter と PainterModifier が更新され、RTL プロパティを自身で維持しなくなりました。これは DrawScope ですでに提供されているため、手動で提供する必要はありません。(I1798e

  • DoubleTapGestureFilter により、ツリー全体で SingleTapGestureFilter の曖昧さが解消されました。(If92b1

  • Alignment API を更新し、絶対アライメント(RTL コンテキストで自動ミラーリングを行わない)のサポートを追加しました。(I38cd3

  • DrawLayer 修飾子 API が変更されました。outlineShape の名前が shape に変更され、RectangleShape のデフォルト値を持つようになり、null 値非許容型になりました。clipToOutline の名前が clip に変更されました。clipToBounds は、RectangleShape で clip == true を設定するのと同じであるため、削除されました。(I7ef11b/155075735

  • キャンバスを公開するハイレベルの Compose API を更新して、代わりに CanvasScope を公開するようにしました。これにより、ユーザーが独自の Paint オブジェクトを維持管理する必要がなくなります。引き続きキャンバスの利用が必要なユーザーは、drawCanvas 拡張メソッドを使用できます。このメソッドにより、対象のキャンバスに対して Draw コマンドを実行するコールバックが行われます。(I80afd

  • WithConstraints 後置ラムダ API が変更されました。2 つのパラメータに代わってレシーバ スコープが設けられ、constraints と layoutDirection に加えて、Dp 単位で指定する minWidth、maxWidth、minHeight、maxHeight プロパティが用意されました。(I91b9ab/149979702

  • LayoutModifier2 の名前が LayoutModifier に変更されました。(Id29f3

  • サポートが終了した LayoutModifier インターフェースを削除しました。(I2a9d6

  • Layout と LayoutModifier2 の組み込み測定関数に IntrinsicMeasureScope レシーバを追加しました。これにより、暗黙的に伝播されるレイアウト方向を持つ組み込みクエリ API が提供されます。(Id9945

  • Layout と LayoutModifier の子を異なるレイアウト方向で測定できるようになりました。(Ibd731

  • 同じ親レイアウト内の子の描画順序を制御するため、新しい Modifier.zIndex() が追加されました。DrawLayerModifier の elevation プロパティは名前が shadowElevation に変更され、描画順序を制御しなくなりました。DrawShadow のパラメータの順序が変更され、最初のパラメータは elevation、2 番目のパラメータは shape(デフォルトは RectangleShape)になりました。(I20150b/152417501

  • Owner の onSizeChange と onPositionChange を削除しました。(I5c718

  • Constraints2 を追加しました。これは、IntPx ではなく Int 制約値のみをサポートする Constraints のコピーです。今後 IntPx は削除され、すべての整数型の制約が Android のようにピクセルと見なされるようになります。

    • また、将来的に IntPxSize に代わるものとして、IntSize を追加しました。(I4b43a
  • Alignment を任意の値でインスタンス化できるようになりました。1D Alignment を追加しました。(Ia0c05

  • alignToSiblings が Placeable ではなく Measured を受け入れるようになりました。(I5788d

  • I45f09b/152842521

    • ScaleFit の名前を ContentScale に変更しました。
    • ContentScale を ui-graphics から ui-core モジュールに移動し、Alignment API と同じモジュールで動作するようにしました。
    • FillMaxDimension の名前を Crop に変更しました。
    • FillMinDimension の名前を Fit に変更しました。
    • Fit の名前を Inside に変更しました。
    • これは、ImageView.ScaleType の同等のものに合わせるためです。
    • Crop と Alignment.Center を組み合わせると ImageView.ScaleType.CENTER_CROP と同じ結果が得られ、Fit を Alignment.Center とともに使用すると ImageView.ScaleType.FIT_CENTER と同じ結果が得られ、Inside を Alignment.Center とともに使用すると ImageView.ScaleType.CENTER_INSIDE と同じ結果が得られることを示すドキュメントを追加しました。
  • 描画修飾子に RTL サポートを追加しました。(I0aaf9

  • XML から Android ビューを拡張する API がリリースされました。詳細については、ViewInCompose のデモをご覧ください。(I42916

  • DrawModifier API の改善:

    • draw() のレシーバ スコープを ContentDrawScope にしました。
    • draw() のパラメータをすべて削除しました。
    • DrawScope に以前の CanvasScope と同じインターフェースを設定しました。
    • ContentDrawScope に drawContent() メソッドを追加しました。(Ibacedb/152919067
  • LayoutCoordinates に positionInParent と boundsInParent を追加しました。(Icacddb/152735784

  • DrawLayerModifier と drawLayer() で、clipToBounds と clipToOutline のデフォルト値が false になりました。(I0eb8bb/152810850

  • LayoutResult の名前を MeasureResult に変更しました。(Id8c68

  • レイアウト修飾子を定義する新しい API として LayoutModifier2 を追加し、LayoutModifier のサポートを終了しました。(If32ac

  • 修飾子と演算子を工場出荷時の拡張機能に置き換えました。(I225e4

  • 特定のレイヤに対する描画コマンドの表示リストをオフセットできるように、translationX/Y プロパティを追加しました。これは、アニメーションやタッチイベントに応答してコンテンツを移動する場合に便利です。(I8641c

  • レイヤ上の特定のポイントを中心とする回転とスケーリングをサポートするため、pivotX パラメータと pivotY パラメータをレイヤ API に追加しました。(Icf7c3

  • コンポーズ可能な関数 OnPositioned および OnChildPositioned に代えて、OnPositionedModifier と OnChildPositionedModifier を追加しました。(I2ec8f

  • レイアウトに RenderNode を追加できる修飾子 LayerModifier を追加しました。クリッピング、不透明度、回転、スケーリング、シャドウを設定できます。これにより、RepaintBoundary が置き換えられます。(I7100db/150774014

  • レイアウトの方向を親レイアウト ノードから子レイアウト ノードに伝えるようにしました。レイアウト方向修飾子を追加しました。(I3d955

  • Stack コンポーネントが右から左への方向性をサポートするようになりました。(Ic9e00

  • Compose レイアウトで RTL のサポートを開始しました。(Ia5519

  • Density と DensityScope が 1 つのインターフェースに統合されました。ambientDensity() ではなく、DensityAmbient.current を使用できるようになりました。withDensity(density) の代わりに単なる with(density) を使用してください。(I11cb1

  • LayoutCoordinates を変更して providedAlignmentLines を Map ではなく Set にし、LayoutCoordinates が値を取得するために get() 演算子を実装するようにしました。これにより、修飾子ごとに新しいコレクションを作成しなくても、複数の修飾子で 1 つ以上のまとまった値を変更することが容易になります。(I0245a

  • LayoutCoordinates に位置プロパティがなくなりました。LayoutModifier、回転、スケーリングを考慮すると、位置プロパティは妥当ではありません。代わりに、デベロッパーは parentCoordinates と childToLocal() を使用して、ある LayoutCoordinate から別の LayoutCoordinate への変換を計算する必要があります。

    LayoutCoordinates は、サイズ プロパティに PxSize ではなく IntPxSize を使用します。レイアウトでは整数のピクセルサイズを使用するため、すべてのレイアウト サイズで浮動小数点値ではなく整数を使用する必要があります。(I9367b

  • Constraints の API サーフェスを改善しました。(I0fd15

  • Canvas オブジェクトをラップしてステートレスの宣言型描画 API サーフェスを公開する CanvasScope API を作成しました。変換は固有のレシーバ スコープ内に含まれます。また、サイズ設定情報のスコープは対応するインセット境界に設定されます。描画オペレーションを構成するためにコンシューマが独自の Paint 状態オブジェクトを維持する必要はありません。

    • CanvasScopeSample を追加しました。また、デモアプリを更新して、宣言型グラフィックのデモを追加しました。(Ifd86d
  • 未使用の MaskFilterAPI は、使用方法が限定されており、ほとんどのユースケースでハードウェア アクセラレーション用に最適化されていないため、削除されました。(I54f76

  • RectangleShape を androidx.ui.foundation.shape.* から androidx.ui.graphics.* に移動しました。(Ia74d5b/154507984

  • API 内のすべての null 値許容型の Color が null 値非許容型に置き換えられ、null の代わりに Color.Unset が使用されるようになりました。(Iabaa7

  • 基になる ImageAsset のサブセクションの描画をサポートするため、オプションの rect パラメータを ImagePainter に追加しました。(I0ea9e

  • Unset Color が追加され、Color をボックス化しなくても未設定の値を表せるようになりました。(If901a

  • Canvas.rotate 拡張メソッドと Canvas.scale 拡張メソッドが追加され、変換でオプションのピボット座標を使用できるようになりました。デフォルトは、現在のキャンバス変換の左上隅です。

    また、一貫性を確保するため、Canvas.rotateRad が拡張メソッドになりました。(Ibaca6

  • ImageAsset からのピクセル情報のクエリをサポートする PixelMap API を作成しました。(I69ad6

  • compose とその構築基盤である Android フレームワーク API の間のオブジェクト変換の命名規則に従うため、toFrameworkRect と toFrameworkRectF の名前をそれぞれ toAndroidRect と toAndroidRectF に変更しました。これらの API に関するドキュメントも更新しました。(I86337

  • ベクター グラフィック用の既存のサブコンポジション API に代えて、VectorPainter API を追加しました。サブコンポジションの結果は、DrawModifier ではなく VectorPainte オブジェクトになります。以前の DrawVector composable のサポートを終了し、VectorPainter に置き換えました。

    Image(Painter) API の名前を PaintBox(Painter) に変更しました。ImageAsset の代わりに VectorAsset を使用する点を除いて Image composable と同様に動作する Vector composable を作成しました。(I9af9ab/149030271

  • Image の名前を ImageAsset に変更し、レイアウトへの参加とコンテンツの描画に使用される Image データと今後使用される Image composable を区別しやすくしました。android.graphics.Bitmap に対する拡張メソッド Bitmap.asImageAsset() を作成しました。これにより、従来の Android アプリ開発と compose フレームワークを組み合わせるために役立つ ImageAsset のインスタンスを作成できます。(Id5bbd

  • TextDirection.Content を追加しました。(I48f36

  • TextDecoration.plus 演算子を追加しました。(I0ad1a

  • Force が TextDirectionAlgorithm 列挙値から削除されました。(Icc944

  • TextDirectionAlgorithm の名前が TextDirection に変更されました。(I75ce8

  • TextField の選択用に LongPressAndDrag を実装しました。(I17919

  • 範囲内のすべてのアノテーションを返す AnnotatedString.getStringAnnotations を追加しました。(I1fa00

  • Locale と LocaleList のパッケージ名を androidx.ui.text から androidx.ui.intl に変更しました。(I8132c

  • TextField のカーソルが、点滅アニメーションで表示されるようになりました。(Id10a7

  • API の変更: AnnotatedString(builder: Builder) の名前が annotatedString(builder: Builder) に変更されました。(Ia6377

  • API の変更: AnnotatedString.Item の名前が AnnotatedString.Range に変更されました。(I2d44d

  • AnnotatedString.Builder.addAnnotationString の名前を addStringAnnotation に変更しました。(I5059e

  • onTextInputStarted コールバックで提供される SoftwareKeyboardController を使用して、ソフトウェア キーボードの表示 / 非表示を切り替えられるようになりました。(I8dc44b/151860051

  • merge() 関数に委任する TextStyle /ParagraphStyle / SpanStyle 用のプラス演算子を追加しました。(Ia1add

  • FontWeight.lerp がスナップしなくなりました。データクラスのままです。(I521c2

  • FontWeight コンストラクタが公開され、データクラスではなくなりました。(Id6b1f

  • getLineStart、getLineEnd、getEllipsisOffset、getEllipsisCount を TextLayoutResult に追加しました。(Ibc801

  • ui-text モジュールの名前が ui-text-core に変更されました。(I57dec

  • 使用されている ui-geometry モジュール内に重複する Size クラスが存在するため、未使用の Size クラスを削除しました。(I1b602

  • AdapterList を追加しました。これは、表示されるアイテムのみを作成して配置するスクロール リスト コンポーネントです。現在の既知の問題は、垂直方向のみであること、子への変更のすべてのケースを完全に処理できないことなどです。(Ib351b

  • Box にパディング、枠線、シェイプ、背景のパラメータを追加しました。(I05027b/148147281

バグの修正

  • テキスト フィールド内の onFocusChange コールバックの名前を onFocusChanged に変更しました。(Ida4a1
  • VerticalScroller と HoriziontalScroller のサポートが終了しました。Column / Row の動作とパラメータの組み込みエクスペリエンスをサポートするには、ScrollableColumn と ScrollableRow を使用するか、独自の要素で Modifier.verticalScroll と Modifier.horizontalScroll を使用してください。同様に、ScrollerPosition のサポートが終了し、ScrollState に置き換えられました。(I400ceb/157225838b/149460415b/154105299
  • runOnIdleCompose の名前が runOnIdle に変更されました。(I83607
  • いくつかのテスト API の名前がより直感的にわかりやすいものになりました。findXYZ API という名前はすべて onNodeXYZ に変更されました。doXYZ API という名前はすべて performXYZ に変更されました。(I7f164
  • 新しいコンポジションなしでも ViewGroup 内で Compose UI をコンポーズできるようになりました。例については、ViewInteropDemo をご覧ください。(I9ab0bb/160455080
  • sortWith と removeRange を MutableVector に追加しました。(Icccf7
  • TextField の選択を変更するには、Drag 選択ハンドルを実装してください。(I27032
  • NativeShader Expect クラスをラップする Shader インライン クラスを削除しました。NativeShader の名前を Shader に変更しました。ラップされた Shader インライン クラスは、API サーフェスに価値のある機能を何も付加しておらず、しかもインライン クラスでした。そのため、NativeShader クラスを直接使用してください。(I25e4d
  • PainterModifier をリファクタリングして、指定された制約と ContentScale パラメータに基づくスケーリングを行わないようにしました。Painter の実装は、描画対象である指定された DrawScope のサイズに基づいて、独力で描画コンテンツをスケーリングするようになります。

    VectorPainter のキャッシュ ビットマップが、指定された描画サイズではなくデフォルト サイズに変更される問題を解決しました。

    ImagePainter を更新して、自身のコンテンツのスケーリングを PainterModifier にまかせるのではなく、自身で行うようにしました。(I6ba90

  • アニメーションのタイミングをサポートする最上位レベルの withFrameNanos 関数を追加しました。(Ie34c5

  • @Untracked アノテーションのサポートが終了しました。@ComposableContract(tracked=false) に置き換えます。(Id211e

  • androidx.ui.foundation.TextFieldValue と androidx.ui.input.EditorValue のサポートが終了しました。この型を使用する TextField、FilledTextField、CoreTextField の各 composable もサポートが終了しました。代わりに androidx.ui.input.TextFieldValue を使用してください。(I4066db/155211005

  • ディスパッチ中にサブコンポジションを介して PointerInputFilters が削除されると、ポインタ入力ディスパッチがクラッシュを引き起こす問題を解決しました。この問題は解決済みです。(I1f48bb/157998762

  • ディスパッチ中にサブコンポジションを介して PointerInputFilters が削除されると、ポインタ入力ディスパッチがクラッシュを引き起こす問題を解決しました。この問題は解決済みです。(Iab398b/157998762

  • Radius クラスをインライン クラスにリファクタリングしました。コンパニオン作成メソッドを削除し、関数コンストラクタに置き換えました。この関数コンストラクタは、デフォルト パラメータで、y 軸沿いの半径が、必須の x 軸半径パラメータの半径と一致するようになっています。

    DrawScope.drawRoundRect を更新し、2 つの float 値を使用して x 軸沿いと y 軸沿いの半径を個別に示すのではなく、単一の Radius パラメータを使用するようにしました。(I46d1b

  • Recompose composable は、有用な抽象化ではなくなりました。ほとんどの場合、再コンポーズは、MutableState 割り当ての結果として生じます。それ以外の場合は、invalidate 関数を使用して、現在のスコープの再コンポーズをトリガーすることをおすすめします。(Ifc992

  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Iede0b

  • Compose のコンパイラにおけるコード生成の仕様を変更しました。変更前の Compose コンパイラでは、コンポーズ可能な関数の呼び出し部分を変換していました。変更後はコンポーズ可能な関数の本文を変換し、呼び出し部分での変換は一部を除いて行いません。

    つまり、Compose ランタイムとのロジック上のやり取りは、呼び出し部分ではなく関数本文の開始部分で発生します。

    この変更は Compose の使用方法に関わらずソース互換であり、Compose を使用していても通常はコードを更新する必要はありません。

    この処理をサポートするため、すべてのコンポーズ可能な関数の JVM の署名が変更されました。コンポーズ可能な関数でパラメータを 1 つ受け取る場合、3 つのパラメータを受け取る関数に変換されます。追加されるパラメータは Composer と「key」整数です。ビットマスク整数として、呼び出しを通じてメタデータを伝達する際に使用されます。

    なお、デフォルトの引数がコンポーズ可能な関数に変換されるようになっています。変換時に、関数の合成によるオーバーロードがデフォルトで行われることはないため、定義される関数の数は少なくなります。

    今回の変更による確認済みの意図的な動作変更は次のとおりです。

    1. 一部の呼び出しが、変更前にはスキップされなかった箇所でスキップされる。
    2. デフォルトの引数を含む式で、コンポーズ可能な式が正しく登録および処理される。

    最適化に関しては、次の内容が含まれます。 1. パラメータの比較結果が、コールグラフを介して他のコンポーズ可能な関数に伝達される。その結果、実行時の比較処理が減ってスロット テーブルのサイズが小さくなる。また、スキップされるコンポーズ可能な関数が以前よりも増える。 2. コンパイル時に「静的」と判定されたパラメータは実行時に比較または保存されなくなる。その結果、比較処理が減ってスロット テーブルのサイズが小さくなる。 3. 関数の本文に制御フロー構造が使用され、生成されるグループの数が最小限に抑えられる。その結果、スロット テーブルのサイズが小さくなり、実行時の処理が減少する。 4. 関数に渡される未使用のディスパッチ パラメータとレシーバ パラメータが、関数の本文内で使用されていない場合には、関数のスキップを行うかどうかの判断には用いられない。

    互換性を破る変更のほとんどは、コンパイラが直接ターゲットとする API に関するものであり、compose の一般的な使用には影響しません。 1. Composer::startExpr が削除されました。 2. Composer::endExpr が削除されました。 3. Composer::call のサポートが終了しました。 4. key の non-varargs のオーバーロードが削除されました。今後は vararg バージョンを使用してください。 5. Pivotal アノテーションのサポートが終了しました。代わりに key を使用してください。6. ScopeUpdateScope::updateScope が変更され、Function1 ではなく Function3 を想定するようになりました。7. restartableFunction と restartableFunctionN が更新され、コンパイル時パラメータが追加されました。(I60756b/143464846

  • サポートが終了した LayoutAlign 修飾子を削除しました。(I10877

  • RepaintBoundary を削除して DrawLayerModifier に置き換えました。(I00aa4

  • Button、FloatingActionButton、Clickable に個別の enabled パラメータを追加しました。Button の一部のパラメータの名前と順序を変更しました。(I54b5a

  • ButtonStyle を別の関数に置き換え、テキスト(文字列)オーバーロードを削除しました。使用方法については、更新済みのサンプルをご覧ください。(If63abb/146478620b/146482131

  • アンビエント API を大幅に変更しました。詳細については、ログと Ambient<T> のドキュメントをご覧ください。(I4c7eeb/143769776

  • LayoutDirection によって決定されるデフォルトの TextDirection の動作を変更しました。たとえば、LayoutDirection が RTL である場合、デフォルトの TextDirection は RTL になります。以前は TextDirection.ContentOrLtr/Rtl でした。(I4e803

  • バグ修正: フォントの太さとフォント スタイルを AnnotatedString にネストすると、テキストが正しくレンダリングされないバグを修正しました。(I77a9d

  • 一般的に使用されるパラメータを Text() に追加しました。Text(style = TextStyle(textAlign = TextAlign.Center)) のような少数のパラメータを渡すローカル テキスト スタイルを現在作成している場合、Text(textAlign = TextAlign.Center) のようにパラメータを直接指定できます。(I82768

  • ui-android-text モジュールの名前が ui-text-android に変更されました。(I68cbe