Compose UI

レイアウト、描画、入力などのデバイス操作に必要な Compose UI の基本コンポーネント。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2022 年 7 月 27 日 1.2.0 - - 1.3.0-alpha02

構造

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

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

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

依存関係の宣言

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

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

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.0-alpha03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.3.0-alpha03")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.0-alpha03"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

フィードバック

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

新しい問題を報告する

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

バージョン 1.3

バージョン 1.3.0-alpha02

2022 年 7 月 27 日

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

API の変更

  • 圧力を取得するための新しいプロパティ PointerInputChange#pressure を追加しました。(I45a5eb/205164819
  • コンポジションで TextMeasurer インスタンスを簡単に作成して記憶するための rememberTextMeasurer を追加しました。(I8d66e
  • RectRoundRectMutableRectcontains 関数を呼び出すための Kotlin in 構文をサポートするようになりました。(Ie42b0b/238642990
  • API のよりシンプルな部分と合わせて簡単に実装できるようになったため、KeyInjectionScope から不要な関数を削除しました。削除した関数には、pressKeyskeysDownkeysUp などがあります。(I81d77
  • KeyInjectionScope 内の定数とパラメータの単位がミリ秒である場合に接尾辞「Millis」を追加するよう、これらの名前をリファクタリングしました。(Iabef5
  • テキスト編集に関する問題をトラブルシューティングできるよう toStringForLog() メソッドを EditCommand に追加しました。(I53354b/228862731
  • CanvasdrawBehind のような DrawScope で動作するコンポーザブルや修飾子に、マルチスタイルのテキストを描画できるように、DrawScopedrawText 拡張関数を追加しました。(I16a62b/190787898
  • TextMeasurer という新しい試験運用版 API を導入しました。この API を利用すると、Compose ランタイムから切り離して、BasicText と同じ結果を出す任意のテキスト レイアウト演算を行えます。(I17101
  • SlotTree.ktmapTree を追加しました。これにより、ツールを利用して、asTree のように最初にメモリコピーを作成することなく SlotTree を検査できます。Layout Inspector では、パフォーマンスが約 10 倍向上します。(I5e113
  • バイナリ出力ファイルに保存されるよう Compose プレビューを変更し、デベロッパーがライブラリから MultiPreview アノテーションを書き込み、再使用できるようにしました。(I85699b/233511976

バグの修正

  • Velocity トラッカーに InputEventChange イベントを追加する際に位置ではなく差分を考慮することで、ターゲット要素が移動した場合も含めて、すべてのケースで速度が正確に計算されるようにしました。(Icea9db/216582726b/223440806b/227709803
  • アノテーションがある場合に AnnotatedString.toUpperCase によって発生する NPE を修正しました。(I0aca2b/210899140

バージョン 1.3.0-alpha01

2022 年 6 月 29 日

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

API の変更

  • 実際の測定 / レイアウトの前の先読みパスをサポートする新しい LookaheadLayout。レイアウトが変更されたときに事前計算を行いつつ、事後先読みの測定 / レイアウトを許可することが可能になるため、事前計算済みのサイズ / 位置を使用して、ターゲットに対するサイズと位置をアニメーション化することができます。SubcomposeLayouts はまだサポートされていませんが、今後のリリースで対応する予定です。(I477f5
  • TextStyleSpanStyle のブラシのフレーバーにオプションの alpha パラメータを追加して、Text 全体の不透明度を変更できるようになりました。(Ic2facb/234117635
  • AnnotatedStringTalkBack のリンクをサポートするために、UrlAnnotation のアノテーション タイプと関連メソッドを導入しました。(I1c754b/231495122
  • ユーティリティ機能をランタイムに移行。(I4f729

バグの修正

  • TextLayoutResult.getLineForOffset がスローしない。(Idc5d6b/235876324

外部からの協力

  • コンポーズ可能な関数内または snapshotFlow を介して状態を監視する新しい API WindowInfo.keyboardModifiers を追加しました。(Icdb8a

バージョン 1.2

バージョン 1.2.0

2022 年 7 月 27 日

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

1.1.0 以降の重要な変更

  • フォーカス走査の改善:

    • 新しい BeyondBoundsLayout コア API を使用して、Lazy リストのフォーカス ドリブン スクロールが動作するようになりました
    • FocusOrderFocusProperties に新しい動作カスタマイズ API を追加しました
    • 物理キーボードまたはテレビリモコンでの動作を改善しました
  • 新しい API:

    • ウィンドウ インセット
    • ジェスチャー ドリブンで無限のレイアウト アニメーション用のコア プリミティブ
    • GraphicsLayer 機能(RenderEffect を含む)
  • 多くのバグの修正とパフォーマンスの改善

バージョン 1.2.0-rc03

2022 年 6 月 29 日

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

  • 1.2.0-rc02 からの変更はありません。

バージョン 1.2.0-rc02

2022 年 6 月 22 日

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

バージョン 1.2.0-rc01

2022 年 6 月 15 日

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

API の変更

  • compose ライブラリのインターフェースが jdk8 デフォルト インターフェース メソッドを使ってビルドされるようになりました。(I5bcf1
  • 他のキーが押されている状態またはオンになっている状態のときにキーの押下を挿入する高階関数を KeyInjectionScope に追加しました(withKeysDownwithKeysToggled など)。また、特定のメタキーが押されているかどうかをチェックするためのプロパティも追加されました(いずれかの Ctrl キーが押されているかどうかを確認する isCtrlDown など)。各関数に関するドキュメントについては、KeyInjectionScope を参照してください。(I9f6cdb/229831515
  • カスタムのオーバースクロール効果とそれを受け入れる Modifier.scrollable のオーバーロードを可能にするために、試験運用版の OverscrollEffect が導入されました。
  • 試験運用版の LocalOverScrollConfigurationfoundation.gesture から foundation パッケージに移動し、名前を LocalOverscrollConfiguration に変更しました。(If19fbb/204650733
  • runComposeUiTestWithoutActivity {} の名前を runEmptyComposeUiTest {} に変更し、createEmptyComposeRule() に合わせました。(I6fed7

バージョン 1.2.0-beta03

2022 年 6 月 1 日

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

API の変更

  • pressKeyTimesisCapsLockOn および friends とともに KeyInjectionScope に追加しました。また、API は、メタキーを押したままマウスボタンをクリックするなど、マウスとキーボードを組み合わせた注入のパターンもサポートするようになりました。(I4c8dab/229831515
  • キーイベント注入の試験運用版サポートを追加しました。performKeyInput を使用してキーイベントを送信するか、performMultiModalInput によるマルチモーダル入力ジェスチャーの際に MultiModalInjectionScopekey プロパティを介してキーイベントを送信します。API のドキュメントについては、KeyInjectionScope をご覧ください。(Ic5000b/229831515
  • Android でサポートされている Google Fonts の正規のインターネット ソースを取得するための新しい GoogleFont.Provider.AllFontsListUri を追加しました。
  • Google Fonts が Compose への読み込みに失敗した場合に再スローされるエラー メッセージを改善しました。(I0416c

バグの修正

  • 速度トラッカーに InputEventChange イベントを追加する際に位置ではなく差分を考慮するようになり、ターゲット要素が移動した場合でもすべてのケースで速度が正確に計算されるようにしました。(I51ec3b/216582726b/223440806b/227709803
  • コンポーザブルで、クイック設定タイルから切り替えた後すぐに Show Layout Bounds の設定が適用され、アクティビティを終了して再入力する必要がなくなりました。(I843d5b/225937688
  • ユーザー補助の文字列検索で、フォントの読み込みがトリガーされなくなりました以前は、StyleSpans でフォントの読み込みが試みられ、FontFamily.Resolver が上書きされていた場合にクラッシュを引き起こしました。(I4609d
  • カーソルがテキスト フィールドの末尾にあるときに Delete キーを押してもクラッシュしなくなりました。
  • DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand において、コンストラクタ引数が負数でないことが必須になりました。(Ica8e6b/199919707

バージョン 1.2.0-beta02

2022 年 5 月 18 日

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

API の変更

  • 他のプレビュー タイプでの機能の再利用(I19f39

バグの修正

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer の名前を DisposeOnDetachedFromWindowOrReleasedFromPool に変更し、破棄が発生しない場合でなく、発生する場合のことが名前により反映されるようにしました。(If15ca

バージョン 1.2.0-beta01

2022 年 5 月 11 日

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

新機能

  • これは、1.2 ベータ版の最初のリリースです。

API の変更

  • 試験運用版の BeyondBoundsInterval を追加しました。これは、LazyList のカスタム実装が可視境界を超えてアイテムをレイアウトする際に使用できます。(Ifabfbb/184670295
  • Modifier.composed の鍵付きバージョンが安定版 API になりました。(Ie65e4b/229988420
  • コンポジション ローカルを使用して現在のビュー情報を取得するように rememberNestedScrollConnection API を簡略化しました。(I67ca7
  • @ComposableTarget アノテーションと、@ComposableTargetMarker によってマークされたアノテーションを、@file 接頭辞を使用したファイル スコープで使用できるようになりました。ファイル スコープでターゲット アノテーションを使用すると、コンパイラは、ファイル内のすべてのコンポーズ可能な関数が、関連付けられた Applier をターゲットとするものと想定します。たとえば @file:UiComposable を使用すると、すべての @Composable 関数が Compose UI Applier をターゲットとすることが宣言されます。別の Applier をターゲットとする関数では、目的の Applier に対するターゲット マーカー アノテーションを明示的に指定する必要があります。(I40804
  • プラットフォームに依存しない新しいテスト API である interface ComposeUiTestfun runComposeUiTest(block: ComposeUiTest.() -> Unit) を導入しました。これらは、TestRule を使用することなく Compose UI テストを実行できます。ComposeTestRule を使用せずにテストを実行するには、テストをラムダとして runComposeUiTest に渡して、レシーバ スコープ ComposeUiTest のメソッドとメンバーを使用します。これらは ComposeContentTestRule の場合と同じです。

    基盤となるアクティビティへのアクセスを可能にするために、AndroidComposeTestRule と同様に Android 固有の interface AndroidComposeUiTestfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) を追加します。さらに詳細に制御するために、class AndroidComposeUiTestEnvironment をインスタンス化することもできます。

    デスクトップ実装は class DesktopComposeUiTest ですが、現時点ではデスクトップ固有の実行関数は用意されていません。

    ComposeTestRule から ComposeUiTest にテストを移行するには、次のようにします(Android の例)。移行元:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    移行先:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • 現時点では、ComposeContentTestRuleComposeTestRuleComposeUiTest から拡張されません。つまり、ComposeUiTest の拡張関数は TestRule インターフェースでまだ呼び出すことができません。ComposeUiTest が安定版 API に移行すると、ComposeContentTestRuleComposeTestRuleComposeUiTest から拡張するように変更されます。(Ib4e90

  • LineHeightBehavior の名前が LineHeightStyle に変更されました。

  • LineVerticalAlignment の名前が LineHeightStyle.Alignment に変更されました。

  • LineHeightTrim の名前が LineHeightStyle.Trim に変更されました。

  • LineHeightStyle のデフォルトのコンストラクタ値が削除されました。(I582bfb/181155707

  • グラデーション カラーを使用してテキストを描画できるように、TextStyleSpanStyleBrush を追加しました。(I53869, b/187839528

  • LineHeightBehavior の属性 trimFirstLineToptrimLastLineBottom を単一の列挙型 LineHeightTrim に変更しました。LineHeightTrim には、2 つのブール値(FirstLineTopLastLineBottom)、Both、None によって定義される 4 つの状態の値があります。(Ifc6a5b/181155707

  • LineHeightBehaviorTextStyleParagraphStyle に追加されました。LineHeightBehavior は、行の高さを最初の行の先頭と最後の行の末尾に適用するかどうかを制御します。また、TextStyle(lineHeight) によって指定されるスペース内の行の配置も定義します。

    たとえば、CSS が LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) を介して定義したものと同様の動作を実行できます。

  • 設定 trimFirstLineTop および trimLastLineBottom は、includeFontPadding が false の場合のみ正しく機能します。(I97332b/181155707

  • PlatformParagraphStyle.lerp 関数と PlatformSpanStyle.lerp 関数がトップレベル関数に変更されました。(I9a268

バグの修正

  • PointerInputChange::copy のドキュメントに、シャローコピーであることが正しく示されるようになりました。(I182f5
  • 高さに制限があり、テキスト行の全体が収まらない場合に、省略記号を使用できるようになりました。(Ie528cb/168720622
  • デフォルトで includeFontPadding がオンになります。TextStyle.platformTextStyle 属性を使用すると includeFontPadding をオフにできます。近い将来、デフォルトの動作が変更されますが、それまではこの方法で行の高さを改善し(aosp/2058653)、TextField のクリッピングの問題を解決できます。(I01423b/171394808

外部からの協力

  • Android で垂直方向にスクロールすると、MouseInjectionScope.scroll(delta = someDelta) が反転するようになりました(someDelta が正値の場合、下方向にスクロールします)。(Ifb697b/224992993

バージョン 1.2.0-alpha08

2022 年 4 月 20 日

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

API の変更

  • pluralStringResource 関数は、今後、進化版で国際化の改善をサポートできるようにするため、試験運用版としてマークされました。(If24e4
  • Paragraph と MultiParagraph が Constraints パラメータを受け入れるようになりました。現時点では Constraints.maxHeight を渡しても機能しませんが、今後、高さに基づいて省略するなど、いくつかの計算を行うことが可能になる予定です。(I6afeeb/168720622
  • SubcomposeSlotReusePolicy.getSlotsToRetain() は、新しいアイテムの追加を許可しない MutableSet のようなカスタムクラスを受け入れるようになりました。(Icd314
  • PointerIcon が @Stable インターフェースになりました(I9dafe
  • PointerInputChange での部分的な消費(down または position)のサポートが終了しました。consume() を使用すると、変更を完全に使用できます。isConsumed を使用すると、以前にその変更が他のユーザーに使われたかどうかを確認できます。
  • PointerInputChange::copy() が常にシャローコピーを作成するようになりました。つまり、PointerInputChange のコピーのいずれか 1 つが使用されると、以降はそれらのコピーが使用されます。バインドされていない PointerInputChange を作成するには、代わりにコンストラクタを使用します。(Ie6be4b/225669674
  • Compose > View の方向で、Compose と View の間のネスト スクロールの相互運用を有効にしました。これにより、Compose の親は、ネストされたスクロール ビューからネストされたスクロール差分を受け取ることができるようになります。(If7949b/174348612
  • 新しい SemanticsProperty testTagsAsResourceId。これを使用して、View システム用に設計された UIAutomator テストに Compose を準拠させることができます。(I39c20
  • FontFamily.SansSerif を使用すると、Android のシステム フォントで利用可能な太さがすべて表示されます。これにより、API 21~28 の内部で sans-serif-medium のような代替フォント名が使用されます。これまで API 21~28 では太さ 400 と 700 のみがサポートされていたため、動作が変更されます。(I380feb/156048036b/226441992
  • Paragraph と Multiparagraph のインストラクターが位置引数の順序を変更し、オプションの引数の前になるようにしました。(Idafaa
  • AndroidFont は、typefaceLoader をコンストラクタ パラメータとして受け取るようになりました。(I2c971

バージョン 1.2.0-alpha07

2022 年 4 月 6 日

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

API の変更

  • 新しい関数 Snapshot.withoutReadObservation { ... } が追加されました。この関数によりユーザーは、このブロック中に読み込まれた状態値の変更にサブスクライブせずに、渡されたラムダを実行できます。これは、スナップショット ベースのスレッドセーフな書き込み / 読み取りの利点を活用しつつ、不要な再コンポジションまたは再測定を行わずに値を読み取れるようにしたいユースケースで役立つ場合があります。(I9f365b/214054486
  • ComposeViewconsumeWindowInsets 拡張プロパティを使用すると、デベロッパーは Android WindowInsets の消費を無効にできます。これにより、階層内の個々の ComposeViews が互いに干渉することなく、それぞれ WindowInsets を適用できます。(I0ef08b/220943142
  • IME に小数点記号を含めるために、Keyboard.Number の代わりとして KeyboardType.Decimal を追加しました。(Iec4c8b/209835363
  • PointerEventType.ScrollPointerEvent.scrollDelta が安定版 API になりました。(I574c5b/225669674
  • 連携する View クラスの View と Compose の間のネスト スクロールの相互運用を有効にしました。これにより、Compose は(連携する)View の親にスクロール差分をディスパッチできるようになりました。(I5d1acb/174348612
  • システム全体における太字テキストのユーザー補助設定を統合するように FontFamily.Resolver を更新しました。(I6c1e7
  • Font(AssetManager, String, ...) のサポートが終了し、Font(String, AssetManager, ...) に置き換えられました。これは試験運用版の API です。(I1c7a4
  • 新しいフォント記述子 Font(DeviceFontFamilyName) を追加し、フォントのフォールバック チェーン中にシステムがインストールしたフォントを必要に応じて検索できるようにしました。(I30468b/219754572
  • TextStyle/ParagraphStyle に includeFontPadding の一時的な互換性設定を追加しました。includeFontPaddingTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) を介して変更できます。これは移行を可能にするための一時的な設定オプションで、後で削除されます。(If47beb/171394808
  • デバッグのヘルプに GoogleFont.Provider.isAvailableOnDevice 拡張機能を追加しました。(I64e31
  • @ArrayRes で使用する GoogleFont.Provider コンストラクタを追加しました。(Ic5ee1b/225984280
  • Compose GoogleFontFont(GoogleFont) と呼ばれるようになり、それ以外の API が安定版になりました。(I125f2

バグの修正

  • 内側のパディングが使用されていることを確認するため、material/Scaffold に lint チェックを追加しました(Ifb111

バージョン 1.2.0-alpha06

2022 年 3 月 23 日

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

API の変更

  • フォーカス可能なターゲットでフォーカスをリクエストするための RequestFocus セマンティクス アクションを追加しました。(I17b71
  • ベクター型ドローアブルの解析を更新して、現在のレイアウト方向が RTL の場合に VectorPainter のコンテンツを切り替える自動ミラーリングをサポートするようにしました。(I79cd9b/185760237
  • API の互換性を確保するため、シャドウの色、アンビエントの色が Modifier.graphicsLayer の末尾のパラメータになるよう更新しました。(I3f864b/160665122

  • API の互換性を破る動作変更にならないよう、GraphicsLayerScope のシャドウの色、アンビエントの色にデフォルトの実装を追加しました。

  • RSB イベントにイベント時間を追加しました。(Ief8ae

  • FocusOrderFocusProperties に統合して、focusProperties()focusOrder() のすべての機能が含まれるようにしました。FocusOrderfocusOrder() が非推奨になりました。focusRequester を受け取る focusOrder() は、focusRequester() 修飾子と focusProperties() の組み合わせに置き換える必要があります。これにより、懸念事項である修飾子の区別がより強力になります。(I601b7

  • RecyclerViewCompose の両方をアップグレードすると、Compose ビューを子として持つ RecyclerView のスクロール パフォーマンスが大幅に改善されるようになりました。

  • 組み込みのデフォルト戦略を取得する手段として ViewCompositionStrategy.Default を追加しました。

  • RecyclerView などのプーリング コンテナを適切に処理する新しいデフォルト戦略 ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer を追加しました。(If7282

  • マルチプレビュー機能を追加するための最初のステップとして、アノテーション クラスに @Preview でアノテーションを付けられるようサポートを追加しました。このアノテーションを使用して、コンポーズ可能なメソッドなどのアノテーション クラスにアノテーションを付けることができます。これにより、アノテーション クラスには指定した @Preview によって間接的にアノテーションが付けられたことになります。(I12eff

  • @Preview のデバイスリストに参照デバイスを追加しました。(I071c9

バグの修正

  • @UiComposable の代わりに適切なコンポーズ可能アノテーション @VectorComposable を使用するようベクター グラフィック API を更新しました。(I942bc
  • AnnotatedString.Builder.withStyle から crossinline を削除しました。(If84d5

外部からの協力

  • compose-ui: ambientShadowColor プロパティと spotShadowColor プロパティを GraphicsLayerScope に追加しました。(I1ba1ab/160665122
  • pluralStringResource 関数で複数のリソースがサポートされるようになりました。(Ib2f23b/191375123

バージョン 1.2.0-alpha05

2022 年 3 月 9 日

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

API の変更

  • TextToolbarActionCallback ではなくラムダ引数を取るようになりました。(Ib2eb9b/197950089
  • Tiramisu DP2 と一致するよう core と appcompat の null 可能性を更新しました。(I0cbb7
  • Measured インターフェースが parentData プロパティを公開するようになりました。(I3313f
  • Modifier.onPlacedOnPlacedModifier インターフェースが安定版になりました。(Ib5482
  • これで、Compose Animation では、開発者向けオプションの [Animator 再生時間スケール] 設定がサポートされるようになりました。(I5a4fcb/161675988
  • BeyondBoundsLayout 修飾子をローカルに追加しました(If8b51b/184670295
  • テキスト: includeFontPadding がデフォルトでオフになりました。includeFontPadding=false の結果として起きるクリッピングの問題は対処され、縦長文字ではクリッピングが起きなくなりました。(I31c84b/171394808

バグの修正

  • すでにコンテンツが存在する場合にコンテンツを設定しようとすると、ComposeContentTestRule.setContentIllegalStateException をスローするようになりました。(I888a5b/199631334
  • Android のクリップボードから読み取る際にクリップボードの内容が原因で発生するクラッシュを修正しました。(I06020b/197769306
  • RSB のスクロール サンプルを改善しました。(I6a596

外部からの協力

  • Kotlinx コルーチン 1.6.0 を使用するように更新されました(I3366d

バージョン 1.2.0-alpha04

2022 年 2 月 23 日

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

API の変更

  • ComposableTargetComposableTargetMarkerComposableOpenTarget を追加しました。使用が想定されていない Applier を対象としてコンポーズ可能な関数を呼び出した場合について、コンパイル時のレポートが可能になります。

    ほとんどの場合、アノテーションは Compose コンパイラ プラグインによって推定されます。そのため、これらのアノテーションを直接使用することはめったにありません。推定できないケースとしては、カスタム Applier、コンポーズ可能な抽象関数(インターフェース メソッドなど)、コンポーズ可能なラムダであるフィールドまたはグローバル変数(ローカル変数とパラメータは推定される)を作成および使用する場合や、ComposeNode または関連するコンポーズ可能な関数を使用する場合が挙げられます。

    カスタム Applier の場合は、ComposeNode または ReusableComposeNode を呼び出すコンポーズ可能な関数が、関数に対して ComposableTarget アノテーションとコンポーズ可能なラムダのパラメータ型を追加する必要があります。ただし、ComposableTargetMarker を付けてアノテーションを作成し、ComposableTarget を直接使用する代わりに、そのマークされたアノテーションを使用することをおすすめします。ComposableTargetMarker でマークされたコンポーズ可能なアノテーションは、Applier パラメータとして属性クラスの完全修飾名を持つ ComposbleTarget と同等になります。ComposableTargetMarker の使用例については、anroidx.compose.ui.UiComposable をご覧ください。(I38f11

  • Font(resId, ...) が安定版 API で loadingStrategy を受け取るようになりました。(Ief3d2

  • FontLoadingStrategy が安定版 API になりました。(I1ee35b/174162090

  • Text の非同期フォント読み込みをサポートしました。(I77057b/214587005

  • カスタム Font.ResourceLoaderFontFamily.Resolver に変換するためのブリッジ API を追加しました(Ia0060

バグの修正

  • 提供された FontFamily.Resolver は Popup などのサブコンポジションに渡されます。
  • 提供された Font.ResourceLoader は Popup などのサブコンポジションに渡されます。(I48fa5

バージョン 1.2.0-alpha03

2022 年 2 月 9 日

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

API の変更

  • TextInputSessionTextInputServicenotifyFocusedRect メソッドのサポートが終了し、呼び出されなくなりました。代わりに BringIntoViewRequester を使用してください。(Ia4302b/192043120b/216842427b/178211874
  • RenderNode スタブクラスに destroyDisplayListData メソッドを導入しました(I1e659b/216660268
  • 事前に作成した SubcomposeLayout の子を事前に測定できる新しい API を追加しました。(I857ea
  • コンポーザブル ラムダを別のラムダに変換する movableContentOf を追加しました。変換されたラムダは、状態および対応するノードを呼び出された新しい場所に移動します。前の呼び出しがコンポジションから出ると状態は一時的に保持され、ラムダへの新しい呼び出しがコンポジションに入った場合、状態および関連付けられたノードが新しい呼び出しの場所に移動されます。新しい呼び出しが追加されない場合、状態は完全に削除され、オブザーバーに通知されます。

    movableContentOf ラムダが同じコンポジションで複数回呼び出された場合、呼び出しごとに新しい状態とノードが作成されます。呼び出しがコンポジションを出て新しい呼び出しが入ると、状態は、呼び出しの順序で最初に出る呼び出しから入る呼び出しへと移動します。新しい呼び出しで宣言されていない状態はすべて完全に削除されます。(Ib4850

  • FontFamilyResolverLocalFontFamilyResolver.current から利用できるようになりました

  • Compose の使用以外で新しい FontFamily リゾルバを作成するための createFontFamilyResolver(context)createFontFamilyResolver(context, coroutineScope) を追加しました。

  • Paragraph と MultiParagraph が FontFamily.Resolver を使用するようになりました

  • TextLayoutResult.layoutInput.fontFamilyResolver に、このレイアウトで使用されるリゾルバが含まれるようになりました。TextLayoutResult.layoutInput.resourceLoader は使用されなくなったため、サポートを終了しました。(Id5a45b/174162090

  • フォールバック動作で非同期およびオプションのフォント読み込みをサポートします。このパスは Text と TextField によって使用され、FontFamilyResolver を介して公開されます

  • FontFamilyResolver.preload を介したフォントのプリロードのサポート

  • FontFamilyResolver.setAsyncLoadContext を使用すると、非同期フォントの読み込みに使用するグローバル コルーチン コンテキストを設定できます。(I87fe8b/174162090

  • AndroidFont を追加しました。これは、Android で新しいタイプのフォント リソース記述子を提供するための新しい低レベル API です。たとえば、アプリ固有のバックエンドからフォントを読み込む、必要に応じてデバイスにプリインストールされているフォントを見つける、現在のフォント ファクトリでは提供されないリソースからフォントを読み込むといったことが可能です。

  • Font.ResourceLoaded API が拡張され、フォントの非同期読み込みのオプションがサポートされるようになりました。アプリ デベロッパーがこの API を直接使用することは推奨されません。新しいタイプのフォントを追加するには、AndroidFont をご覧ください。

  • Font.AndroidResourceLoader 拡張関数を使用すると、コンポジションの外部で Font.ResourceLoader を作成できます。

  • リソースベースのフォントに loadingStrategy パラメータを追加しました。これにより、ダウンロード可能なフォントの XML をリソース フォントが参照する場合の非同期読み込みが可能になります。(Ie5aeab/174162090

  • Typeface(FontFamily) コンストラクタのサポートが終了しました。これは以前、フォントのプリロードに使用されていましたが、ダウンロード可能なフォントでは最大で 10 秒ほどかかることがあります。ダウンロード可能なフォントに使用する場合、この呼び出しによって 10 秒間のブロックが発生する可能性があります。代わりに、FontFamilyResolver.preload を使用してください。

  • fontResource(FontFamily): Typeface が非推奨となりました。これは以前、フォントのプリロードに使用されていましたが、ダウンロード可能なフォントでは最大で 10 秒ほどかかることがあります。代わりに、FontFamilyResolver.preload を使用してください(If8e7cb/174162090

  • maxSlotsToRetainForReuse を受け入れる SubcomposeLayoutState コンストラクタのサポートが終了しました。代わりに、SubcomposeSlotReusePolicy を受け入れる新しいコンストラクタが追加されました。これは、将来の再利用のために保持するスロットをきめ細かく制御できる新しいインターフェースです。(I52c4d

  • Color の HSV 関数と HSL 関数を、試験運用版でない API として公開します。Oklab の色空間は公開 API になりました。(I08fb6b/180731008

  • 公開 API になることが想定されておらず、何も行わない AndroidComposeTestRule.AndroidComposeStatement のサポートを終了しました。(Ibc46b

  • 内部で生成された kt クラスの名前変更(Ia0b9eb/174162090

  • FontLoadingStrategy.values を削除しました(I42a9db/174162090

  • グローバル フォント ローダの名前が FontFamilyResolver になりました。(I4f773b/174162090

  • パソコン用の新しいフォント読み込みシステムを使用。(I9ce5cb/174162090

  • FontFamily.Resolver.resolveState<Any> を返すようになりました(I4406cb/174162090

バグの修正

  • ソフト入力モードが ADJUST_PAN のときに、TextField がフォーカスされてキーボードが表示された場合、TextField が隠れないようキーボードの上に保持されるようになりました。(I8eaebb/190539358b/192043120
  • デスクトップでは FontFamily.Resolver のコンポジション ローカルを使用します。
  • デスクトップの FontLoader のサポートを終了しました
  • デスクトップに新しい createFontFamilyResolver ファクトリが追加されました(I6bbbbb/174162090
  • テキスト フィールド間でフォーカスを変更したときに、ソフト キーボードの入力タイプがちらつくことがなくなりました。(I1bf50b/187746439

バージョン 1.2.0-alpha02

2022 年 1 月 26 日

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

API の変更

  • 回転するサイドボタンを備えた Wear デバイス用に Modifier.onRotaryScrollEvent()Modifier.onPreRotaryScrollEvent() を追加しました。(I18bf5b/210748686
  • 試験運用版の View.createLifecycleAwareRecomposer 拡張機能を追加しました。(I0cde6

外部からの協力

  • Android で PointerEvent.scrollDelta.y が反転されるようになりました(マウスホイールを右に傾けた場合に -1 ではなく 1 が返されるようになりました)。(Ia9811

バージョン 1.2.0-alpha01

2022 年 1 月 12 日

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

API の変更

  • FontFamily.canLoadSynchronously のサポートが終了しました。このプロパティには、意味論的意味はありません。(Ica5ef
  • Layout Inspector で不変の ID を生成するために、ID フィールドを CompositionData に追加しました。(Ic116e
  • プレビュー デバイスリストに Wear OS デバイス ID を追加しました(I93232

依存関係の更新

  • Kotlin 1.6.10 に依存するようになりました。

バージョン 1.1

バージョン 1.1.1

2022 年 2 月 23 日

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

バグの修正

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayListNullPointerException を修正しました(aosp/1947059b/206677462
  • Android のクリップボードから読み取る際にクリップボードの内容が原因で発生するクラッシュを修正しました。(I06020b/197769306
  • LazyVerticalGrid の RTL を修正しました(aosp/1931080b/207510535

バージョン 1.1.0

2022 年 2 月 9 日

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

1.0.0 以降の重要な変更

  • Android 12 のオーバースクロール効果の安定版サポートを追加
  • タップ ターゲットのサイズ調整を改善
    • Compose 1.0 では、マテリアル ユーザー補助ガイドラインタップ ターゲットのサイズに合わせるために、マテリアル コンポーネントのレイアウト スペースが拡張されることに注意してください。たとえば、ボタンのサイズをいくら小さく設定しても、ボタンのタップ ターゲットは最小サイズの 48 x 48 dp に拡張されます。これにより、Compose Material とマテリアル デザイン コンポーネントの動作が一致し、View と Compose を混在させても動作の一貫性を保持できます。また、Compose Material コンポーネントを使用して UI を作成する際に、タップ ターゲットに関するユーザー補助の最小要件が確実に満たされます。
  • ナビゲーション レールの安定版のサポートを追加
  • 試験運用版であったいくつかの API を安定版に移行
  • 新しいバージョンの Kotlin のサポート

バージョン 1.1.0-rc03

2022 年 1 月 26 日

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

バグの修正

  • Compose Material 1.1.0-rc03 をサポートするように更新しました。

バージョン 1.1.0-rc01

2021 年 12 月 15 日

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

バグの修正

  • ユーザー補助のスクロール操作がなくなるバグを修正しました。(I7cbfb
  • SemanticsNodeInteraction.captureToImage() は、呼び出しの間に有効にすると、HardwareRenderer.isDrawingEnabled()false の場合も動作するようになりました。(Idf3d0

バージョン 1.1.0-beta04

2021 年 12 月 1 日

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

新機能

  • Kotlin 1.6.0 との互換性を確保するために更新しました。

API の変更

  • androidx.core.view の null 可能性をクリーンアップしました。(I7078ab/204917439
  • 試験運用版の API が追加され、PointerInputchange をまとめて使用したり、使用されているかどうかをチェックしたりできるようになりました。(I2e59d
  • UI レイヤでのマウス スクロール ホイール イベントのサポートを追加しました。(Ia14ebb/198214718
  • 等価性を比較するためのキーを受け入れ、最適化スキップの対象を判断する、試験運用版の Modifier.composed オーバーロードを追加しました。(Ice799b/205851704
  • ComposeNotIdleException が、Throwable から直接拡張されるのではなく、Exception から拡張されるようになりました。つまり、Exception をキャッチしていた catch 句が、以前はキャッチしていなかった ComposeNotIdleException もキャッチできるようになりました。(I9c217

バグの修正

  • IME の可視性が変更されてもテキスト ハンドルが移動しない問題を修正しました。(I25f2e

バージョン 1.1.0-beta03

2021 年 11 月 17 日

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

API の変更

  • プレースメントの変更を監視できるように、新しい修飾子 Modifier.onPlaced を追加しました。これにより、監視対象のプレースメントの変更に基づいて、子修飾子のオフセットに追加の変更を行うことができます。(I558fd
  • InjectionScope.flush()InjectionScope.dispose() を削除しました。以前と同様、呼び出された perform*Input() メソッドの終わりに、すべてのイベントのフラッシュとスコープの廃棄が発生するようになりました。(I2bed8
  • MultiModalInjectionScope.TouchMultiModalInjectionScope.Mouse を削除しました。マルチモーダル ジェスチャーのタップイベントとマウスイベントを挿入するために、MultiModalInjectionScope.touch()MultiModalInjectionScope.mouse() を使用できるようになりました。どちらも、そのモダリティのレシーバー スコープを含むラムダを受け入れます。(Idde18

バグの修正

  • TouchInjectionScope.swipeWithVelocitydurationMillis のデフォルト値が、スワイプが可能になるよう計算されるようになりました。(I19deb

バージョン 1.1.0-beta02

2021 年 11 月 3 日

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

API の変更

  • 試験運用版の BringIntoView API を追加しました。この API を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918db/195353459
  • ツールをサポートする新しいアニメーション API が追加されました。具体的には、Transition でアニメーションとその構成を検査するツールが利用可能になりました。(I4116e

外部からの協力

  • Modifier.pointerHoverIcon を追加しました(I95f01

バージョン 1.1.0-beta01

2021 年 10 月 27 日

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

API の変更

  • 試験運用版の BringIntoView API を追加しました。この API を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918db/195353459
  • ツールをサポートする新しいアニメーション API が追加されました。具体的には、Transition でアニメーションとその構成を検査するツールが利用可能になりました。(I4116e

バージョン 1.1.0-alpha06

2021 年 10 月 13 日

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

API の変更

  • ViewRootForInspectorLayoutInfo.ownerViewId から ExperimentalComposeUiApi を削除しました。(I5c2e3
  • Layout の子のないオーバーロードが追加され、効率が改善されました。(Ib0d9a
  • モジュール間で呼び出す必要がある Composer メソッドから InternalCompilerApi を削除しました。(I1aa0b
  • SemanticsNodeInteraction.performSemanticsAction は、関数が呼び出された SemanticsNodeInteraction を返すようになりました。(I9e5db
  • TouchMode/NonTouchMode を検出するため LocalInputModeManager CompositionLocal を追加しました。(I6a83cb/175899786
  • LayoutInfoviewConfiguration: ViewConfiguration を追加し、コンシューマが長押しタイムアウトなどの正しい値を取得できるようにしました。(I76ca6
    • InjectionScopeviewConfiguration: ViewConfiguration を追加し、テストで長押しのタイムアウトやタッチスロップなどに基づいて入力の挿入を調整できるようにしました。
    • タップ入力とマウス入力の両方に対する長押しとダブルタップのデフォルト時間を InjectionScope.viewConfiguration の値に基づくよう変更しました。
  • ExposedDropdownMenuBox に基づく、内部に TextField と DropdownMenu を含む ExposedDropdownMenu の実装を追加しました。(If60b2
  • dismissOnOutsideClick が PopupProperties に追加され、サポートが終了した dismissOnClickOutside と置き換えられました。新しいプロパティはクリック位置とアンカー境界を受け取るため、onDismissRequest を呼び出す必要があるかどうかを細かく制御できます。たとえば、アンカーでのタップに対するアンカー破棄を防ぐのに役立ちます。
    • updateAndroidWindowManagerFlags が PopupProperties に追加され、ポップアップから Android WindowManager に渡されるフラグを細かく制御できるようになりました。ラムダのパラメータは、結果的に WindowManager フラグとなる PopupProperties 値から計算されたフラグです(focusable など)。ラムダの結果は、Android WindowManager に渡される最終的なフラグです。デフォルトでは、updateAndroidWindowManagerFlags はパラメータから計算されたフラグを変更しません。この API は、ポップアップに非常に具体的な動作要件がある場合にのみ、注意して使用してください。(I6e9f9
  • Recomposer.state はサポートが終了し、Recomposer.currentState に置き換えられ、タイプが StateFlow に変更されました。(Ic2ab3b/197773820
  • flush()dispose()InjectionScope に追加しました。それぞれ、キューに入れられたすべてのイベントをすぐにフラッシュする場合と、スコープを破棄する場合に使用してください。(Ifb73a
  • 指定したマッチャーと一致するコンテンツにスクロール可能なコンテナをスクロールする performScrollToNode(matcher: SemanticsMatcher) を追加しました。(Ic1cb8
  • InjectionScopeDensity を実装し、performTouchInput と friends で px と dp の変換を簡単に行えるようになりました。(I8fe1f

バグの修正

  • AndroidView が、ViewTreeLifecycleOwner と ViewTreeSavedStateRegistryOwner を介して LocalLifecycleOwner と LocalSavedStateRegistryOwner をビューに伝えるようになりました。(I38f96, b/179708470
  • WearOS SwipeToDismissBox がスワイプを処理しないことがある問題を修正しました。(I9387e
  • 挿入された入力イベント間のデフォルト時間が 10 ms から 16 ms に変更されました。このため、特定のスワイプなどの入力ジェスチャーを行うテストの結果が変わる可能性があります。(I829fd)

バージョン 1.1.0-alpha05

2021 年 9 月 29 日

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

API の変更

  • 修飾子間コミュニケーションのサポートを追加しました。(Id5467b/198826874
  • PointerEventChange に試験運用版の履歴ポインタを追加しました。(Ic1fd8b/197553056b/199921305
  • LayoutInfodensity: DensitylayoutDirection: LayoutDirection を追加しました。これにより、LayoutInfo のコンシューマが、LayoutInfo で公開されるサイズと位置を正しく解釈できるようになりました。(I002f1
  • 試験運用版のマウスイベント挿入サポートを追加しました。performMouseInput を使用してマウスイベントの送信を開始するか、performMultiModalInput でのマルチモーダル入力ジェスチャーの際に MultiModalInjectionScopeMouse プロパティを介してマウスイベントを送信します。利用可能な API のドキュメントについては、MouseInjectionScope をご覧ください。(Iaa4a8b/190493367

バグの修正

  • スクロールに関して、スクロール可能(遅延と非遅延の両方)のユーザー補助サポートを修正しました。(I6cdb0
  • TouchInjectionScope.swipeWithVelocity を改善しました。幅広い入力変数を受け入れるようになり、スワイプを作成できない場合に入力の変更を提示するようになりました。(I40fbeb/182477143

バージョン 1.1.0-alpha04

2021 年 9 月 15 日

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

API の変更

  • PointerEvent に、ホバーイベントをサポートする PointerEventType が追加されました。(I091fa
  • 子が親のポインタ入力境界の外側にあるポインタ入力を受け入れられるようになりました。親は、プロパティ PointerInputScope.alwaysInterceptChildEvents でこれらの呼び出しをインターセプトできます。(I9eae3b/192479655
  • performGestureGestureScope はサポートが終了し、それぞれ performTouchInputTouchInjectionScope に置き換えられました。(Ia5f3f, b/190493367
  • タップ ターゲットの最小サイズが含まれる touchBoundsInRootSemanticsNode に追加しました。これにより、デベロッパーはタップ ターゲットがユーザー補助の最低条件を満たすことができます。(I2e14bb/197751214
  • inspectable の実装をやり直しました。(I927bcb/191017532
  • composed と一致するよう inspectable のパラメータ名を変更しました。(I3a482b/191017532
  • performTouchInputTouchInjectionScope に代えて、performTouchInputTouchInjectionScope を導入し、他のモダリティ(マウスなど)もサポートするようになりました。

    TouchInjectionScope のメソッドは、movePointerTomovePointerBy を除き、GestureScope と同じで、これらの名前は updatePointerToupdatePointerBy に変更されました。その他のメソッドはすべて同じです。

    TouchInjectionScope の動作は GestureScope の動作とほぼ同じですが、以下のような小さい違いが 2 つあります。

    1. 移動イベントを送信しないままでポインタの移動中にダウンイベントを送信した場合(つまり、updatePointerTo() は使用されたが、move() は使用されず、down() が呼び出された場合)、以前の実装では、イベント時間を進めて、ダウンイベントを送信する前に移動イベントを送信します。新しい実装でも移動イベントは送信されますが、この特定のシナリオではイベント時間は進めません。
    2. 上記と同じように、移動イベントを送信しないままでポインタの移動中にアップイベントを送信した場合、以前の実装では、イベント時間を進めて、アップイベントを送信する前に移動イベントを送信します。新しい実装ではそのどちらも行わず、ポインタの新しい位置はアップイベントを介してのみ反映されます。

    最後に、TouchInjectionScope に、指定されたポインタの現在の位置を取得するための新しいメソッド currentPosition(pointerId: Int) が導入されました。(If1191b/190493367

バグの修正

  • 最小限のタップ ターゲットを確保するために、クリップがクリップ領域の外までタップ ターゲット境界を拡張できるようになりました。(I43e10b/171509422
  • Android 12 デバイスで、ストレッチ オーバースクロールのサポートを追加しました。(Iccf3cb/171682480

バージョン 1.1.0-alpha03

2021 年 9 月 1 日

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

新機能

  • Kotlin 1.5.30 に依存するように Compose 1.1.0-alpha03 を更新しました。(I74545

API の変更

  • 他の修飾子をラップするための Modifier.inspectable を追加しました。(I1909bb/191017532
  • BlurredEdgeTreatment API を追加しました。この API は、ぼかしのユースケースを簡素化して、クリップフラグと TileMode のよく使用される組み合わせにするためのものです。ほとんどのユースケースでは、ぼかしを入れたコンテンツを元のコンテンツの境界の外側に描画し、ぼかし領域を透明なブラックを使ってこの境界の外側に描画するか、コンテンツをコンテンツの境界に切り取り、コンテンツの境界の外まで延長するぼかしカーネルの最も近いエッジをサンプリングすることが必要になります。(I6b4b7b/166927547
  • Compose デスクトップに RenderEffect のサポートを追加しました。コンポジション階層の一部にぼかしの視覚効果を取り入れる簡単な方法として、OffsetEffect と blur 修飾子を導入しました。(I0f6aab/166927547
  • レイヤ自体のコンテンツを変更するために Modifier.graphicsLayer で必要に応じて構成できる RenderEffect API を導入しました。この API を使用して、コンポジション階層内のコンポーザブルと子コンポーザブルのコンテンツをぼかすことができます。(I47c4db/166927547
  • AwaitPointerEventScope に withTimeout() と withTimeoutOrNull() が追加されました。(I507f0b/179239764b/182397793
  • ユーザー補助機能を保証するため、セマンティクスとポインタ入力で使用する最小タップ ターゲット サイズを ViewConfiguration に追加しました。(Ie861c
  • ぼかしベースの RenderEffects に対するエッジ動作の定義に役立つ、TileMode.Decal のサポートを追加しました。(I7e8edb/166927547
  • performScrollToIndexperformScrollToKeyhasScrollToIndexActionhasScrollToKeyAction が安定版 API になりました。(I142aeb/178483889
  • クリップされた境界を取得するテストメソッドを追加しました。(I6b28e

バグの修正

  • BlurredEdgeTreatment から isBounded メソッドを削除し、代わりに shape パラメータが null かどうかの明示的なチェックを導入しました。(I85d68

バージョン 1.1.0-alpha02

2021 年 8 月 18 日

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

API の変更

  • PointerEvent がマウスボタン状態とキーボード修飾子状態の読み取りをサポートするようになりました。(I6310cb/180075467
  • 挿入されたジェスチャーが、時刻について信頼できる情報源として MainTestClock の時刻を使用するようになりました。performGesture での挿入されたイベントの現在の時刻は、MainTestClock の現在の時刻に初期化されます。(Ifb364b/192064452
  • DpRect(DpOffset, DpSize) コンストラクタを追加しました。(I2cf16b/194219828
  • DpSize クラスを追加しました。(I7abb1b/194219828

バグの修正

  • VectorDrawable の root color tint プロパティとして ColorStateLists をサポートするよう、ベクター グラフィック XML の解析を更新しました。(I86915b/195668138

バージョン 1.1.0-alpha01

2021 年 8 月 4 日

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

API の変更

  • RelocationRequester.bringIntoView が長方形をパラメータとして受け入れ、コンポーザブルの一部を表示できるようになりました。(Ice2c5b/194330245
  • AnimatedImageVector と関連する API が新しい androidx.compose.animation:animation-graphics モジュールに追加されました。(I60873
  • 再配置リクエストを処理する試験運用版の修飾子を追加しました。(I65a97b/178211874
  • ColorPainter と同様に、Painter 内でも任意 Brush の描画をサポートするよう、BrushPainter API を導入しました。

    Brush API を更新し、BrushPainter 内でクエリされる固有のサイズのパラメータを追加しました。(Ia2752b/189466433

  • オプションの FilterQuality パラメータも使用するよう、ソースとデスティネーションの長方形を使用する DrawScope#drawImage メソッドを更新しました。これは、ピクセルベースのアートに合わせてスケールアップする際にピクセル化されるピクセルアートに対して有用です。オプションの FilterQuality パラメータも使用するよう、BitmapPainter と Image コンポーザブルを更新しました。(Ie4fb0b/180311607

  • GestureScope.advanceEventTime メソッドを追加し、ジェスチャーでのイベントのタイミングを細かく制御できるようになりました。(Ibf3e2

バグの修正

  • draw 修飾子のチェーンを適切にサポートするため、Modifier.paint 実装が drawsContent を確実に呼び出すようにしました。 以前は、Modifier.paint は修飾子のチェーンではリーフノードとなりましたが、こうすると、コンポーザブル コンテナ(ボックスなど)上で構成したり、Modifier.paint().border() などの上にデコレーションを追加したりできなくなります。指定されたペインタのコンテンツの描画後に Modifier.paint が drawContent を呼び出すようにすることで、修飾子パターンとの動作上の整合性を向上させました。(Ibb2a7b/178201337b/186213275
  • ダイアログがプラットフォームのサイズ調整動作に従うようになりました。この動作をオーバーライドするには、usePlatformDefaultWidth を false に設定します。(Iffaedb/192682388
  • InfiniteAnimationPolicy を :compose:ui に移動しました。(I5eb09b/160602714
  • 遅延リストと通常のスクロール コンポーネントに対するセマンティクス アクションによるスクロールがアニメーション化されるようになりました。(Id9066b/190742024

バージョン 1.0

バージョン 1.0.5

2021 年 11 月 3 日

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

バグの修正

  • derivedStateOf インスタンスをトラッキングするクラッシュを修正しました。(aosp/1792247

バージョン 1.0.4

2021 年 10 月 13 日

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

依存関係の更新

  • Kotlin 1.5.31 に依存するように更新しました。

バージョン 1.0.3

2021 年 9 月 29 日

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

依存関係の更新

  • Kotlin 1.5.30 に依存するように更新しました。

バージョン 1.0.2

2021 年 9 月 1 日

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

Compose 1.0.2 リリースをサポートするように更新しました。Compose 1.0.2 は、引き続き Kotlin 1.5.21 と互換性があります。

バージョン 1.0.1

2021 年 8 月 4 日

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

依存関係の更新

  • Kotlin 1.5.21 に依存するように更新しました。

バージョン 1.0.0

2021 年 7 月 28 日

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

1.0.0 の主な機能

これは Compose の最初の安定版リリースです。詳細については、Compose リリースの公式ブログをご覧ください。

既知の問題

  • Android Studio Bumblebee Canary 4 または AGP 7.1.0-alpha04 / 7.1.0-alpha05 を使用している場合、次のクラッシュが発生することがあります。

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    修正するには、build.gradle ファイルで一時的に minSdkVersion を 24 以上に変更します。この問題は、次期バージョンの Android Studio Bumblebee と AGP 7.1 で修正される予定です。(b/194289155

バージョン 1.0.0-rc02

2021 年 7 月 14 日

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

バグの修正

  • ダイアログがプラットフォームのサイズ調整動作に従うようになりました。この動作をオーバーライドするには、usePlatformDefaultWidth を false に設定します。(Iffaedb/192682388

バージョン 1.0.0-rc01

2021 年 7 月 1 日

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

新機能

  • ui-tooling モジュールを ui-toolingui-tooling-preview に分割しました。(Iefa28b/190649014

API の変更

  • サポートを終了した試験運用版の FocusManager#moveFocusInFocusManager#moveFocusOut を削除しました。(I227d7b/170154986b/186567354b/168510304
  • Canvas がユーザー補助用の contentDescription パラメータをサポートするようになりました。(Ib547c
  • PopupPropertiesuseDefaultMaxWidth の名前を usePlatformDefaultWidth に変更しました。(I05710
  • ダイアログが画面の幅全体を使用できるようになりました。(I83929b/190810877
  • 試験運用版の HSV / HSL カラー表現サポートを追加しました。(Id7cf8b/180731008

動作の変更

  • Compose @PreviewLocalActivityResultRegistryOwner を提供し、既存のオーナーに依存する rememberLauncherForActivityResult() のような API を使用するコンポーザブルをプレビューできるようになりました。(Ib13d1b/185693006
  • Compose @PreviewLocalOnBackPressedDispatcherOwner を提供し、既存のオーナーに依存する BackHandler のような API を使用するコンポーザブルをプレビューできるようになりました。(Ia1c05b/185693006

バグの修正

  • androidx.compose.ui:uiInfiniteAnimationPolicy を移動しました。(I5eb09b/160602714
  • モジュール構造を変更するため、AnimatedImageVector を一時的に削除しました。(I41906b/160602714

バージョン 1.0.0-beta09

2021 年 6 月 16 日

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

API の変更

  • 列挙型の Role と LiveRegionMode を、プライベート コンストラクタを含むインライン クラスに変更しました。(Id1890
  • KeyboardCapitalization をインライン クラスに変換しました。(Id5a1c
  • HapticFeedbackType をインライン クラスに変更しました。(I255ec
  • Modifier.pointerInteropFilter は @ExperimentalComposeUiApi です。(Iede6c
  • TextAlign、FontSynthesis、TextDirection がインライン クラスになりました。(I212fe
  • TextOverflow をインライン クラスに変更しました。(I433af
  • FontStyle がインライン クラスになりました。(I9e48b

バグの修正

  • 現在のところ、キー定数は @ExperimentalComposeUiApi です。コードを使用すると、安定化に先立ってプライベート定数を宣言できます。(Ia5d48
  • Robolectric で Compose テストを実行できるようになりました。これまでのところ特定されている制限は以下のとおりです。
    • ネイティブ ビットマップがないため、ImageBitmap() により NullPointerException が発生します。
    • 描画がないため、captureToImage() は次の描画パスを無期限に待機します(つまり、デッドロックになります)。
    • フォントが読み込まれていないため、テキストが正しく測定されません。すべての文字の高さは約 20 px、幅は約 1 px に固定されます。
    • ComposeTestRule.waitUntil {} は待機中にメインスレッドを実行しないため、実質的に ComposeTestRule.mainClock.advanceTimeUntil {} と同じです。今後、さらに制限が特定される見込みです。(I284fa

プロファイル ルールの追加

このリリースでは、以下の compose モジュールにプロファイル ルールが追加されました。(I14ed6

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

プロファイル ルールとは

  • ライブラリのプロファイル ルールは、src/main または同等のディレクトリにあるテキスト ファイル baseline-prof.txt で指定します。このファイルでは、1 行に 1 つずつルールを指定します。ここでのルールは、ライブラリ内のメソッドまたはクラスと合致するパターンです。ルールの構文は、人が読める ART プロファイル形式のスーパーセットで、adb shell profman --dump-classes-and-methods ... を使用する際に使用されます。ルールは、メソッドまたはクラスをターゲットとする 2 つの形式のいずれかを使用します。

  • メソッドルールのパターンは次のようになります。

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • クラスルールのパターンは次のようになります。

    <CLASS_DESCRIPTOR>
    
  • 上記の <FLAGS> には、このメソッドに「ホット」、「起動」、または「起動後」のフラグを付ける場合にそれぞれ文字 HSP(1 つまたは複数)を入力します。

  • <CLASS_DESCRIPTOR> は、ターゲットとなるメソッドが属するクラスの記述子です。たとえば、クラス androidx.compose.runtime.SlotTable の記述子は、Landroidx/compose/runtime/SlotTable; です。

  • <METHOD_SIGNATURE> はメソッドのシグネチャで、メソッドの名前、パラメータの型、戻り値の型を含みます。たとえば、LayoutNode のメソッド fun isPlaced(): Boolean のシグネチャは、isPlaced()Z です。

  • 1 つのルールに複数のメソッドまたはクラスを含める場合は、これらのパターンにワイルドカード(***?)を使用できます。

ルールの機能

  • フラグ H が付いているメソッドは、このメソッドが「ホット」メソッドであり、事前コンパイルが必要であることを示します。

  • S フラグが付いているメソッドは、このメソッドが起動時に呼び出されるメソッドであり、コンパイルのコストと起動時にメソッドを解釈するコストを回避するために事前コンパイルが必要であることを示します。

  • P フラグが付いているメソッドは、このメソッドが起動後に呼び出されることを示します。

  • このファイルに存在するクラスは、このクラスが起動時に使用されるクラスであり、クラス読み込みのコストを回避するためにヒープで事前割り当てする必要があることを示しています。

ルールの仕組み

  • ライブラリは、AAR アーティファクトにパッケージするルールを定義できます。それらのアーティファクトを含むアプリがビルドされると、ルールが結合されます。結合されたルールは、アプリに固有のコンパクト バイナリ ART プロファイルをビルドするために使用されます。ART では、アプリがデバイスにインストールされた際にこのプロファイルを利用して、アプリの特定の部分を事前にコンパイルし、アプリのパフォーマンス(特に初回実行時)を改善できます。なお、これはデバッグ可能なアプリには影響しません。

バージョン 1.0.0-beta08

2021 年 6 月 2 日

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

API の変更

  • NestedScrollSource 列挙型がインライン クラスに置き換えられました。(Ie321bb/187055290
  • FocusManager.clearFocus(forcedClear = true) の名前を FocusManager.clearFocus(force = true) に変更しました。(Ia0c41
  • 列挙型の使用をインライン クラスにリファクタリングして、新しい列挙値の追加時に網羅的な when ステートメントの問題を回避できるようにしました。(I2b5eb
  • PopupProperties から @ExperimentalComposeUiApi を削除しました。(I01fa6
  • PointerType が列挙型からインライン クラスに変更されました。(If5058
  • ContentDescription と Text のセマンティクス プロパティが、単一の値ではなくリストになり、連結ではなくそのまま結合できるようになりました。また、これらの変更を活用できるように改善されたテスト API も提供されています。(Ica6bfb/184825850
  • Modifier.focusModifier() のサポートが終了し、Modifier.focusTarget() に置き換えられました。(I6c860
  • Modifier.onSizeChanged()Modifier.onGloballyPositioned() がインライン関数ではなくなりました。(I727f6b/186109675
  • KeyboardType 列挙型がインライン クラスに置き換えられました。(I73045b/187055290
  • FocusState 列挙型が FocusState インターフェースに置き換えられました(Iccc1ab/187055290
  • ImeAction 列挙型がインライン クラスに置き換えられました。(I18be5b/187055290
  • PlaceholderVerticalAlign がインライン クラスに変換されました。(If6290
  • TextUnitType がインライン クラスになりました。(I4cba9
  • AnnotatedString.withAnnotation 関数が ExperimentalComposeApi ではなく ExperimentalTextApi になりました。(I0cd0a
    • TextUnitType が指定された TextUnit コンストラクタが、ExperimentalComposeApi ではなく ExperimentalTextApi になりました。

バグの修正

  • スクロール後に LazyColumn / Row アイテムが部分的に表示される、beta07 のバグを修正しました。(I8c9acb/188566058
  • detectDragGesuresdetectVerticalGesturesdetectHorizontalGestures が位置変更を自動的に使用するようになり、onDrag コールバックで change.consumePositionChange を呼び出す必要がなくなりました。(I42fc4b/185096350b/187320697
  • 整列ラインを提供する LayoutModifiers を修正しました。子の整列ラインが変更されたときに親が再測定されないバグを修正しました。(I4401fb/174315652
  • Modifier.onGloballyPositioned() は、すべての修飾子を適用した後のレイアウト座標ではなく、修飾子チェーン内のこの修飾子の座標を報告するように変更されました。これにより、報告される座標が、修飾子の順序の影響を受けるようになりました。(Ieb67db/177926591

バージョン 1.0.0-beta07

2021 年 5 月 18 日

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

API の変更

  • インスペクタで使用する ViewRootForInspector インターフェースを追加しました。(Ib70df
  • SubcomposeLayoutState が再使用可能なスロットの数の設定をサポートするようになりました。レイアウトは、新しいスロットが次に必要になったときにスロットを再使用するために、スロットを破棄するのではなく、最大でこの数のスロットを有効にしておきます。(Ieb981
  • KeyEventType 列挙型がインライン クラスに置き換えられました。(Id670ab/187055290
  • FocusDirection 列挙型がインライン クラスに置き換えられました。(Ib6d03b/187055290b/184086802
  • SubcomposeLayout の状態をホイスティングする機能を導入しました。これにより、必要な slotId にコンテンツを事前コンポーズできるようになり、コンポジションが次に必要なくなったときに指定された slotId でサブコンポーズしようとする際の次回の測定パスが速くなります。(I42580b/184940225
  • クリップ選択ハンドルを追加しました。(Iff80db/183408447
  • LayoutInspector のサポートに関連する不要な API を削除しました。(I2ac78

バグの修正

  • LazyColumn/Row は、スクロールされて画面から消えたときでも、前に表示されていたアクティブな(破棄されていない)アイテムを最大 2 つまで維持するようになりました。これにより、スクロールのパフォーマンスを改善する新しいアイテムをコンポーズする必要がある場合に、コンポーネントがアクティブなサブコンポジションを再利用することが可能になります。(Ie5555
  • AnnotatedStringTextGeomerticTransformTextDecoration が指定どおり適用されるようになりました。(I61900b/184760917

バージョン 1.0.0-beta06

2021 年 5 月 5 日

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

API の変更

  • ナビゲーション ジェスチャーとの競合を解決しました(I1145e
  • @ComposeCompilerApi@RequiresOptIn ではなくなりました。(Iab690
  • ユーザー補助サービスでコレクションとそのアイテムをマークできる CollectionInfo と CollectionItemInfo のユーザー補助 API を追加しました。(Id54efb/180479017
  • インデックス登録されたアイテムのリストを特定のインデックスを付加されたアイテムにスクロールする SemanticsActions.ScrollToIndex と、キーを持つアイテムを使用してリスト内のアイテムのインデックスを取得する SemanticsProperties.IndexForKey を追加しました。どちらのアクションも LazyList によって実装されます。
    • 指定されたインデックスにリストをスクロールする SemanticsNodeInteraction.performScrollToIndex と、指定されたキーを持つアイテムにリストをスクロールする SemanticsNodeInteraction.performScrollToKey を追加しました。(I4fe63b/178483889b/161584524
  • ownerViewId を GraphicLayerInfo に追加しました。(I19f62
  • アセット、File、FileDescriptor からフォントを読み込むための Font() オーバーロードを追加しました。(I5d382
  • 無効な入力を含むノードをマークできるユーザー補助 API error を追加しました。(I12997b/180584804b/182142737
  • アセット、File、FileDescriptor からフォントを読み込むための Font() オーバーロードを追加しました。(I43007
  • TextFieldValue.Saver に AnnotatedString 保存サポートを追加しました。AnnotatedString.BuilderaddTtsAnnotation と withAnnotation ユーティリティ関数を追加しました。(I8cbdcb/178446304
  • TextUnit コンストラクタ関数 TextUnit(value: Float, type: TextUnitType) を追加しました。(I7ecceb/178446304

バージョン 1.0.0-beta05

2021 年 4 月 21 日

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

API の変更

  • 試験運用版の FocusManager.moveFocus(In)FocusManager.moveFocus(Out) を追加しました。(Ic5534b/183746743
  • 試験運用版の performTextInputSelection API を追加しました。(I2dcbbb/178510628
  • InputEventCallback インターフェースはサポートが終了しました。このインターフェースは、どの公開 API でも使用できなかったため、コードでは使用されませんでした。(I34a02b/184003208
  • TextLayoutResult/createTextLayoutResult 関数はサポートが終了しました。これは、テスト用に追加された未使用のパブリック関数です。この関数は、Compose テキスト API に使用可能なことは何も行いません。この関数はサポートが終了し、今後削除される予定です。(I80413

バグの修正

  • ACTION_SCROLL_FORWARDACTION_SCROLL_BACKWARDaccessibilityActionScrollLeftaccessibilityActionScrollUpaccessibilityActionScrollRightaccessibilityActionScrollDown のユーザー補助のスクロール操作を修正しました。スクロール可能な範囲の終わりまでスクロールされる代わりに、特定の方向に 1 画面ずつスクロールされるようになりました。(Ieccb0
  • ui-test-manifest と ui-tooling-data の AndroidManifest ファイルに、Android 12 との互換性が備わりました。(I6f9deb/184718994

バージョン 1.0.0-beta04

2021 年 4 月 7 日

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

API の変更

  • SoftwareKeyboardControllerhideSoftwareKeyboardshowSoftwareKeyboard の名前を、それぞれ hide()show() に変更しました。
    • 完全な CompositionLocal インターフェースを提供して、LocalSoftwareKeyboardController を設定できるようにしました(特にテストに役立ちます)。(I579a6
  • LiveRegion ユーザー補助 API が追加されました。ノードがライブ リージョンとマークされている場合に、ユーザー補助サービスがユーザーにその変更を自動的に知らせます。(Idcf6fb/172590946
  • TextOverflow.Visible が導入されました。(Ic8f89

バグの修正

  • エッジの LazyColumn / LazyRow のアイテムが高速フリングの後に正しく配置されない問題を修正しました。(Ie4d13b/183877420
  • AndroidViewBinding が Compose 階層から削除されたときに、FragmentContainerView を介してインフレートされるフラグメントを AndroidViewBinding が適切に削除するようになりました。(Ib0248b/179915946
  • ComposeViewFragment 内にある場合に、FragmentContainerView を介してインフレートされるフラグメントを AndroidViewBinding が正しくネストするようになり、これらのフラグメントの状態の保存と復元に関する問題が修正されました。(I70eb0b/179915946
  • Compose ViewBinding が Fragment 1.3.2 に依存するようになり、構成の変更後に FragmentContainerView を介してインフレートされるフラグメントの表示が整合するようになりました。(I0743db/179915946

バージョン 1.0.0-beta03

2021 年 3 月 24 日

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

API の変更

  • ComposeView の ViewTree 依存関係のチェックを延期しました。(I8dbbfb/182466548
  • GestureScopeswipeUp / swipeDown / swipeLeft / swipeRight 関数にオプションの startX / endXstartY / endY を追加しました。(I49e2db/182063305

バージョン 1.0.0-beta02

2021 年 3 月 10 日

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

API の変更

  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I5951eb/168778053
  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I84472b/168778053
  • 以下の SemanticsMatcher を削除しました。
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance)If16bd
  • 以下の SemanticsMatchers を @ExperimentalTestApi としてマークしました。
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance)Ia600c
  • 以下の SemanticsMatcher を追加しました。
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance)I2f502

バグの修正

  • 試験運用版 API の一般使用に対する制限を適用します。(I6aa29b/174531520
  • androidx.compose.ui:ui が AppCompat や Fragment に依存しなくなりました。アプリで ComposeView を使用しているときに、Fragment または AppCompat を使用している場合は、AppCompat 1.3 以降または Fragment 1.3 以降を使用していることを確認してください。ComposeView に必要なライフサイクルと保存済み状態のオーナーを正しく設定するには、これらのバージョンが必要です。(I1d6fab/161814404
  • navigation-compose のデスティネーション内で使用すると rememberSaveable { mutableStateOf(0) } が壊れる問題を修正しました。(I1312bb/180042685b/180701630
  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I658b6b/168778053
  • ComposeRootRegistrytearDownRegistry() で低頻度で発生する NoSuchElementException を修正しました。(Iddce1

バージョン 1.0.0-beta01

2021 年 2 月 24 日

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

これは、Compose 1.0.0 ベータ版の最初のリリースです。

API の変更

  • onStart コールバックを detectDragGestures に追加しました(I67269b/179995594
  • 組み込み関数に合わせてサイズ変更するための修飾子が試験運用版ではなくなりました。(I15744
  • MeasureBlocks の名前が MeasurePolicy に変更され、機能的なインターフェースになりました。Layout API を、MeasurePolicy を使用するように更新または簡素化しました。(Icab48b/167662468b/156751158
  • InteractionState[Mutable]InteractionSource に置き換えました。
    • インターフェースは、操作イベントを送受信する役割を担います。
    • interactionState = remember { InteractionState() }ButtonModifier.clickable() などのコンポーネントに渡す代わりに、interactionSource = remember { MutableInteractionSource() } を使用します。
    • Interaction.Pressed in interactionState ではなく、InteractionSource で拡張関数(InteractionSource.collectIsPressedAsState() など)を使用する必要があります。
    • 複雑なユースケースの場合は、InteractionSource.interactions を使用して操作フローを確認できます。詳しくは、InteractionSource のドキュメントとサンプルをご覧ください。
    • I85965b/152525426b/171913923b/171710801b/174852378
  • CompositionLocals に AccessibilityMananger インターフェースと LocalAccessibilityMananger を追加しました。(I53520
  • サポートが終了した LayoutCoordinates メソッドを削除しました。positionInParent と boundInParent のプロパティの代わりに、関数を使用してください(I580edb/169874631b/175142755)。
  • 型エイリアスが、基になる型に置き換えられました。
    • ColorStopPair<Float, Color> に変更されました。
    • SpanStyleRange が `AnnotatedString.Range に変更されました。
    • ParagraphStyleRangeAnnotatedString.Range<ParagraphStyle> に変更されました。
    • StringAnnotationAnnotatedString.Range<String> に変更されました。
    • I8dd1a
  • 低レベルのテキスト コンポーネント(CoreTextField など)からの入力セッション用に、新しい TextInputSession を作成しました。(I8817fb/177662148
  • Placeable は、子レイアウトが実際に測定したサイズを表す measuredSize を公開するようになりました。このサイズは測定の制約を考慮しない場合があります。(Ib2729b/172560206b/172338608
  • selectionGroup 修飾子を追加し、ユーザー補助機能を提供するためにタブやラジオボタンのコレクションをマークできるようにしました。(Ie5c29
  • compositionLocalOfstaticCompositionLocalOfdefaultFactory は、オプションではなく必須になりました。

    この変更により、null 値非許容型(デフォルト ファクトリが提供されていない)で発生する可能性のある型エラーを解消しました。これまでは、null 値非許容型に対して null 参照を指定していました。

    null 値許容型の場合は、{ null } をデフォルト ファクトリとして提供することを検討してください。

    null 値許容型を持たないローカル変数は、有効なデフォルト値を指定しない限り、使用しないことをおすすめします。有効なデフォルトが存在しない場合、defaultFactory ラムダは例外をスローします。ただし、例外がスローされると、ローカル変数のユーザーは、その変数が型システムで適用されないという前提で、その変数に暗黙的に依存することになります。(Ifbd2a

  • UI モジュールからサポートが終了したメソッドを削除しました。(I646f6

  • サイズ修飾子の名前を変更しました。Modifier.width/height/size の名前を requiredWidth/requiredHeight/requiredSize に変更しました。Modifier.preferredWidth/preferredHeight/preferredSize の名前を width/height/size に変更しました。(I5b414

  • Modifier.tapGestureFilter を削除しました。代わりに Modifier.pointerInput { detectTapGestures(...) } を使用してください。(I266edb/175294473

  • 一部の消費をポインタ入力システムから削除しました。消費を部分的に調整する場合は、Modifier.nestedScroll を使用することをおすすめします。(Ie9c9b

  • Orientation を foundation パッケージに移動しました。VelocirtTracker を ui.gesture から ui.input.pointer に移動しました。(Iff4a8b/175294473

  • imageResource と vectorResource が、それぞれ ImageBitmap コンパニオンと ImageVector コンパニオンの拡張関数になりました。load{Image,Vector,Font}Resource 関数を削除しました。(I89130

  • AnimationClockObservable とサブクラスを削除しました。AnimatedFloat を削除しました。(Icde52b/177457083

  • プロバイダの名前を CompositionLocalProvider に変更しました。

    • コンポジション コンストラクタがキーパラメータを受け入れなくなり、非推奨となりました。
    • currentCompositeKeyHash が、構成可能なトップレベル関数ではなく、構成可能なトップレベル プロパティになりました。
    • CompositionData と CompositionGroup を androidx.compose.runtime.tooling 名前空間に移動しました
    • ComposableLambda は具象クラスではなくインターフェースになり、型パラメータは含まれなくなりました。
    • ComposableLambdaN は具象クラスではなくインターフェースになり、型パラメータは含まれなくなりました。
    • snapshotFlow 関数を androidx.compose.runtime 名前空間に移動しました
    • SnapshotMutationPolicy の統合メソッドは試験運用版ではなくなりました
    • @TestOnly トップレベルの clearRoots 関数は削除され、不要になりました。
    • keySourceInfoOf 関数と resetSourceInfo 関数は削除され、不要になりました。
    • Composer.collectKeySourceInformation は削除され、不要になりました。
    • isJoinedKey、joinedKeyLeft、joinedKeyRight の各メソッドが削除され、不要になりました。
    • いくつかのトップレベル API を別のファイルに移動し、再編成しました。Kotlin のファイルクラス セマンティクスにより、バイナリとの互換性は損なわれますがソースコードとの互換性は維持されるので、多くのユーザーにとって問題にはなりません。
    • I99b7db/177245490
  • ComponentActivity.setContent() を compose:ui から削除しました。androidx.activity:activity-compose:1.3.0-alpha01 のものを使用してください。 viewModel()LocalViewModelStoreOwner を compose:ui から削除しました。androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 のものを使用してください。(I6f36b

  • Modifier.scrollable を再構築しました。ScrollableController クラスの代わりにスクロール可能なインターフェースを使用するようになりました。(I4f5a5b/174485541b/175294473

  • PointerInputModifier の CustomEvens サポートを削除しました。(I02707b/175294473

  • SnapshotStateObserver が試験運用版ではなくなりました。(Id2e6a

  • これまでにサポートが終了している API をいくつか削除しました(Ice5dab/178633932

  • longPressGestureFilter と doubleClickGestureFilter を削除しました。Modifier.pointerInput と、detectTapGestures などのヘルパー関数を使用してください。(I2fedfb/175294473

  • さまざまな toString メソッドでの String.format API のリファクタリング使用を削除し、内部で String.format を利用しないようにしました。(Id1290

  • dp アサーションを削除しました。(I798d2

  • androidx.compose.runtime:runtime-dispatch を削除しました。(I55feb

  • テキスト アクションでフォーカスを自動的に確認するようになりました。(I13777b/179648629

  • runBlockingWithManualClock を削除しました(I15cdcb/179664814

  • Modifier.verticalScroll() / horizontalScroll() のスクロール位置が Ints で表されるようになりました。(I81298

  • FlingConfig の名前を FlingBehavior に変更し、事前定義された Decay ではなく一時停止アニメーションをカスタマイズできるようにしました。(I02b86b/175294473

  • すべての ImeAction コールバックで同じアクションを設定するのに役立つヘルパー関数を追加しました。(I63447b/179226323

  • すべてのテキスト フィールドから SoftwareKeyboardController コールバックが削除され、まもなく新しい API に置き換えられます。(Iae869b/168778053

  • FontSpan と FontWeigthStyleSpan は使用されなくなり、削除しました。(Ie5b56b/177423444

  • 以下の Material API 変更を加えました。

    • Top / BottomAppBar に contentPadding パラメータを追加し、デフォルトのパディングをカスタマイズできるようにしました。
    • API ガイドラインに沿って必須のパラメータがオプションのパラメータの前になるよう、BackdropScaffold 内のパラメータの順序を変更しました。
    • BottomNavigationItem の icon パラメータを selectedonClick の後ろになるよう移動しました。
    • BottomNavigationItem の alwaysShowLabels パラメータの名前を alwaysShowLabel に変更しました。
    • 一部のコンポーネントの bodyContent パラメータの名前を content のみに変更しました。
    • ButtonDefaults.buttonColors() のパラメータの順序を変更しました。パラメータの型は変更されないため、これによりコードでエラーは発生しません。名前付きパラメータを使用するか、順序を手動で更新してください。そうしないと、コードは以前と同じように動作しません。
    • darkColors()secondaryVariant パラメータを追加しました。通常、このカラーはダークテーマの secondary と同じですが、整合性とカスタマイズ性向上のために追加しました。
    • ElevationDefaults と animateElevation() はあまり使用されず、役に立っていないため、公開 API のサーフェスから削除しました。
    • SlideronValueChangeEnd の名前を onValueChangeFinished に変更し、null 可能にしました。
    • 整合性のため、Snackbartext パラメータの名前を content に変更しました。
    • DropdownMenuItemcontentPadding パラメータを追加してデフォルトのパディングをカスタマイズできるようにし、contentRowScope の拡張にしました。
    • ModalDrawerLayout の名前を ModalDrawer に変更しました。
    • BottomDrawerLayout の名前を BottomDrawer に変更しました。
    • I1cc66

バグの修正

  • Compose で AnimatedVectorDrawable リソースを使用するための API を追加しました。animatedVectorResource を使用して <animated-vector> XML を AnimatedImageVector として読み込み、painterFor でアニメーション化します。(I8ea91
  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I658b6b/168778053

バージョン 1.0.0-alpha12

2021 年 2 月 10 日

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

API の変更

  • ViewGroup は UiApprier でサポートされなくなりました。サポートが終了した emitView コンポーザブルを削除しました。(Ifb214
  • Modifier.pointerInput は、ポインタ入力検出コルーチン再開のタイミングを新しい依存関係に示すために、remember キーを必要とするようになりました。(I849cd
  • CompositionReference の名前を CompositionContext に変更しました(I53fcb
  • Bounds の名前を DpRect に変更しました(I4b32a
  • 更新のテスト: hasText() はテキスト フィールドの入力テキストとラベル / ヒント / プレースホルダ テキストの両方を確認します(Iab803
  • viewModel() コンポーザブルと LocalViewModelStoreOwner を androidx.lifecycle.viewmodel.compose に移動しました。これを使用するには、独立した依存関係 androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 を追加する必要があります。(I7a374
  • AccessibilityAction で null 許容アクションを実行できるようにし、AccessibilityAction と CustomAccessibilityAction のアクション ラベルを CharSequence から String に変更します。(I0dc82
  • ImageBitmap や ImageVector の命名規則に合うように、ImagePainter の名前を BitmapPainter に変更し、VectorPainter と名前を揃えました。(Iba381b/174565889
  • 部分文字列を引数として使用する部分文字列のテスト API を改善しました(Icbe78
  • ラムダを指定せずにカスタム フォーカス順序で FocusRequest を受け入れる Modifier.focusOrder() を追加しました。これは、参照を指定するだけでよい、コンポーザブルのカスタム フォーカス順序を必要としない場合に役立ちます(I4f52ab/179180978
  • ComponentActivity.setContent を androidx.activity:activity-compose モジュールの androidx.activity.compose.setContent に移動しました。(Icf416
  • destructuring と copy() メソッドを、これらをほとんど使用しないクラスから削除しました。(I26702b/178659281
  • ポップアップをプラットフォーム固有のものにしました。AndroidPopupProperties の名前を PopupProperties に変更し、isFocusablePopupPropertiesfocusable パラメータに移動しました(Ieeea5
  • ダイアログをプラットフォーム固有のものにしました。AndroidDialogProperties の名前を DialogProperties に変更しました。(I4ef69b/179138130
  • LayoutNode を内部関数に変更しました(I8a7b1b/175103944
  • Constraints.enforce を Constraints.constrain に置き換えました。(I8b8ea
  • loadFontResource が非推奨になりました。代わりに fontResource を使用してください。imageResource、loadImageResource、vectorResource、loadVectorResource が非推奨になりました。代わりに painterResource を使用してください。(I6b809
  • パフォーマンス上の理由から、ScrollAxisRange セマンティクスは、浮動小数点値を直接使用するのではなく、浮動小数点数を返すラムダを使用するようになりました。(If4a35b/178657186
  • テキスト フィールドの編集可能な入力をマークする EditableText セマンティクスを追加して、ユーザー補助機能とセマンティクスを確認するための対応するテストメソッドを確保するようにしました(I8e07a
  • OwnerLayer/OwnerScope/OwnerSnapshotObserver を内部関数に変更しました(I4ffafb/175103944
  • toIntPx() の名前を roundToPx() に変更しました(I9b7e4b/173502290
  • IntBounds の名前を IntRect に変更し、API を改善しました。(I1f6ff
  • Snapshot API を API ガイドラインとの整合性を高め、内部実装クラスを公開 API から非表示にするように更新しました。(Id9e32
  • 展開と折りたたみのセマンティクス アクションを追加しました。ModalBottomSheetState に expand と halfExpand を追加しました(Ib5064
  • Modifier.dragGesFilterFilter のサポートを終了しました。代わりに Modifier.pointerInput { detectDragGestures (...)} を使用してください。または、単軸のドラッグには Modifier.draggable を使用します(I0ba93b/175294473
  • Ambient から CompositionLocal への名前変更に合わせて各 Ambient の名前を変更しました。AmbientFoo という名前の Ambient は、LocalFoo という名前の CompositionLocal になりました。(I2d55d
  • サポートが終了した BaseTextField を削除しました。代わりに BasicTextField を使用してください。(I71368
  • Selection を Foundation に移動しました。(I7892b
  • 以前 state { 0 } composable を削除して remember { mutableStateOf(0) } のような使い方を推奨するようになったのと同様、savedInstanceState { 0 } composable を削除する予定です。代わりに rememberSaveable { mutableStateOf(0) } の使用を推奨します。これにより、MutableState 内で使用されるタイプが Bundle に保存可能な場合は、自動的に保存および復元が行われるようになります。これまでカスタムのセーバー オブジェクトを渡していた場合は、stateSaver パラメータを含む rememberSaveable の新しいオーバーロードを使用する必要があります。使い方は、val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } のようになります(Ib4c26b/177338004
  • ユーザー補助機能のためのパスワード セマンティクスを追加しました(I231ce
  • ユーザー補助機能のために不確定形式の進捗状況バーをマークする ProgressBarRangeInfo.Indeterminate を追加しました(I6fe05
  • emptyContent() および (@Composable () -> Unit).orEmpty() ユーティリティのサポートを終了しました(パフォーマンス上の効果や価値がなくなったため)(I0484d
  • snapshotFlowwithMutableSnapshot は試験運用版ではなくなりました(I6a45f
  • Recomposer をクローズできるようになりました。クローズされた Recomposer は、コンポジション子コルーチンが完了するまで再コンポジションを続けます。Recomposer.shutDown の名前を cancel に変更して close と対比させるようにしました。(Ib6d76
  • UiSavedStateRegistry の名前を SaveableStateRegistry に、AmbientUiSavedStateRegistry の名前を AmbientSaveableStateRegistry に変更し、いずれも androidx.compose.runtime.saveable パッケージに移動しました。(I30224
  • アーティファクト androidx:compose:runtime:runtime-saved-instance-state の名前を androidx:compose:runtime:runtime-saveable に変更しました(I6dcac
  • UI パッケージに長く存在していた非推奨の API を多数削除しました。(I2f2dc
  • compose:runtime-dispatch アーティファクトが非推奨になりました。MonotonicFrameClock は compose:runtime に、また AndroidUiDispatcher は compose:ui に含まれるようになりました。(Ib5c36
  • Outline.* クラスはデータクラスではなくなりました(I4879eb/178001427
  • 置き換えずに view.captureToImage() を削除しました。(I7fcd2
  • ソース コンテンツの Refactored ColorFilter API の RGB 値を interface に変更して、PathEffect の実装と一致させるための ColorMatrix API を導入しました。(Ica1e8
  • ShapeDirection パラメータを Shape の createOutline に追加します。これにより、レイアウト方向に対応した形状を作成できるようになります。(I57c20b/152756983
  • onImeActionPerformed のサポートを終了しました。代わりに KeyboardActions を使用してください(If0bbdb/179071523
  • 無限アニメーションに適用される InfiniteAnimationPolicy コルーチン コンテキスト要素を導入しました。ComposeTestRule を使用してテストを実行する場合を除き、デフォルトではポリシーはインストールされません。(I50ec4b/151940543
  • canDrag を Modifier.scrollable から削除しました。(Id66e7b/175294473
  • 新しい parentCoordinates プロパティを使用できるように、LayoutCoordinates.parentCoordinates の名前を LayoutCoordinates.parentLayoutCoordinates に変更しました。parentCoordinates プロパティは、親修飾子の LayoutCoordinte を提供するようになりました。onSizeChanged() と onGloballyPositioned() により完全なユースケースを提供できるようになります(Idfbfdb/177926591
  • tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter、pressIndicaitonGestureFilter のサポートを終了しました。代わりに、Modifier.clickable または Modifier.pointerInput を detectTapGestures 関数とともに使用してください。(I6baf9b/175294473
  • SaveableStateRegistry の unregisterProvider を削除しました。代わりに、registerProvider() が SaveableStateRegistry.Entry オブジェクトを返すようになりました。このオブジェクトを使用して登録を解除できます(Ic4274b/178583739
  • rememberSavedInstanceState() の名前を rememberSaveable() に変更して androidx.compose.runtime.saveable パッケージに移動しました。(I1366eb/177338004
  • CoreText と CoreTextField を公開 API から削除しました。
    • サポートが終了した SelectionContainer オーバーロードを削除しました
    • I99c19
  • WindowManager に直接追加または削除されている階層で Compose を使用するテストがより安定するようになりました。(Ie81edb/175765614
  • Recomposer.current() を削除しました。[Abstract]ComposeView のデフォルトは、遅延的に作成されたウィンドウ スコープの Recomposer(ウィンドウの ViewTreeLifecycleLifecycle によって駆動される)になりました。ホスト ライフサイクルが停止すると、再コンポジションと withFrameNanos に基づくアニメーション ティックが一時停止します。(I38e11
  • Recomposer.runningRecomposers は、プロセスで進行中のコンポジション状態を監視するための、読み取り専用 RecomposerInfo のグローバル StateFlow を提供するようになりました。この API は、現在非推奨の Recomposer.current() よりも優先されます。(If8ebe
  • save、listSaver()、mapSaver()、autoSaver を androidx.compose.runtime.savedinstancestate から androidx.compose.runtime.saveable に移動しました(I77fe6
  • EditCommands は AnnotatedString を受け入れるようになりました。ただし、これは API のみの変更であり、マルチスタイル テキストの編集はまだ実装されていません。(I4c3ea
  • Uptime と Duration を削除しました。(Ib9bf4b/177420019
  • CompositionData.asTree() と関連 API を ui-tooling-data モジュールに移動し、試験運用版としてマークしました(Ic95b8
  • RounderCornerShape、CutCornerShape、CornerBasedShape のパラメータの名前を left/right から start/end に変更して、RTL 方向におけるその形状の自動ミラーリングをサポートするようにしました。自動ミラーリングが不要なときのために、AbsoluteRounderCornerShape と AbsoluteCutCornerShape を導入しました。(I61040b/152756983
  • Compose コンパイラ プラグインの対象となる API は、具象クラスではなくインターフェースを使用するようにリファクタリングされました。また、それらのインターフェースは、タイプ パラメータを使用しなくなりました。

    この内部変更はソースコードの互換性には影響を与えませんが、バイナリの互換性を破る変更になります。(I3b922b/169406779

  • 意図せずに公開されていた StringBuilder.deleteAt 関数を削除しました(Id6ed9

バグの修正

  • ビュー階層に配置された ComposeView は別のコンポジションの子であり、その祖先の子コンポジションをホストするようになりました(I92883
  • ImageBitmap オブジェクトを読み込む際にリソース ドローアブル キャッシュを再利用できるように、Compose の imageFromResource API を更新しました。(If3627b/178751994

バージョン 1.0.0-alpha11

2021 年 1 月 28 日

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

API の変更

  • WithConstraints は BoxWithConstraints として再構築され、foundation.layout に移動されました。(I9420bb/173387208
  • Key.DPadUp のサポートを終了しました。代わりに Key.DirectionUp を使用してください。(Iab335b/177954892
  • オーナー インターフェースを内部化しました。(If8e35
  • プログラムでフォーカスを移動する FocusManager.moveFocus() API を追加しました。(I045cbb/177681839
  • グローバル座標ではなくウィンドウ相対座標を使用するように、PopupPositionProvider を変更しました。parentGlobalBounds の名前を anchorBounds に変更し、windowGlobalBounds を windowSize: IntSize に変更しました。(I2994a
  • Duration と Uptime を Long ミリ秒に置き換えます。これにより、これらのクラスに対するポインタ入力の依存関係が削除されます。(Ia33b2b/175142755b/177420019
  • 既存の AmbientLifecycleOwner、AmbientViewModelStoreOwner と同様に、AmbientSavedStateRegistryOwner を追加しました。(I9a3e8b/176756365
  • ベクター グラフィックのルートに適用される色合いの解析をサポートするように、ベクター グラフィック API を更新しました。(Id9d53b/177210509
  • デバイスを区別するために、toolType を PointerInputChange に追加しました。(Iac787b/175142755
  • AmbientWindowManager の名前を AmbientWindowInfo に変更しました。(I2686ab/177084714b/177084983
  • グローバル座標メソッドのサポートを終了し、ウィンドウに基づく座標メソッドを新たに作成しました。(Iee284
  • 検査が有効にされた場合にグラフィック レイヤの修飾子を追加する、Modifier.toolingGraphicsLayer を追加しました。(I315df
  • FocusRequester.createRefs は、変更の可能性があるため、試験運用版としてマークするようになりました。(I2d898b/177000821
  • SemanticsPropertyReceiver.hidden が hiddenToUser という名前に変更され、@ExperimentalComposeUiApi とマークされました。AccessibilityRangeInfo が ProgressBarRangeInfo という名前に変更されました。 stateDescriptionRange が progressBarRangeInfo という名前に変更されました。AccessibilityScrollState が ScrollAxisRange という名前に変更されました。 horizontalAccessibilityScrollState が horizontalScrollAxisRange という名前に変更されました。 VerticalAccessibilityScrollState が verticalScrollAxisRange という名前に変更されました。(Id3148
  • PointerInputData を削除し、PointerInputData のフィールドをすべて利用できるように PointerInputChange を変更しました。PointerInputEvent と PointerInputEventData は公開 API で使用されることがないため、内部化しました。(Ifff97b/175142755
  • Density を実装して dp から生ピクセルへの変換をサポートするように、GraphicsLayerScope を更新しました。(Ied528b/176819695
  • 行優先順に従うよう Matrix API を更新しました。また、SkMatrix と Matrix4 の間のフレームワーク変換ロジックを内部的に一致させるために、異なる行列表現間の変換を支援するインデックス定数を提供しました。(I432e6
  • 試験運用版の monotonicFrameAnimationClockOf メソッドを削除しました。(Ib753fb/170708374
  • String.fintPrecedingBreak と String.fingFollowingBreak を InternalTextApi に移動しました。(I657c4
  • 公開 API から androidx.compose.ui.util.isSurrogatePair を削除しました。(Ia9494
  • TransformedText.transformedText の名前を TransformedText.text に変更しました。
    • TransformedText はデータクラスではなくなりました。(Ie672a
  • 次のクラスから data class を削除しました。
    • InlineTextContent
    • LocaleList(I605c7
  • 次のクラスはデータクラスではなくなりました。
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput(Iaff99
  • VisualTransformation を機能インターフェースに変更しました。(I3bba4
  • 関数参照パラメータの型を追加しました(I5e1bd
  • InspectorNode に変換境界を追加しました(Ice42f

バグの修正

  • onCommit、onDispose、onActive のサポートを終了し、SideEffect API と DisposableEffect API に置き換えました。(If760e
  • Font / FontFamily / Typeface のファクトリ関数の変更

    • 大文字で始まるファクトリ関数を追加しました。
    • 以前の小文字で始まるファクトリ関数を非推奨としました。
    • 新しいファクトリ関数は、サブクラスではなく FontFamily を返します。
    • ファクトリ関数を介してのみ作成できるように、サブクラスのコンストラクタを非表示にしました。
    • Font.asFontFamily の名前を Font.toFontFamily に変更しました。(I42aa7
  • ComposeTestRule を拡張して setContentComposeTestRule から削除済み)を定義する、ComposeContentTestRule を導入しました。ComposeTestRule を返しアクティビティを自動的に起動しないファクトリ メソッド createEmptyComposeRule() を追加しました。これは、たとえば ActivityScenario.launch などを使用してテスト中にアクティビティを起動するときに使用します。(I9d782b/174472899

  • animateAsState が animateFooAsState になりました。ここで Foo はアニメーション化される変数の型です(Float、Dp、Offset など)。(Ie7e25

  • 画像とアイコンにコンテンツ説明パラメータを追加しました。これは、ユーザー補助サービスに説明を提供するために使用されます。(I2ac4c

  • displaySize は使用しないほうがよいため、削除しました。通常は、onRoot() のサイズまたはウィンドウ サイズ以上を使用することをおすすめします。(I62db4

  • OnSizeChanged は、レイアウトのコンテンツのサイズを報告していました。これが、修飾子チェーン内の位置でのサイズを報告するようになりました。(I36b78b/177562900

  • emit() API とすべてのオーバーロードのサポートを終了し、名前を ComposeNode に変更しました。API 自体は同じものです。単に、Compose の命名規則に従うように名前を変更しました。(I4137b

  • TextFieldValue が AnnotatedString を受け入れるようになりました。ただし、これは API のみの変更であり、マルチスタイル テキストの編集はまだ実装されていません。

    • EditingBuffer コンストラクタ パラメータから initial を削除しました。(I326d5
  • invalidate と compositionReference() を非推奨とし、それぞれ currentRecomposeScope と rememberCompositionReference に置き換えました。(I583a8

  • kotlin.CharSequence から拡張するように、AnnotatedString を変更しました。そのため、length と subSequence がインスタンス関数になり、拡張関数は削除されました。(Iaf429

  • CompositionLifecycleObserver を RememberObserver に置き換え、CompositionLifecycleObserver のサポートを終了しました。

    RememberObserverCompositionLifecycleObserver に置き換えました。セマンティクスを変更し、メソッドの名前を変更しました。新しい API への変更は、1 回だけ記憶されているオブジェクトに対しては機械的に行うことができます(引き続き、これがおすすめの方法です)。ただし、参照がコンポジション内で複数回記憶されている場合は、onEnter が 1 回だけ呼び出される参照ごとに onRemembered が呼び出されます。オブジェクトが WithConstraintsScaffold などのサブコンポジションで使用されていた場合、onEnter が複数回呼び出されることで単一の onEnter 呼び出しの保証の信頼性が損なわれていましたが、RememberObserver では削除されました。

    RememberObserver は、remember に渡されたコールバックから RememberObserver インスタンスが返された場合に呼び出される onAbandoned を追加しますが、コンポジションの状態には記憶されないため、onRemembered が呼び出されることはありません。これは、例外によってコンポジションが完了前に終了する場合や、コンポジションの生成状態が最新でなくなった、あるいは不要になったためにコンポジションが破棄された場合などに発生することがあります。上記の単一参照の推奨事項に沿った RememberObserver のインスタンスが外部リソースを追跡している場合、onForgottenonAbandoned の両方が、リソースが不要になったことを示します。オブジェクトが、開始された処理または onRemembered に割り当てられたリソースを追跡する場合、onRemembered が呼び出されても onAbandoned は呼び出されないため、onAbandoned は無視できます。(I02c36

  • 複数の TextUnit 間の算術演算のサポートを終了しました。Int.sp や Int.em などの拡張関数より優先して、TextUnit.Sp 関数と TextUnit.Em 関数のサポートを終了しました。(I48369

  • 明示的に宣言されたパブリック リソースを持たないライブラリ内のリソース(public.xml 経由など)が、デフォルトで非公開になりました。(Ia1dccb/170882230

  • ScrollableColumn/Row のサポートを終了しました。スクロールが必要な大きいコンテンツの場合、ScrollableColumn は LazyColumn よりも効率性が劣ります。これは、LazyColumn で行えることが表示要素の構成、測定、描画のみであるためです。ユーザーの効率を考慮して、ScrollableColumn と ScrollableRow のサポートを終了し、代わりに LazyColumn と LazyRow の使用を奨励することにしました。この場合でも、ユーザーが遅延動作を不要と判断した場合は次のような修飾子を直接使用できます。Column(Modifier.verticalScroll(rememberScrollState()))(Ib976bb/170468083

  • LazyColumn / LazyRow / LazyVerticalGrid のスコープのための新しい items(count: Int) ファクトリ メソッド。items(items: List)itemsIndexed(items: List) が拡張関数になりました。そのため、使用するときは手動でインポートする必要があります。Arrays の新しい拡張オーバーロード items(items: Array)itemsIndexed(Array)I803fcb/175562574

  • ImeAction.NoAction の代わりに ImeAction.None を使用してください。

    • ImeAction.Unspecified の代わりに ImeAction.Default を使用してください。(Ie1bcc
  • テストでは TestCoroutineDispatcher を利用します。(I532b6

  • TextInputService.onStateUpdated の名前を updateState に変更しました。(Id4853

  • TransitionDefinition ベースの Transition のサポートを終了しました。(I0ac57

  • TextUnitType.Inherit を削除しました。代わりに TextUnitType.Unspecified instead を使用してください。(I9ff64

バージョン 1.0.0-alpha10

2021 年 1 月 13 日

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

互換性を破る変更

  • 内部コンパイラ API の再構成により、コンポーズの結果として生成されたノードへの変更は、@Composable 関数がすべて完了した後、コンポーズの「変更を適用」フェーズで一括適用されるようになりました。

    これは、動作面の互換性を破る変更です。この変更により、ノードは変更が適用されるまでの間、内部 API や試験運用版 API から使用できなくなるため、アプリコードの変更が必要になる可能性があります。通常この問題を回避するには、ノードが生成されて初期化されるまでコードの実行を遅らせるよう、SideEffect コンポーザブルの依存関係でコードを囲むようにします。(I018da

API の変更

  • カスタム フォーカス移動順序の指定に使用できる Modifier.focusOrder() を追加しました。(I90cf5b/175899543b/170155556b/170155429
  • サポートが終了した focusObserve を削除しました。代わりに onFocusChanged または onFocusEvent を使用してください。(I3ecb9b/175156387
  • EditOperations API の変更点
    • EditOperation の名前を EditCommand に変更しました。
    • EditOperation 具象実装に Command サフィックスを追加しました。
    • EditCommand がデータクラスではなくなりました。
    • EditOperation.process 関数の名前を applyTo に変更しました。
    • InputEventListener の名前を InputEventCallback に変更しました。
    • I0a366
  • 使用されていない PxSquared、PxCubed、PxInverse を削除しました。 Size.center() をプロパティに変更しました。(I973f7
  • ui-test モジュールで、テスト段階にある UI 用の Recomposer の作成について設定できるようになりました。(Ibebd8
  • Velocity がコンポーネント部品と数学演算を持つように変更しました。(Ib0447
  • 類似する試験運用版の API アノテーションとの整合性を保つため、@ExperimentalTesting の名前を @ExperimentalTestApi に変更しました。(Ia4502b/171464963
  • Color.useOrElse() の名前を Color.takeOrElse() に変更しました。(Ifdcf5
  • 使用されていない DpInverse、DpSquared、DpCubed の各クラスを削除しました。(I4d62b
  • Constraints#satisfiedBy の名前を isSatisfiedBy に変更しました。(I9cf5c
  • layoutnode 境界が変更されたときに、オーナーに通知するコールバックを追加します。(I72fd1
  • Unspecified 定数を持つインライン クラスに isSpecified、isUnspecified、useOrElse を追加しました。(I93f7bb/174310811
  • [Abstract]ComposeView API を拡張することにより、コンポジションを破棄後に再作成して、Compose ベースのビューをリサイクルできるようにしました。子コンポジションを作成するためのウィンドウ スコープの Recomposer と ComposerReference をインストールおよび検出するための API を追加します。

    [Abstract]ComposeViews のコンポジション破棄戦略を設定するための ViewCompositionStrategy を追加します。デフォルトでは、ウィンドウのデタッチ時に破棄されます。(I860ab

  • Any.identityHashCode() 公開 API を削除しました。(I025d7

  • toStringAsFixed API を削除し、String.format を直接使用するようにしました。(Iaba6b

  • foundation の Strings.kt に切り替えを追加しました。(I4a5b7b/172366489

  • nativeClass を ui モジュールに移動し、内部化しました。equals 実装での nativeClass の使用を更新して、代わりに「is MyClass」を使用するようにしました。(I4f734

  • Modifier.focus() と Modifier.focusRequester() のサポートは終了しました。代わりに Modifier.focusModifier() と Modifier.focusReference() を使用してください。(I75a48b/175160751b/175160532b/175077829

  • Selectable の更新を SelectionManager に通知するために SelectionRegistrar.notifySelectableChange を導入しました。(I6ff30b/173215242

  • さまざまなアウトライン実装の境界四角形を取得できる Outline.bounds プロパティを導入しました。(I16e74b/175093504

  • TestUiDispatcher のサポートを終了しました。代わりに Dispatchers.Main を使用してください。(Ic171fb/175385255

  • ImeOptions と KeyboardOptions がデータクラスではなくなりました(I3c898b/168684531

  • VisualTransformation API の変更点

    • OffsetMap の名前が OffsetMapping に変更されました。
    • OffsetMapping.identityOffsetMap の名前が OffsetMapping.Identity に変更されました。
    • PasswordTransformation がデータクラスではなくなりました。
    • OffsetMapping をそれ自身のファイルに移動しました。
    • I0bdf3
  • Position の名前を DpOffset に変更し、getDistance() を削除しました。(Ib2dfd

  • fun Dp.isFinite() を val Dp.isFinite に変更しました。(I50e00

バグの修正

  • Recomposer の現時点における状態のフローが公開され、そのアクティビティおよび関連する効果のアクティビティをモニタリングできるようになりました。(Ifb2b9
  • ネイティブ keyEvent に keyEvent.nativeKeyEvent でアクセスできるようになりました。(I87c57b/173086397
  • animate()animateAsState() に置き換えられました。T ではなく State<T> を返します。これにより、State 値が読み取られる範囲に無効化スコープを絞り込めるため、パフォーマンスが向上します。(Ib179e
  • Semantics ロール API を追加し、クリック可能、選択可能、切り替え可能な SemanticsModifier にパラメータとして Role を追加しました。また、それを Slider が使用できるように Modifier.progressSemantics を変更しました。(I216cd
  • 新しいコルーチン ベースの API Animatable が、アニメーション間の相互排他的性を保証します。
    • 新しい DecayAnimationSpec で多次元の消滅アニメーションをサポートしました。
    • I820f2b/168014930

バージョン 1.0.0-alpha09

2020 年 12 月 16 日

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

API の変更

  • サポートが終了した KeyEvent.Alt が削除されました。代わりに KeyEvent.isAltPressed を使用してください。(Idd695
  • Modifier.keyInputFilter と Modifier.previewKeyInputFilter のサポートが終了しました。代わりに Modifier.onKeyEvent と Modifier.onPreviewKeyEvent を使用してください。(Idbf1bb/175156384
  • Modifier.focusObserver のサポートが終了しました。代わりに Modifier.onFocusChanged または Modifier.onFocusEvent を使用してください。(I30f17b/168511863b/168511484
  • 一時停止ポインタ入力 API について、HandlePointerInputScope の名前を AwaitPointerEventScope に変更し、handlePointerInput() の名前を awaitPointerEventScope() に変更しました。(Idf0a1b/175142755
  • Autofill API が試験運用版 API になり、オプトインが必要になりました(I0a1ec
  • FocuSRequester インスタンスを作成するための非構造化宣言を追加しました(I35d84b/174817008
  • accessibilityLabel の名前を contentDescription に変更し、accessibilityValue の名前を stateDescription に変更しました。(I250f2
  • カスタム イベントが一時停止ポインタ入力 API から削除されました(Ia54d5b/175142755
  • SelectionRegistrar にいくつかの新しい関数を導入しました。また、onPositionChange の名前を notifyPositionChange に変更しました。(Ifbaf7
  • 「内部」としてマークした LayoutNode のメンバーを増やしました(I443c6
  • LayoutInfo が導入され、ツールとテストで使用できるようになりました(I9b190
  • AndroidOwner が内部に隠蔽されました。(Ibcad0b/170296980
  • ExperimentalPointerInput アノテーションを削除しました(Ia7a24
  • ネストされたスクロール システムを追加しました。詳細については、Modifier.nestedScroll をご覧ください(I36e15b/162408885
  • subcomposeInto(LayoutNode) が内部に隠蔽されました。(Id724a
  • Applier インターフェースが変更され、トップダウンではなくボトムアップでツリーのビルドが簡素化されました。

    insert() メソッドの名前が insertTopDown() に変更されました。

    新しいメソッド insertBottomUp() が追加されました。

    Applier は、編集対象のツリーにノードを挿入する際に、insertTopDown() または insertBottomUp() のうちパフォーマンスが優れているほうを使用します。

    LayoutNodeView などの一部のツリーは、トップダウンよりボトムアップのほうが効率的にビルドできます。この変更の前は、ボトムアップを実装するために大量の挿入が必要でした。パフォーマンスを向上させるためにボトムアップの構築を必要とするすべての Applier にボトムアップをコピーする必要があったためです。この変更により、ApplierinsertBottomUp()insertTopDown() をオーバーライドし、それぞれボトムアップとトップダウンでツリーをビルドするようになりました。(Icbdc2

  • dismissOnBackPress プロパティと dismissOnClickOutside プロパティを AndroidDialogProperties に追加しました。これにより、ダイアログの onDismissRequest ラムダが呼び出されるタイミングを設定できます。(If5e17

  • ラスター化されたアセット形式(PNG など)または VectorDrawable からの Painter オブジェクトの不透明な読み込みを処理できるように、painterResource API を追加しました。コンシューマは事前にアセットのタイプを判別する必要がなくなり、このメソッドを呼び出して Image コンポーザブルまたは Painter 修飾子で使用する Painter オブジェクトを取得できます。(I2c703b/173818471

  • 子孫のセマンティクスをクリアして新しいセマンティクスを設定できるように、Modifier.clearAndSetSemantics を追加しました。(I277ca

  • ContentDrawScope を DrawScope と同じく ui-graphics モジュールに移動しました。(Iee043b/173832789

  • ストロークが適用されるシェイプにさまざまなパターンを提供する PathEffect Graphics API を導入しました。NativePathEffect の使用に対するサポートを終了し、代わりに PathEffect の Expect / Actual 実装を導入しました。(I5e976b/171072166

  • Espresso のアイドル状態リソースの Compose がサポートするバリアントとして、IdlingResource インターフェースを Compose に追加しました。これらのインターフェースは ComposeTestRule により登録と登録解除ができます。(I433f3

  • ComposeIdlingResource のグローバルな登録および登録解除と、ComposeIdlingResource へのクロックのグローバルな登録および登録解除を削除しました。(I32660

バグの修正

  • オフセット修飾子のラムダが Float ではなく IntOffset を返すようになりました。(Ic9ee5b/174137212b/174146755
  • SlotTable、SlotReader、SlotWriter を公開 API から削除しました。これらは、以前 InternalComposeAPI としてマークされていました。現在は Compose モジュールの内部にあります。

    コンポジション情報の抽出に使用するため、CompositionData と CompositionGroup が UI-Tooling API に代わって追加されました。これらは公開されていますが、UI-Tooling API が解釈する未加工の情報を提供するので、UI-Tooling API の外部での使用は想定されていません。(I31a9c

  • ShaderBrush をリファクタリングして、描画環境のサイズ設定情報を利用できる場合にシェーダー インスタンスを遅延作成できるようにしました。これを利用すると、カスタムの DrawModifier を実装しなくても、コンポーズ時にコンポーザブルの描画境界全体を占有するグラデーションを定義できます。

    グラデーション関数コンストラクタ API を非推奨とし、代わりに Gradient オブジェクトのファクトリ メソッドを導入しました。(I511fcb/173066799

  • LazyColumnFor、LazyRowFor、LazyColumnForIndexed、LazyRowForIndexed のサポートを終了しました。代わりに LazyColumn と LazyRow を使用してください(I5b48c

  • BuildCompat.isAtLeastR のサポートを終了しました(Idb37e

  • AnnotatedString をビルドできるように、buildAnnotatedString ファクトリ関数を追加しました。annotatedString の構築関数を非推奨としました。(Idfe0b

  • 値をラジアンに変換できるように、Float と Double の拡張メソッドを削除し、これらのメソッドが使用されている唯一の場所だった実装 PathParser 内のプライベート関数に移動しました。(I25f52

バージョン 1.0.0-alpha08

2020 年 12 月 2 日

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

API の変更

  • セマンティクス アクション Dismiss を追加しました(I2b706
  • DrawModifier API を androidx.compose.ui パッケージから androidx.compose.ui.draw パッケージに移動しました。非推奨となった API から現在の API への移行に役立つ型エイリアス / ヘルパー メソッドを含む DrawModifierDeprecated.kt ファイルを作成しました。(Id6044b/173834241
  • Modifier.drawLayer の名前を Modifier.graphicsLayer に変更しました。また、API のフィードバックに従って、関連するクラスを GraphicsLayer に更新しました。(I0bd29b/173834241
  • 新しいメソッド placeable.placeWithLayer() および placeable.placeRelativeWithLayer() が追加されました。これにより、カスタム レイアウトとレイアウト修飾子で、描画用のグラフィック レイヤを導入して子を配置できるようになります。まず、再描画を最適化できるので、子を移動する必要があるときにコンテンツを再描画せずに済みます。次に、子に描画変換を適用できます。(Ibd8f6b/170296989b/171493718b/173030831
  • SubcomposeLayout 宣言から <T> が削除されました。現在は、タイプを指定せずにこれを使用できます。(Ib60c8
  • Modifier.scale API / Modifier.rotate API を drawLayer 用のコンビニエンス API として追加しました。
    • Modifier.drawOpacity の名前を Modifier.alpha に変更しました。
    • Modifier.drawShadow の名前を Modifier.shadow に変更しました(I264cab/173208140
  • PointerInputData の uptime フィールドと position フィールドを null 値非許容にしました。(Id468a
  • MaterialTheme は、選択ハンドルと選択背景に正しい色を設定するようになりました。非マテリアル アプリでは、AmbientTextSelectionColors を手動で使用して、選択用の色をカスタマイズできます。(I1e6f4b/139320372b/139320907
  • ホスト ウィンドウがフォーカスされているかどうかをチェックする WindowManager.isWindowFocused と、onWindowFocusChanged コールバックを提供する WindowFocusObserver を追加しました。(I53b2ab/170932874
  • TransformOrigin API を更新し、pivotFractionX および pivotFractionYcomponent1 および component2 として返す非構造化構文を追加しました(If43c4b/173586560
  • Compose のガイドラインとの整合性を確認するため、コンポーズ可能なラムダ パラメータの名前と位置に対する lint チェックを追加しました。また、lint チェックおよびガイダンスに従って、後置ラムダの名前として children を使用する一部の API を content に移行しました。(Iec48e
  • キーイベントがディスパッチされたときに Alt、Ctrl、Meta、Shift のいずれかの修飾キーが押されたかどうかをチェックする API を追加しました。(I50ed9
  • 新しい Modifier.drawLayer() オーバーロードを追加しました。これは、新しい GraphicsLayerScope でラムダブロックを受け取ります。そこでは、状態の変化が生じたときに再コンポジションと再レイアウトをスキップできるようにレイヤ パラメータを定義します。DrawLayerModifier は、そのロジックを LayoutModifier の placeable.placeWithLayer() メソッドに移動するための準備として、内部に隠蔽されました(I15e9fb/173030831
  • Ambient という接尾辞を持つ Ambient のサポートが終了し、その他の Ambient と Compose API のガイドラインに沿って、Ambient という接頭辞を持つ新しいプロパティに置き換えられました。(I33440
  • androidx.compose.ui.text.Typefaceandroidx.compose.ui.text.font.Typeface に移動しました(Ic2b81
  • セマンティクス引数 mergeAllDescendants の名前が mergeDescendants に変更されました。(Ib6250
  • 一時停止ポインタ入力 API を使用する新しいドラッグ ジェスチャー検出器が追加されました(方向のロックを含む)。(Icef25
  • VectorAsset の名前を ImageVector に変更しました。また、API のガイドラインに従い、VectorAsset を移動して名前を Builder に変更し、ImageVector の内部クラスにしました。compat 用の ImageVector.Builder にリンクする VectorAssetBuilder の型エイリアスを追加しました。(Icfdc8
  • ImageAsset と関連メソッドの名前を ImageBitmap に変更しました。(Ia2d99
  • PlacementScope の place() に zIndex パラメータを追加しました。これにより、Modifier.zIndex() が LayoutModifier として動作し、任意のカスタム レイアウトがプレースメント ブロック内で子の zIndex を設定できるようになりました(I711f7b/171493718
  • 基盤のセマンティクス プロパティを ui に移動しました(I6f05c
  • place(Offset) と placeRelative(Offset) のサポートを終了しました。代わりに int オフセットを含むオーバーロードを使用してください(I4c5e7
  • 以前サポートが終了した API が削除されました: ModModifier.onPositioned が削除されました。Modifier.onGloballyPositioned を使用してください。Modifier.onDraw が削除されました。Modifier.onDrawBehind を使用してください。Modifier.plus が削除されました。Modifier.then を使用してください。Color.Unset が削除されました。Color.Unspecified を使用してください。PxBounds が削除されました。代わりに Rect を使用してください。(Ie9d02b/172562222
  • Alignment インターフェースが更新され、機能するようになりました。(I46a07b/172311734
  • 新しい一時停止ポインタ入力を使用する、タップ、ダブルタップ、長押し、プレス操作のジェスチャー検出器が追加されました。ユーティリティもいくつか追加されたので、デベロッパーは独自のジェスチャー検出器を簡単に作成できます。(I00807
  • LayoutIdParentData 用の id の名前が layoutId に変更されました。Measurable.id の名前が Measurable.layoutId に変更されました。(Iadbcbb/172449643
  • 回転、ズーム、パンを検出するためのヘルパーを含む新しいマルチタッチ ジェスチャー検出器が追加されました。(Ic459d
  • SweepGradientShader API と SweepGradientBrush API を導入しました。(Ia22c1
  • テストの時間制御(TestAnimationClock とその使用方法)が試験運用版になりました(I6ef86b/171378521
  • コルーチン ベースのスクロール API を追加しました。

    LazyListState.snapToItem および LazyListState.smoothScrollBy とともに、スクロール制御用の低レベル API を追加しました。これらの API は、スクロールが終了するまで待機してから戻るスクロールを制御するための一次停止インターフェースを提供します。(Ie5642

  • Modifier.focusable が基盤に追加されました。これを使用して、適切なセマンティクスとユーザー補助機能を備えたフォーカス可能な動作をコンポーネントに追加できます。(I41eb9b/152525426b/162865824

  • clock に委任できる AnimationClockTestRule のメソッドとプロパティのデフォルト実装を提供しました(I7ea3db/173399709

  • AndroidComposeTestRule がカスタム アクティビティ ランチャーを受け入れられるようになりました(Ib8288b/153623653b/154135019

  • TextLayoutResult.getLineVisibleEnd のサポートが終了しました。その代わりとして、TextLayoutResult.getLineEnd に新しいパラメータ visibleEnd が導入されました。(I73282

  • TextFieldValue API の更新

    • TextFieldValue.composition を読み取り専用にしました
    • 無効な選択範囲に対してスローされる例外を削除しました(I4a675b/172239032
  • テキスト読み上げエンジン用に TtsAnnotation のサポートを追加しました。(I54cc6

  • コルーチンでアニメーションを実行するための新しい API を追加しました(Ied662

バグの修正

  • Box のアライメント パラメータの名前が contentAlignment に変更されました。(I2c957
  • offsetPx 修飾子の名前が offset に変更されました。現在は、State ではなくラムダ パラメータを取得します。(Ic3021b/173594846
  • TextInputService#onStateUpdated に resetInput パラメータを追加しました(I3e8f5b/172239032b/171860947
  • コンポーズ可能な関数に Modifier パラメータの lint チェックを追加しました。この lint チェックでは、パラメータの名前、戻り値の型、デフォルト値、順序が Compose のガイドラインに従っているかどうかが確認されます。(If493b
  • TestAnimationClock が MonotonicFrameClock によって作動するようにするオプションを一時的に追加しました(I1403bb/173402197
  • Android Typeface ラッパーを追加しました。Android Typeface は、typeface 関数(typeface(Typeface.DEFAULT))によって読み込むことができます。また、typefaceFromFontFamily() の名前を typeface() に変更しました(I52ab7
  • Modifier ファクトリ関数が Modifier の拡張として定義され、スムーズに連鎖できるようになっているかどうかを確認する lint チェックを追加しました。(I07981
  • 古い ui-test モジュールとそのスタブを削除しました(I3a7cb
  • Recomposer は EmbeddingContext を受け入れなくなりました。必要なスケジューリング依存関係は effectCoroutineContext から取得されます。FrameManager のサポートが終了しました。プラットフォーム統合は、固有のグローバル スナップショット処理を初期化する必要があります。(I02369
  • スタイル情報をユーザー補助ノードに渡すようにしました。(If5e8d
  • 他の単位との整合性を図るため、TextUnit.Inherit の名前が TextUnit.Unspecified に変更されました。(Ifce19

Compose UI バージョン 1.0.0-alpha07

2020 年 11 月 11 日

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

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 に含まれる commit については、こちらをご覧ください。

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 に含まれる commit については、こちらをご覧ください

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 に含まれる commit については、こちらをご覧ください

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 に含まれる commit については、こちらをご覧ください

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 に含まれる commit については、こちらをご覧ください

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 に含まれる commit については、こちらをご覧ください

バージョン 0.1.0-dev

バージョン 0.1.0-dev17

2020 年 8 月 19 日

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

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 に含まれる commit については、こちらをご覧ください

API の変更

  • OnChildPositioned のサポートが終了しました。代わりに、OnPositioned を子で使用してください。(I87f95b/162109766
  • setViewContent のサポートが終了しました。代わりに setContent を使用してください。(I7e497b/160335130
  • ViewBinding に基づいてレイアウト リソースをインフレート、コンポーズするための AndroidViewBinding API を追加しました。(I081c6
  • KeyEvent2 が KeyEvent に置き換えられました。(I2d770b/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 と書いてチェーンを分断し可読性を下げることが防止されます。(Iedd58b/161529964
  • View 階層内で Compose コンテンツをホストするための [Abstract]ComposeView View サブクラスを追加しました。(I46357
  • RowColumn をインライン関数にしました。これにより、使用する際のオーバーヘッドが大幅に削減されます。(I75c10
  • SubcomposeLayout を追加しました。これは、測定中に後にならないと使用できない値を使用してサブツリーをコンポーズする場合に、子をコンポーズできるようにする低レベル プリミティブです。たとえば、WithConstraints は SubcomposeLayout を使用せずに実装されています。(I25cc8
  • Compose 階層のルートを基準とする SemanticsNode の相対位置を取得する SemanticsNode.positionInRoot を追加しました。(Icdf26b/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 に含まれる commit については、こちらをご覧ください

依存関係の更新

  • 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