Compose UI

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

構造

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.7.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.7.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

フィードバック

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

新しい問題を報告する

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

バージョン 1.8

バージョン 1.8.0-alpha01

2024 年 9 月 4 日

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

バージョン 1.7

バージョン 1.7.0

2024 年 9 月 4 日

androidx.compose.ui:ui-*:1.7.0 がリリースされました。

1.6.0 以降の重要な変更

バージョン 1.7.0 の重要な変更については、こちらのブログ投稿をご覧ください。

バージョン 1.7.0-rc01

2024 年 8 月 21 日

androidx.compose.ui:ui-*:1.7.0-rc01 がリリースされました。バージョン 1.7.0-rc01 には、こちらの commit が含まれています。

主な変更点

  • ui:ui モジュールにより、foundation:foundation の最小バージョン要件は少なくとも 1.7.0-rc01 以降になりました。これは、1.7.0-alpha01 の初期に発生した NestedScrollSource の変更に関して、ui と Foundation の間の動作の非互換性を修正するために強制されます。

バージョン 1.7.0-beta07

2024 年 8 月 7 日

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

バグの修正

  • テキスト入力関連の SemanticsNodeInteraction 関数 performTextReplacementperformTextInputperformTextClearance が、読み取り専用の TextFields で呼び出されると、アサーション エラーをスローするようになりました。(I4ae8f)。

バージョン 1.7.0-beta06

2024 年 7 月 24 日

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

バージョン 1.7.0-beta05

2024 年 7 月 10 日

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

バグの修正

  • ソフトウェア キーボードを変更すると、フォーカスが失われて回復するまで TextField が新しいキーボードからの入力を受け入れないバグを修正しました。
  • レイヤ コンテンツを保持しようとすると、SurfaceView コンテンツでレンダリングしたときに意図しない副作用が発生する問題を修正しました。

バージョン 1.7.0-beta04

2024 年 6 月 26 日

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

バグの修正

  • 非常に大きなテキスト行(1 万文字など)を測定する場合にクラッシュを回避(8157ab
  • GraphicsLayer API のソフトウェア レンダリング サポートを無効にします。(35ddd8)。
  • レイヤの永続性ロジックでクラッシュする問題を修正しました。(70b13e)。
  • レンダリングの問題が発生したため、レイヤ オブジェクトの最適化の再利用は元に戻されました。(70b13e)。

バージョン 1.7.0-beta03

2024 年 6 月 12 日

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

バージョン 1.7.0-beta02

2024 年 5 月 29 日

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

API の変更

  • SemanticsProperties.Editable の名前を IsEditable に変更し、SemanticsPropertyReceiver.editable を val isEditable に変更しました。このプロパティはブール値になり、常にテキスト フィールドで指定されます。(I8acd8)。
  • ユーザー補助ベンチマーク パラメータの名前を変更。(I3d440)。
  • リンクのスタイルを設定するための API を更新しました。TextLinkStylesLinkAnnotation コンストラクタと AnnotatedString.fromHtml メソッドの一部になりました(I90b2b)。また、マテリアルから TextDefaults を削除しました(I5477b)。

バグの修正

  • 目的をよりわかりやすくするために、LayoutCoordinates.introducesFrameOfReference の名前を LayoutCoordinates.introducesMotionFrameOfReference に変更しました。このフラグに基づいて座標を計算するため、関連する関数の名前を変更しました。(I3a330)。

バージョン 1.7.0-beta01

2024 年 5 月 14 日

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

API の変更

  • performCustomAccessibilityActionLabelled の名前を performCustomAccessibilityActionWithLabel に、performCustomAccessibilityActionWhere の名前を performCustomAccessibilityActionWithLabelMatching に変更しました。(I5387f)。
  • AnnotatedString.hasEqualsAnnotationshasEqualAnnotations になりました。(I685c0
  • テキスト内にマテリアル テーマのリンクを取得するための API を更新しました。具体的には、テーマ別 LinkAnnotations を作成し、テーマ別リンクで HTML を解析するためのメソッドを TextDefaults から削除しました。代わりに、テキスト コンポーザブルのパラメータとしてリンクのスタイルを設定できる TextLinkStyles クラスを追加しました。(I31b93)。

バグの修正

  • イベント中にポインタ入力修飾子を動的に追加する際の追加のユースケースを修正 63e1504

バージョン 1.7.0-alpha08

2024 年 5 月 1 日

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

API の変更

  • 可変のシェイプの実装のサポートが追加されました。Shape#createOutline がグラフィック レイヤ内で監視されるようになりました。そのため、内部の状態値を読み取ると、状態が変化したときに無効化されるため、シェイプ アニメーションのパフォーマンスが向上します。(Id1629b/326070216)。
  • isPositionedByParentWithDirectManipulation の名前を introducesFrameOfReference に変更しました現在は逆効果になっています。つまり、デフォルトでは、ほとんどの LayoutCoordinates が参照フレームを導入し、直接操作下に配置された場合にのみ、このプロパティは false になります。参照の枠組みになるものだけを使用して位置をクエリするには、positionInLocalFrameOfReference(...) を使用します。または、LookaheadScope から positionInLocalLookaheadFrameOfReference します。(Ifc5f7)。
  • LookaheadScope API が安定版になりました。(I21507
  • API カウンシルのフィードバックに従って getScrollViewportLength のアクション ラムダを変更。(Ibc74a)。
  • int ではなく float パラメータを使用するように GraphicsLayer Outline API を更新しました。UnsetOffset/UnsetSize IntSize の標識値を削除し、浮動小数点数ベースのオフセットとサイズのインライン クラスの既存の未指定定数に置き換えました(I2fb03b/333863462)。
  • テスト中にマウス入力を注入する際、MouseInjectionScope.click()MouseInjectionScope.doubleClick()MouseInjectionScope.tripleClick()MouseInjectionScope.longClick()button: MouseButton パラメータを受け入れるようになり、より普遍的に適用できるようになりました。すべてのメソッドのデフォルト値は MouseButton.Primary です。(I31a23b/190493367b/261439695)。
  • LinkInteractionListener 内で onClicked の名前を onClick に変更しました。(Iaa35c)。
  • TextInclusionStrategy.isInsideisIncluded に変更しました。Paragraph/MultiParagraph#getRangeForRect() の戻り値の型を null 値非許容型にしました。(I51f26)。

バグの修正

  • reverseScrolling=true でのスクロール コンテナの長いスクリーンショットのキャプチャを修正しました。(I7c59c)。

外部からの協力

  • ネストされた LazyLists でアイテムをプリフェッチするためのサポートを追加しました(例: ネストされた LazyRows をレンダリングする LazyColumn)。この変更により、これらの LazyLists のスクロール中のフレーム落ちが減少すると予想されます。実装はデフォルトで、ネストされた最初の 2 つのアイテムをプリフェッチしますが、この動作は新しい LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) API と LazyListPrefetchStrategy#onNestedPrefetch API で制御できます。(I51952)。

バージョン 1.7.0-alpha07

2024 年 4 月 17 日

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

API の変更

  • ClickableText は非推奨としてマークされています。テキストにリンクを追加するには、リンクに対応する LinkAnnotation を持つ AnnotatedString を作成し、この AnnotatedString をテキスト コンポーザブルに渡します。(I34d4bb/323346994)。
  • 手書き入力ジェスチャー用の ViewConfiguration.HandwritingGestureLineMargin を導入しました。BasicTextFieldJoinOrSplit ジェスチャーをサポートします。(Ie6e13b/325660505
  • FocusProperties.enterFocusProperties.exit は試験運用版ではなくなりました。FocusDirection.EnterFocusDirection.Exit は試験運用版ではなくなりました。FocusRequester.Cancel は試験運用版ではなくなりました(I461a1b/261564106)。
  • レイアウト座標をクエリするときに、excludeDirectManipulationOffset 引数を使用して、Placeable.PlacementScope.withDirectManipulationPlacement を使用して子を配置した親 Layout によって設定されたオフセットを除外できるようになりました。同様に、子の位置を頻繁に変更するレイアウトで、withDirectManipulationPlacement(デフォルトで実装されているスクロールなど)を使用して子を配置するようになりました。これにより、approachLayout ベースのアニメーションがより直感的になり、アニメーション化するオフセットと、アプローチのアニメーション化を決定する際に直接適用するものを区別できるようになりました。(I60ec7)。
  • 長いスクリーンショットの機能フラグは削除されました。(I28648b/329128246)。
  • LazyColumn で、長いスクリーンショットで固定ヘッダーが正しくレンダリングされるようになりました。(I8d239b/329296635)。
  • NestedScroll ソースのドラッグとフリングは、アニメーション(副作用)やマウスホイールとキーボード(UserInput)を含むこれらのソースの拡張定義に対応するために、UserInputSideEffect に置き換えられます。(I40579)。
  • ApproachLayoutModifierNodeModifier.approachLayout が安定版になり、古い isMeasurementApproachComplete()isPlacementApproachComplete() をそれぞれ新しい isMeasurementApproachInProgress()isPlacementApproachInProgress() に置き換えました。
  • サポートが終了した intermediateLayout 修飾子を削除しました。(I3e91c)。
  • GraphicsLayer#buildLayer の名前を record に変更して、RenderNode や Picture などの Displaylist ベースの API の begin/endRecording メソッドをミラーリングします。
  • rememberObserver を利用するように rememberGraphicsLayer を更新しました。(I312c1b/288494724b/330758155)。
  • UrlAnnotation は非推奨となりました。代わりに LinkAnnotation.Url を使用してください。マテリアル テーマ設定を使用している場合は、TextDefaults オブジェクトを使用して、マテリアル テーマ設定を適用してアノテーションを作成します(I8d180b/323346545)。
  • テキストリンクに、通常のスタイル設定に加えて、押された状態のスタイル設定オプションが追加され、カーソルを合わせてフォーカスされるようになりました(I5f864b/139312671)。
  • String.parseAsHtml の名前を AnnotatedString.Companion.fromHtml に変更しました。(I43dcd)。
  • スタイル設定引数(linkStylefocusedLinkStylehoveredLinkStyle)とリンク操作リスナーを parseAsHtml メソッドに追加しました。<a> タグで HTML タグ付きの文字列を解析する場合、メソッドはそのようなタグごとに LinkAnnotation.Url を作成し、スタイル設定オブジェクトとリンク操作リスナーを各アノテーションに渡します。(I7c977)。
  • LinkAnnotation が、状態ベースのスタイル設定の引数と LinkInteractionListener を受け取るようになりました。このアノテーションを AnnotatedString に追加して、ハイパーリンクを取得します。focusedStatehoveredState を渡すことで、リンクがフォーカスされているときやカーソルを合わせたときの視覚的な configuration を定義できます。(I81ce4b/139312671)。
  • ImeOptions.hintLocales を null 値許容ではなくなりました。空の言語 / 地域リストを渡す場合は、LocaleList.Empty を使用してください。(Ic5bc4)。

バグの修正

  • 不適切または破損した過去の入力イベントデータを適切に処理する(不適切なオフセット データは無視する)。
  • アクティブなポインタ入力イベント ストリーム(マウスオーバーでの入力とホバーによる終了 [マウス/タッチペン] の間など)中に、別のポインタ入力修飾子の前にポインタ入力修飾子が動的に追加されると、予期しないポインタ イベントを修正しました。

バージョン 1.7.0-alpha06

2024 年 4 月 3 日

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

新機能

  • スタイル付き文字列用の parseAsHtml メソッドを追加しました。このメソッドを使用すると、HTML タグでマークされた文字列を AnnotatedString に変換できます。すべてのタグがサポートされているわけではありません。たとえば、箇条書きリストはまだ表示できません。(I84d3dI30626b/139326648)。
  • 公式の Android API(ScrollCaptureCallback)を使用して Compose のスクロール コンテナに長いスクリーンショットに対する試験運用版のサポートを実装しました。この機能は試験運用中であり、現時点ではすべてのケースが正しく処理されるわけではありません。そのため、現在、この機能はデフォルトで無効になっています。オプトインするには、ComposeFeatureFlag_LongScreenshotsEnabled フラグを true に設定します。(I2b055b/329296471)。

API の変更

  • fun ClipEntry.getMetadata()val ClipEntry.clipMetadata に変更されました。(I50155)。
  • ClipboardManager.getClipMetadata 関数と ClipboardManager.hasClip 関数を削除しました。現在のクリップ エントリのメタデータを読み取るには、clipEntry.getMetadata() を使用してください。また、ClipboardManager.getClip の結果が null かどうかをチェックすると、クリップボードに現在のクリップがあるかどうかを把握できます。(I50498)。
  • GraphicsLayer オブジェクトを placeable.placeWithLayer() 関数に渡せるようになりました。(I1b22f
  • ClipboardManager.setClip が null を受け入れ、クリップボードを消去できるようになりました。(I7d2e9)。
  • ビルドツール内で実装の詳細として使用されるビューを非表示にするためのリソース ID を追加しました(I99531)。
  • ビットマップのコンテンツを GraphicsLayer にレンダリングできるように、GraphicsLayer#toImageBitmap suspend メソッドを追加しました。これは、すべての Android デバイスの 99% 以上をサポートする API レベル 22 以降でのハードウェア アクセラレーションのレンダリング操作です。Android API レベル 21 では、ソフトウェア レンダリングにフォールバックします。(I9e114)。
  • Android RectFComposeRect に変換するヘルパー メソッド(I39925b/325660505
  • すべての KeyboardOptions パラメータがデフォルトで未指定の値になりました。KeyboardOptions.merge メソッドを追加しました。
  • KeyboardOptions.autoCorrect の名前を autoCorrectEnabled に変更し、null 許容にしました。null は、値が指定されていないことを示します。(Ia8ba0b/295951492)。
  • BasicTextField(state) バリアントと BasicSecureTextField は、ソフトウェア キーボードで行われたアクションを処理するために、KeyboardActions ではなく KeyboardActionHandler を使用するようになりました。(I58dda)。

バージョン 1.7.0-alpha05

2024 年 3 月 20 日

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

新機能

  • ディスプレイ リストの描画コマンドを記録する新しい GraphicsLayer API と、ディスプレイ リストのレンダリングに影響する追加のプロパティを導入しました。これにより、複雑なシーンを小さな断片に分割し、シーン全体を再作成しなくても個別に更新できる分離境界が得られます。GraphicsLayer に対する変換は、ディスプレイ リストを再記録することなく実行できます。Modifier.graphicsLayer とは異なり、GraphicsLayer を使用すると、他の場所でコンポーズ可能なコンテンツをレンダリングできるため、コンテンツが別のシーンでレンダリングされることが想定されるアニメーションのユースケースで役立ちます。

API の変更

  • GraphicsLayer.draw(Canvas) は公開 API ではなくなりました。レイヤを描画するには、代わりに DrawScope.drawLayer(GraphicsLayer) 拡張関数を使用してください。(I7a7c0)。
  • restrictedConstraints()fitPrioritizingWidth()fitPrioritizingHeight() の 2 つのメソッドに分割しました。(I6d7fd
  • Android L を使用するための HardwareCanvas スタブを導入しました(I1c3b5b/288494724)。
  • Compose フレームワークを更新して、Owner、DelegateableNodedrawWithCache の修飾子の実装を更新して、GraphicsContext コンポジションをローカルに公開するとともに、修飾子が破棄されたときに GraphicsLayer インスタンスを自動的にクリーンアップするスコープ アクセス用の GraphicsContext へのアクセスを公開するようにします。(I64a2fb/288494724)。
  • 低レベルの IME 関連のテストやその他の低レベルの IME ユースケースの作成に役立つ InterceptPlatformTextInput を導入しました。PlatformTextInputTestOverride のサポートが終了しました。(I862edb/322680547)。
  • GraphicsLayer.setOutline(Outline) 拡張関数が追加されました。(Ib81f4)。
  • GraphicsContext 関数コンストラクタを導入し、GraphicsLayer インスタンスを作成するファクトリを作成します。(Ib98d6b/288494724
  • GraphicsLayer API を公開し、別の場所で描画したり、最終的な結果にさまざまな視覚効果を適用したりするために使用できる描画コマンドをデベロッパーが定義できるようにしました。(I80245b/288494724)。
  • 指定された長方形領域で覆われるテキスト範囲を返す Paragraph#getRangeForRect を導入します。(Iee516b/325660505)。
  • onLinkClicked 引数を指定した BasicText の試験運用版のオーバーライドを削除しました。ハイパーリンク サポート用の代替 API が今後提供される予定です。(I107d5)。

バグの修正

  • GraphicsLayerプロセス/実際の API 定義を追加し、オプションで視覚効果と変換を合成できる描画コマンドのキャプチャと再生をサポートします。GraphicsLayer インスタンスの作成と管理など、グラフィックの依存関係を含めるために GraphicsContext インターフェースを導入しました。(I4a8d6b/288494724)。
  • 1D フォーカス検索で、他のビューに埋め込まれた ComposeView 内でフォーカスが停止する相互運用性の問題を修正しました。(I08fd4)。

外部からの協力

  • LocalLifecycleOwner が Compose UI から lifecycle-runtime-compose に移動され、Compose ベースのヘルパー API を Compose UI の外部で使用できるようになりました。Jake Wharton 氏の貢献に感謝します。(I6c41bb/328263448)。
  • すべてのバイアスベースのアライメント サブタイプで、バイアスの浮動小数点プロパティを一貫して公開します。(I69f0fb/328088992)。

バージョン 1.7.0-alpha04

2024 年 3 月 6 日

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

API の変更

  • Android U 以降のデバイスで BasicTextField2 のタッチペン手書き入力機能をサポートします。(I002e4)。
  • この CL では、GetScrollViewportLength セマンティック アクションを追加しているため、Compose でスクロールされているコンポーネントに関する情報を a11y システムにパイプできます。この CL は、Foundation のスクロール可能なリストでの当該プロパティの使用にも適用されます。(Ic5fa2)。
  • FocusRequester.createRefs が安定版になりました。(I4d92cb/261436820
  • DelegatableNode.requireView() を導入し、修飾子ノードがコンポジション ローカルを読み取らずに現在の Android View を取得できるようにしました。(I40768)。
  • パスの方向を逆にする新しい API Path.reverse()I36348
  • hintLocalesKeyboardOptions に追加しました。これにより、TextFields は特定の言語 / 地域の IME にヒントを表示し、使用言語を事前設定できるようになりました。
  • 基になるプラットフォーム オブジェクトを返す LocaleplatformLocale プロパティを公開します。次に例を示します。java.util.Locale。(I921c6)。

バージョン 1.7.0-alpha03

2024 年 2 月 21 日

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

API の変更

  • ContextualFlowRow と、MaxLines と Overflow による拡張 FlowRow/Column を導入しました。試験運用版の FlowRowFlowColumn に対する機能強化を発表します。ContextualFlowRowContextualFlowColumn のデビューに伴い、maxLines とオーバーフローのサポートが追加されました。このアップデートは、パフォーマンスが最適化されたコンポーネントを提供するように設計されています。ContextualFlow* は、小さな maxLines 構成と動的な +N 表示ボタンを使用する多数のアイテムに最適で、FlowRowFlowColumn はアイテム数 100 未満の少数のアイテムに最適です。重要: 交差軸の最大値に適合するかどうかにかかわらず、すべてのアイテムが構成される FlowRow または FlowColumn の既存の動作を維持するには、初期化時に overflowFlowRowOverflow.Visible または FlowColumnOverflow.Visible に設定します。これらの新機能の活用例については、ContextualFlowRowSampleFlowRowSample をご覧ください。(Ib9135b/293577082)。
  • 最大許容文字数をフィルタするテキスト フィールドに設定する maxTextLength セマンティクス プロパティを追加します。(I24d9fb/170648072)。
  • Modifier.inspectable ラッパーは非推奨になりました。この API では、必要以上に修飾子の無効化が作成されるため、この API の使用は推奨されていません。修飾子プロパティをツールに公開したい場合は、ModifierNodeElementinspectableProperties() メソッドを実装することをおすすめします。(Ib3236)。
  • WindowManager.LayoutParams フラグを完全に制御できる PopupProperties の新しいコンストラクタ。(Ibb33eb/312485503)。
  • onPlaced をオーバーライドして座標をプロパティに保存することなく、Modifier.Node の現在の LayoutCoordinates を取得する方法として DelegatableNode.requireLayoutCoordinates() を導入しました。(Ia8657)。
  • onPlaced をオーバーライドして座標をプロパティに保存することなく、Modifier.Node の現在の LayoutCoordinates を取得する方法として DelegatableNode.currentLayoutCoordinates を導入しました。(Iaebaa)。
  • androidx.compose.foundation.text2 パッケージ内の BasicTextField2 と関連する API が androidx.compose.foundation.text に移動されました。(I9f635)。
  • 明示的な Modifier ノードでのカスタム アプローチ ロジックの作成をサポートする新しい ApproachLayoutModifierNode API を追加しました。また、インスタンス化時にターゲットが不明なアニメーション用の試験運用版の DeferredTargetAnimation API を新たに追加しました。(I60745)。
  • パスの方向をクエリし、Path から等高線を抽出する新しい Path API。(I63d04)。
  • Path に特定のポイントが含まれているかどうかを確認するために、PathHitTestPath.contains(Offset) を追加しました。(I3b218)。
  • TextLayoutResultgetLineBaseline(lineIndex) メソッドを公開するようになりました。これにより、既存のコンビニエンス プロパティ firstBaselinelastBaseline に加えて、テキストの任意の行のベースラインを読み取ることができます。(Ide4e8b/237428541)。
  • 2 つの AnnotatedStrings のアノテーションのみを比較するメソッドを追加しました。(I32659)。

バグの修正

  • SemanticsPropertyReceiver.performImeActionSemanticsActions.PerformImeAction の下位互換性の問題を修正しました。(Id0528b/322269946)。

バージョン 1.7.0-alpha02

2024 年 2 月 7 日

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

API の変更

  • SemanticsPropertyReceiver.performImeAction とのバイナリ互換性の問題を修正しました。(I65865b/322269946)。
  • usePlatformDefaultWidth パラメータを受け取る PopupProperties コンストラクタが試験運用版ではなくなりました。(I8f8d2)。
  • タイムアウト メッセージに含める条件の文字列説明を取得する ComposeTestRule.waitUntil のオーバーロードを追加しました。(I9413e)。
  • 同じ修飾子チェーンに追加されたセマンティクス プロパティを削除する新しいセマンティクス API unset()。新しいセマンティクス プロパティ isOpaque。(I8c583b/317966058b/246056649)。
  • PointerInputChange の公開 API のコピーメソッドから originalEventPosition を削除しました。(I7bead)。

バグの修正

  • タブ以外のボタンとラジオボタン以外のボタンを選択すると、クリック可能になる a11y バグを修正しました。(I2181c)。
  • VelocityTracker では、ポイントの追加に関する修正がデフォルトで有効になります。この修正は、問題がある場合に VelocityTrackerAddPointsFix を false に設定することで無効にできます。(Ib3877b/269487059)。
  • TextStyleParagraphStyle でのバイナリの下位互換性がない問題を修正しました。(I179f0b/320819734)。

外部からの協力

  • プラットフォーム固有のパラメータを指定しない新しい DialogProperties コンストラクタを追加しました。(I45829)。
  • プラットフォーム固有のパラメータを指定しない新しい PopupProperties コンストラクタを追加しました。(I9a038)。

バージョン 1.7.0-alpha01

2024 年 1 月 24 日

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

API の変更

  • ClipEntryClipMetadata を追加して ClipboardManager を拡張し、画像などの任意のコンテンツをサポートできるようにしました。
  • DeviceConfigurationOverride API を ui-test に追加してローカルで許可しました たとえば、使用可能な動作を指定するなど、テスト対象コンテンツの動作の サイズ、言語 / 地域、レイアウト方向、フォントスケール、テーマを指定できます。

バージョン 1.6

バージョン 1.6.8

2024 年 6 月 12 日

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

バグの修正

  • フォント スケールが定義された最小値のテーブルより小さい場合のフォント スケーリングの不整合を修正しました。今回は、1 倍の線形スケールと最も低い定義されたテーブルの間で補間するので、スケールが大きくなるにつれてフォントサイズが単調に増加します。(Icbae3)。

バージョン 1.6.7

2024 年 5 月 1 日

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

バージョン 1.6.6

2024 年 4 月 17 日

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

バグの修正

  • まれに発生する BasicTextField のクラッシュを修正。

バージョン 1.6.5

2024 年 4 月 3 日

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

バージョン 1.6.4

2024 年 3 月 20 日

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

バージョン 1.6.3

2024 年 3 月 6 日

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

バージョン 1.6.2

2024 年 2 月 21 日

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

バージョン 1.6.1

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

バグの修正

  • SemanticsPropertyReceiver.performImeActionSemanticsActions.PerformImeAction の下位互換性の問題を修正しました。(Ie0bb2b/322269946)。
  • レイアウトが異常に大きなサイズを返すと、測定中にエラーが表示されるようになりました。この種のエラーは通常、Constraints.Infinity をチェックせずに、測定で最大制約を直接使用している場合に発生します。このチェックは、レイアウトを含むレイアウト内ではなく、レイアウトのサイズが正しくない問題を特定するのに役立ちます。(I339a9)。

バージョン 1.6.0

2024 年 1 月 24 日

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

バージョン 1.6.0-rc01

2024 年 1 月 10 日

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

バグの修正

  • ベクター グラフィックの実装を最適化し、追加の再コンポーズを最小限に抑えてパフォーマンスを改善しました。

バージョン 1.6.0-beta03

2023 年 12 月 13 日

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

新機能

  • ノードを切断せずに LayoutCoordinates を切断できるようになりました。Compose Layout Inspector でそれから保護します(If693

バグの修正

  • PlatformImeOptions がインターフェースではなく具象クラスになりました。(If40a4)。
  • ルートが再コンポーズされるたびに LocalSoftwareKeyboardControllerLocalTextInputService が新しい値を提供することによって発生する余分なダウンストリーム再コンポーズを修正しました。(I42190b/310510985)。

バージョン 1.6.0-beta02

2023 年 11 月 29 日

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

バージョン 1.6.0-beta01

2023 年 11 月 15 日

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

API の変更

  • DragAndDropTarget 修飾子が受信側の DragAndDropTarget を明示的に受け取るようになり、ドラッグ&ドロップ セッションにオプトインするためのラムダが追加されました。DragAndDropModifierNode のファクトリ関数が 2 つになりました。1 つは転送の受信用、もう 1 つはデータ転送用(I69481
  • 浮動小数点数として表されるように maximumFlingVelocity を更新しました。maximumFlingVelocity の単位を明確にするためドキュメントを更新しました。(I8adc7)。
  • DragAndDropModifierNode ファクトリの onDragAndDropStart の名前が acceptDragAndDropTransfer に変更されました。acceptsDragAndDropTransferdragAndDropTarget 修飾子に追加され、ドラッグ&ドロップ セッションから受け入れられるようになりました。ドラッグ&ドロップ セッションに関心がある場合、このラムダは実行可能な DragAndDropTarget を返します。ドラッグ イベントを処理する他のラムダはこれに置き換えられました。ドラッグ&ドロップ セッションから受け取る DragAndDropTarget ファクトリ関数が追加されました(Iebf3a
  • DragAndDropModifierNode.drag 型としての DragAndDropInfo を削除し、transferData、装飾サイズ、ドラッグ装飾 DrawScope ラムダのパラメータを受け取るようになりました

    DragAndDropTarget は、単一の抽象メソッドではなく、特定のドラッグ&ドロップ イベント用のメソッドを備えています。

    DragAndDropModifierNode のファクトリ関数の onDragAndDropEvent の名前を onDragAndDropStart に変更し、提供された DragAndDropTarget が特定のドラッグ&ドロップ セッションでのみ有効であることを明確にしました。

    DragAndDropEventType が削除されました。(I645b1

  • PlatformTextInputModifierNode.runTextInputSession の名前を establishTextInputSession に変更しました。(I03cd0)。

  • 走査可能なノードの API 名を改善してわかりやすくしました。(Ia4474)。

  • OriginalTextTextSubstitution に置き換えます。(Ifa5a8)。

  • PlatformTextInputModifierNode.textInputSession の名前を runTextInputSession に変更しました(Ie9c6b)。

  • 後で再利用できるように保持されている SubcomposeLayout の子(およびそれに基づく LazyColumn などのレイアウト)は、無効と見なされます。このようなノードをテストするための新しい assertIsDeactivated() テスト API が導入されました。残りのテスト API は、無効化されたノードをデフォルトで除外します。(I2ef84b/187188981)。

  • FocusDirection.InFocusDirection.Out を削除しました。代わりに FocusDirection.EnterFocusDirection.Exit を使用します。(I2f660

  • マテリアルの SwipeToReveal API(カードとチップ用)は、データクラス ベースのインスタンスではなく、スロットベースの API(Compose が推奨)を使用してスロットを作成するようになりました。これは互換性を破る変更です。新しい API の使用方法の例については、デモとサンプルコードをご覧ください。(Ia8943)。

  • FontStyle(int) コンストラクタは非推奨となりました。代わりに FontStyle.Normal または FontStyle.Italic を使用してください。(I66610)。

  • FontScalable インターフェースの名前を FontScaling に変更しました(Ie804a)。

バグの修正

  • テキスト エディタがフォーカスされていない場合、SoftwareKeyboardController.show() はソフトウェア キーボードを表示しなくなります。(I2165ab/301477279)。
  • 同じ Compose ビューで Down イベントを受け取っていないキーのハードウェア キーの Up イベントが無視されるようになりました。(Ib37b4b/305518328)。
  • ArcLine のスイープ グラデーションに対するレンダラのサポートを追加。(I4d5bb)。
  • PageSize.Fixed のイコールとハッシュコードを実装します。(Ie3edeb/300134276)。
  • ウィンドウ インセットの変更に伴うバイナリ互換性の問題を修正(Iee695
  • マイクロベンチマークで、Material3 チップ/Button のマテリアル コアレイヤを削除することでパフォーマンスが向上しました。(I55555)。
  • Compose テストに effectContext として渡された TestDispatcher が、テストクロックとフレームクロックの作成に使用されるようになりました。(Ia7178)。

バージョン 1.6.0-alpha08

2023 年 10 月 18 日

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

API の変更

  • Modifier.dragAndDrawSource では onDrawDragShadow ラムダの名前が drawDragDecoration に、DragAndDropInfo では size パラメータの名前が dragDecorationSize に変更されました。(Id0e30b/303904810)。
  • SemanticsNodeInteraction.isDisplayed()SemanticsNodeInteraction.isNotDisplayed() を導入し、一致したノードが表示されるかどうかをアサートせずに確認します。(I2c196b/302100809)。
  • null の代わりに、ParagraphTextStyleTextAlignTextDirectionHyphensLineBreak フィールドに特別な Unspecified 値を導入しました。これらのクラスはインライン クラスであるため、null 値許容を未指定に置き換えることで、プリミティブ型のボックス化を回避できます。TextStyle と Paragraph スタイルのコンストラクタ、ゲッター、その他のメソッドが、上記のパラメータを非 null 型として受け入れるように更新されました。(I4197eb/299490814)。
  • XML から GoogleFont を読み取るための GoogleFont オーバーロードを追加します。(If8f59)。
  • LoremIpsum PreviewParameterProvider をオープンクラスにしました。(I41bf5b/266918816b/300116360)。

バグの修正

  • FontFamilyResolver がキャッシュ管理コルーチンに Dispatchers.Main を使用するようになりました。(Ie8dd9)。
  • AndroidViewBinding は、(以前に使用していた commit ではなく)commitNow を使用して、onRelease の一部として FragmentContainerView をレイアウトに含めることでインフレートされた Fragment インスタンスを同期的に削除するようになりました。これにより、変更時にコンポジションを置き換えることで、ライブ編集のメソッドに関する問題を修正しました。(I58fbf)。

バージョン 1.6.0-alpha07

2023 年 10 月 4 日

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

API の変更

  • カスタム テキスト エディタのテストを作成するための PlatformTextInputMethodTestOverride を導入しました。(Id159b)。
  • ドラッグ&ドロップ セッションを開始するための dragAndDropSource 修飾子と、ドラッグ&ドロップ セッションから受信するための dragAndDropTarget 修飾子が追加されました。(Ib7828b/286038936)。
  • 割り当てを回避する ColorList コレクションと ColorSet コレクションを追加しました。(I744bd)。
  • 非線形フォント スケーリングを無効にする DisableNonLinearFontScalingInCompose 一時フラグを追加しました。クリーンアップに時間が必要な場合は、テストで DisableNonLinearFontScalingInCompose = true を設定します。このフラグは Compose 1.6.0-beta01 で削除されます。(Ic9486)。

バグの修正

  • XML ベクター型ドローアブルの解析を最適化しました。(Ibb015)。

バージョン 1.6.0-alpha06

2023 年 9 月 20 日

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

API の変更

  • マテリアル アイコンの追加最適化。(I3e08d)。
  • 修飾子ツリーを上下に走査して類似のノードを見つける機能が追加されました。(I2d234)。
  • onRestoreFailed() コールバックを focusRestorer() 修飾子に追加しました(Ie1d43
  • ColorIntFloatRangeIntRangeSize などを指定するためのさまざまなグラフィック API に、androidx アノテーションを追加しました。(Id65c8b/290950582)。
  • showSystemUi=truePreviewScreenSizes 定義に追加(Ib61d3

動作の変更

  • Compose は、読みやすさとアクセシビリティを向上させるため、非線形フォント スケーリングを使用するようになりました。フォントのスケーリング >システム設定で 100% 変更した場合、小さいテキストのサイズは大きくなりますが、すでに大きいテキストのサイズは少し大きくなります。また、SP で定義された行の高さは、100% のスケールで意図した高さに比例するように自動的に調整されます。詳しくは、フォント スケーリングのベスト プラクティスをご覧ください。(I11518)。

バージョン 1.6.0-alpha05

2023 年 9 月 6 日

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

API の変更

  • AndroidComposeViewAccessibilityDelegateCompat でのコンテンツ キャプチャを有効にする。(Ib2969)。
  • ScrollViewRecyclerView などの View コンポーネントのフリング速度は ViewConfiguration.ScaledMaximumFlingVelocity に制限されています。Compose に独自のバージョンの maximumFlingVelocity が追加され、Draggable に適用されるようになりました。(Ibf974)。
  • プラットフォームのドラッグ&ドロップ API をサポートする初期スキャフォールディングを追加します。(If84ce)。
  • deviceIdRotaryScrollEvent に追加しました(Iba3bf
  • 新しいデバイスを含むように ui-tooling Devices API を更新しました(Ib25b4

バージョン 1.6.0-alpha04

2023 年 8 月 23 日

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

API の変更

  • ReusableComposition を無効化し、モニタリングは削除してもノードはそのままにするメソッドを追加しました。無効化されたコンポジションは、setContent を呼び出すことで再度アクティブにできます。(Ib7f31)。
  • サブコンポジションのライフサイクルと再利用を管理する ReusableComposition インターフェースを追加しました(I812d1b/252846775)。
  • Modifier.focusGroup が安定版 API に昇格しました。(I7ffa3)。
  • ColorIntFloatRangeIntRangeSize などを指定するためのさまざまなグラフィック API に、androidx アノテーションを追加しました。(I70487b/290950582)。
  • パラメータの検査可能性を高める具体的なサブクラス タイプを持つように ColorFilter API を更新しました。(I5fe29)。
  • UI プレビューに使用できる有効な Wear デバイスをリストする wear-tooling-preview ライブラリを導入しました(Ib036e)。
  • Density インターフェースのフォント スケーリング部分を処理するために、FontScalable インターフェースを作成しました。(I2cf3f)。

バージョン 1.6.0-alpha03

2023 年 8 月 9 日

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

API の変更

  • 新しいタイプの開始/終了遷移で、開始時と終了時にアニメーション コンテナのサイズに応じてコンテンツがスケーリングされる終了アニメーションLookaheadScope コンポーズ可能な関数とインターフェースが安定版になりました。(Ifb2ce)。
  • privateImeOptions の構成のサポートを追加しました(Idb772)。

バグの修正

  • PopupPositionProvider.calculatePosition は、計算で読み取られた状態が変更されると、ポップアップの位置を自動的に更新するようになりました。(I676a1b/292257547)。
  • readOnly が true のときにキーボードが表示され、編集可能になるテキスト フィールドを修正しました。また、フォーカス中に readOnly が true から false に変更されるとキーボードが表示されない問題を修正しました。(I34a19b/246909589)。
  • UI テストでのグローバル アサーションの適用を拡張しました。(I1f90d)。

バージョン 1.6.0-alpha02

2023 年 7 月 26 日

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

API の変更

  • Composition の実装者が実装できるサービス ロケータ インターフェースを追加しました。これにより、元の Composition へのサービス ルックアップを別のコンポジションに委任する Composition の実装が可能になります。これはディレクトリと呼ぶべきではなく、ランタイムで試験運用版の API を作成できるようにするために使用されます。試験運用版 API は、UI モジュールのように、Composer のラップされたバージョンから見つけることができます。(I296b9)。
  • PlatformTextInput* API の設計を全面的に見直しました。(I6c93ab/274661182b/267235947b/277380808)。
  • SoftwareKeyboardControllerLocalSoftwareKeyboardController は試験運用版ではなくなりました。LocalSoftwareKeyboardController も適切な CompositionLocal になりました。(I4c364)。
  • LookaheadLayoutLookaheadLayoutScope はいくつかのリリースで非推奨となっており、現在は削除されています。代替 API は LookaheadScope で、どのレイアウトでも動作します。(I12ac3)。
  • テストでフォーカスをリクエストするための、より便利で見つけやすい方法である SemanticsNodeInteraction.requestFocus を追加しました。(Ie8722)。
  • 今後のフレームワークのテストで使用するために、グローバル アサーションを登録するための試験運用版の API を追加します。(I12d77)。

バグの修正

  • AndroidViewupdate コールバックの初回呼び出しは、AndroidView を導入するコンポジションが適用されたときに実行されず、ビューがアタッチされるまで延期されるようになりました。これにより、読み取られた状態が作用によってすぐに変更された場合に update コールバックが無効にならないバグが修正されました。(Ie9438b/291094055)。

バージョン 1.6.0-alpha01

2023 年 6 月 21 日

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

新機能

  • LazyList で先読みをサポート。これにより、先読みパスの LazyList がアニメーション(アイテムの配置アニメーション、AnimatedVisibility など)をバイパスし、すべての子の先読みのサイズと位置を計算できるようになります。先読みパスの後、先読みパスに見られるように、LazyList の子は現実に合わせて独立してアニメーション化できます。

動作の変更: Compose の includeFontPadding がデフォルトで false に変更

Compose の includeFontPadding がデフォルトで false(21d806)になりました。

includeFontPadding は、テキスト ベースラインの上下左右に現れる可能性のある文字に対応するために、テキストの最初の行と最後の行の上にパディングを追加するかどうかを制御する従来の属性です。

この Compose バージョンを更新すると、表示するすべてのテキストの最初と最後の行の上にある余分なパディングが削除され、UI でのすべてのテキストのレンダリング方法が変更されます。

UI の要件や使用しているフォントの指標によっては、変更は最小限に抑える必要があります。ただし、次のような阻害要因に遭遇する可能性があります。 - スクリーンショット テストの破損。必要に応じて UI を修正し、ゴールデン イメージを再生成します。 - テキストが少しずれています。カスタムの負のパディングを削除するか、必要に応じてパディングを追加します。

includeFontPadding を有効にするには、テキストごとに PlatformTextStyle を使用します。

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

マテリアル スタイルを設定することで、すべてのテキストで includeFontPadding を有効にできます。パラメータ名は M2 と M3 で異なります。

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

Compose includeFontPadding について詳しくは、デベロッパー向けドキュメントこちらのブログ投稿をご覧ください。

この変更に関連して問題やバグが発生した場合は、Issue Tracker を使用してバグを報告してください。

API の変更

  • InputConnection#requestCursorUpdates をサポート(I0c69b
  • FocusRequester.saveFocusedChildFocusRequester.restoreFocusedChild を追加しました(Ic557eb/272302679b/275157318)。
  • 読み込みに失敗したアセットパスの説明を含むビットマップ アセットを読み込もうとしたときにスローされるスローアブルをラップする ResourceResolutionException 型を追加しました。(I19f44b/230166331b/278424788)。
  • パフォーマンスとメモリ割り当てのアクセシビリティを最適化しました。(Iede48)。
  • テキスト翻訳をサポートするセマンティクス プロパティとアクションを追加しました。(I4a6bc)。
  • 現在の測定パスが先読みパスかどうかを示す、IntrinsincMeasureScope とその実装の新しいプロパティ(MeasureScope など)。(I7a812)。
  • 別の密度/レイアウト方向とサイズを使用して、レンダリングを別のキャンバスにリターゲットする機能を導入するために DrawScope API を更新しました。
  • 密度とレイアウト方向の設定をサポートし、キャンバスを構成できるように DrawContext を更新しました。(Ie1f9bb/225408150)。
  • 文字境界ボックスを計算するための Paragraph#fillBoundingBoxes を追加しました。(If30ee)。
  • 共通の MultiPreviews のセットを追加しました。(Ia5a27

バグの修正

  • カスタム FocusTarget の作成に使用できる FocusTargetModifierNode インターフェースを追加しました。(I9790e)。
  • TextMeasurer コンストラクタの fallback* パラメータの名前を default* に変更しました。(I940a5)。
  • SemanticsPropertyReceiver.performImeAction の名前を onImeAction に、SemanticsActions.PerformImeAction の名前を OnImeAction に変更しました。(I8e841)。
  • ネストされたスクロール(特に NestedScrollConnection)でマウスのスクロールとドラッグを区別するホイールを追加しました。(Ie57e4)。
  • 返されたオブジェクトが元の android.graphics.Paint をラップするため、toComposePaint を置き換える asComposePaint API を追加しました(I22b4c
  • SemanticsProperties.imeAction のサポートを終了し、SemanticsActions.performImeAction の新しいパラメータに置き換えます。(I4a587)。
  • マウスによる選択のサポートを追加しました。タップ操作で選択する場合、単語単位で拡張し、文字単位で縮小します。(Ic0c6cb/180639271)。
  • 境界外のオフセットに対して AssertionError をスローしていた Paragraph メソッドは、MultiParagraph のように IllegalArgumentException をスローするようになりました。(I549d3b/243338896)。

バージョン 1.5

バージョン 1.5.4

2023 年 10 月 18 日

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

バージョン 1.5.3

2023 年 10 月 4 日

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

バグの修正

  • b/301209788TextField では、韓国語の入力にフォーカスして入力する際に、前のコマンドが誤って適用され、文字が失われることがあります。

バージョン 1.5.2

2023 年 9 月 27 日

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

バグの修正

  • ユーザー補助スクロール API がバックグラウンド スレッドからアクセスされたときにクラッシュする回避策を追加しました。
  • アタッチされていないノードがセマンティクス ツリーに追加される問題を修正。

バージョン 1.5.1

2023 年 9 月 6 日

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

バグの修正

  • readOnly が true のときにキーボードが表示され、編集可能になるテキスト フィールドを修正しました。また、フォーカス中に readOnly が true から false に変更されるとキーボードが表示されない問題を修正しました。(I34a19b/246909589)。

バージョン 1.5.0

2023 年 8 月 9 日

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

バージョン 1.5.0-rc01

2023 年 7 月 26 日

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

バグの修正

  • SubcomposeLayoutmovableContentOf() 内で使用されている場合に発生するクラッシュを修正しました。

バージョン 1.5.0-beta03

2023 年 6 月 28 日

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

バグの修正

  • カスタム FocusTarget の作成に使用できる FocusTargetModifierNode インターフェースを追加しました。(Ifb1d6)。
  • usePlatformDefaultWidth=true のときに子ウィンドウのサイズが想定どおりにサイズ変更されない原因となっていた、ダイアログ コンポーザブルとポップアップ コンポーザブルの問題を修正しました。(I112ee)。

バージョン 1.5.0-beta02

2023 年 6 月 7 日

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

API の変更

  • Compose で使用する android.graphics.Paint インスタンスの利用を可能にする asComposePaint API を追加しました。

バグの修正

  • 返されたオブジェクトが元の android.graphics.Paint をラップするため、toComposePaint を置き換える asComposePaint API を追加しました(I22b4c

バージョン 1.5.0-beta01

2023 年 5 月 24 日

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

API の変更

  • 再コンポーズ、カラー アニメーション、AndroidComposeView の割り当てを削除しました(Ib2bfa)。
  • 委任を許可するヘルパー fun CacheDrawModifierNode() を追加しました(Icf8f9
  • MeasureScope からアクセスできる isLookingAhead プロパティを導入し、先読み結果を監視し、必要に応じてメインパスに影響を与えます。(Ibf4c3)。
  • 新しいセマンティクス プロパティ traversalIndexTalkBack 走査でノードを並べ替えるために使用される浮動小数点数です(値が小さいほど前になります)。(I9a81bb/186443263)。
  • Semantics プロパティ isContainer の名前を isTraversalGroup に変更しました(I121f6
  • ColorProducerproduce ではなく operator fun invoke になりました。(I4a9a2
  • 変換/スケーリング/回転の変換をパス オブジェクトに適用する Path Transform API を追加しました。(I23434b/233772232)。
  • ColorProducer のメソッドは produce と呼ばれます。(I78bde)。
  • toFrameworkColorSpace の名前を toAndroidColorSpace に変更しました。(I4f547
  • ColorLambdaColorProducer に変更しました。(I73b1a)。
  • Android と Compose の色空間型を変換する API を導入しました。(Ie7db4b/279979665)。
  • テキストの色を効率的にアニメーション化または設定できるように、BasicText に色パラメータを追加しました。(Iffd88b/246961787)。
  • TextRange.constrain の名前を TextRange.coerceIn に変更しました(I31be2)。
  • 最適化された TextStyle.merge(...) と完全なパラメータ リストを追加しました。(Iad234b/246961787)。
  • BrushDrawStyleTextMotionDrawScope.drawTextParagraph.paint(Brush)MultiParagraph.paint(Brush) を含む多くの Text API が安定しました。(I2f740b/261581564b/261581931b/261561245)。
  • PlatformTextStyle.includeFontPadding のサポートが終了しました。当初はこのフィールドを削除するつもりでしたが、フィードバックでは、デベロッパーがこの構成オプションを必要とすることがわかりました。そのため、このフィールドから非推奨を削除しました(I98e96b/277703184)。
  • パブリック TextRange.constrain メソッドを追加しました。(I97912)。
  • AnnotatedStringUrlAnnotation を、TalkBack などのユーザー補助サービスを介して開けるようになりました。(If4d82b/253292081)。
  • テキスト フィールドの InsertTextAtCursor セマンティクス アクションを追加しました。(I11ed5)。
  • LineHeightStyle.Alignment(topRatio) コンストラクタが安定版 API に昇格しました。(I79c32b/261565383)。
  • TextMeasurer と関連 API は試験運用版ではなくなりました。(I74647b/261581753)。
  • テキスト エディタ ノードで IME アクションを呼び出す PerformImeAction セマンティクス アクションを追加しました。(Ic606fb/269633506)。
  • PlatformTextInput API は Android の試験運用版ではなくなりました。(I668eb)。
  • Enum.valueOf の value パラメータ名が変更されました(Ia9b89
  • 列挙値からスローされる例外を増やしました。(I818fe
  • プラットフォーム API と直接通信するカスタム テキスト入力実装を構築するための新しい低レベルの PlatformTextInputAdapter API を導入しました。(I58df4)。
  • DrawScope.drawTextParagraph.paintMultiParagraph.paint のメソッドに BlendMode パラメータを追加し、Canvas にテキストを描画する際のさまざまなブレンド アルゴリズムをサポートしました。(I57508
  • Font.MaximumAsyncTimeoutFont.MaximumAsyncTimeoutMillis に変更しました。名前の変更のみ。(I07af5
  • @Preview 参照デバイスの DPI 値を更新しました(Id6151b/254528382)。
  • brushalpha のパラメータを BasicText に追加して、テキストブラシのアニメーションや設定を効率的に行えるようにしました。
  • Float、Double、Long、Int、Short のボックスフリーのラムダ型を :ui:ui-unit で定義しました(I6f18db/246961787)。

バグの修正

  • ポインタ速度トラッキングの複数の割り当てを削除しました。(I26bae
  • レイアウトとポインタ入力管理の割り当てを削減しました(I5333a)。
  • ベクターメモリ使用量と最初のフレームのレンダリングを最適化しました(I2f3c6)。
  • Canvas で線やポイントを描画する際の割り当てを削除しました。(I9f535
  • AndroidFont.fontVariationSettings のドキュメントを追加しました。(I7d9e2

外部からの協力

  • Vector API でパフォーマンスを改善し、割り当てを減らしました(I906cb)。

バージョン 1.5.0-alpha04

2023 年 5 月 10 日

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

新機能

  • Modifier.Node 委任の改善 DelegatingNode から他の Modifier.Node インスタンスに委任する機能が強化されました。これを行うには、delegate API と undelegate API を使用します。これまでは、委任ノードのすべての API を委任ノードに明示的に委任する必要がありました。この変更後は、DelegatingNode で明示的にオーバーライドしない限り、ノード インターフェースは暗黙的に委任されます。(67352bc)。

API の変更

  • 委任可能な NestedScroll Modifier.Node である NestedScrollModifierNode を導入しました。(I69513)。
  • onReset パラメータと onRelease パラメータを AndroidViewBinding コンポーザブルに追加し、AndroidView コンポーザブルをミラーリングして、ViewBinding によるビューの再利用のサポートを有効にしました。(I00b1eb/276802519)。
  • Compose Path API を更新し、巻き戻し操作をサポートするようにしました。これにより、頻繁なパス操作とより高速な再利用のユースケースに対応できるようになりました。(I7b797)。
  • 最適化された TextStyle.merge(...) と完全なパラメータ リストを追加しました。(Iad234b/246961787)。
  • BrushDrawStyleTextMotionDrawScope.drawTextParagraph.paint(Brush)MultiParagraph.paint(Brush) を含む多くの Text API が安定しました。(I2f740b/261581564b/261581931b/261561245)。
  • PlatformTextStyle.includeFontPadding のサポートが終了しました。当初はこのフィールドを削除するつもりでしたが、フィードバックでは、デベロッパーがこの構成オプションを必要とすることがわかりました。そのため、このフィールドから非推奨を削除しました(I98e96b/277703184)。

バグの修正

  • Dialog コンポーザブルで作成されていないダイアログ内のテキスト フィールドにキーボードが表示されない回帰を修正しました。(I82551b/262140644)。

バージョン 1.5.0-alpha03

2023 年 4 月 19 日

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

新機能

  • LookaheadScopeSubcomposeLayout の新しいデフォルト動作: 条件付きスロット(TabRowScaffoldBoxWithConstraints など)を持たない SubcomposeLayouts が、先読みアニメーションで適切に機能するようになりました。

API の変更

  • 先読みパスの測定ポリシーを再利用する新しいデフォルトの intermediateMeasurePolicy により、ScaffoldTabRowBoxWithConstraints などの条件付きスロットのない SubcomposeLayout サブタイプがデフォルトで先読みで動作するようになりました。(Id84c8)。
  • Android ウィンドウ用に作成された recomposer は、ON_STOP 通知を受け取ったときに、すべてのコンポジションではなく withFrameNanos への呼び出しのみをブロックするようになりました。つまり、停止したアクティビティに関連付けられているウィンドウは、データ変更に応じて引き続き再コンポーズされますが、アニメーションや他の withFrameNanos の呼び出し元はブロックされます。(Id9e7fb/240975572)。
  • motionEventSpy を Stable に変更します。(Ic5ec4b/261560988)。
  • パブリック TextRange.constrain メソッドを追加しました。(I97912)。
  • この互換性 API を使用して設定 includeFontPadding false を切り替えてテストするようデベロッパーに推奨するよう、PlatformTextStyle.includeFontPadding は非推奨ではなくなりました。(I98e96b/277703184)。

バージョン 1.5.0-alpha02

2023 年 4 月 5 日

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

API の変更

  • 先読みベースのアニメーション中に測定/レイアウト ロジックを処理するために、追加の中間測定ポリシーを使用する新しい SubcomposeLayout API。(I017d3)。
  • PointerInput が遅延になり、Modifier.Node を使用してパフォーマンスが向上しました(動作の軽微な変更についてご確認ください)。(15dab9)。
  • 試験運用版の API をキーイベントで安定版に変更します。(I9c7d8b/261566839b/261567368)。
  • PointerInputChange で試験運用版の API を安定版に変更します。(I1b543b/261560988b/261565762b/261565749)。
  • より複雑な Modifier.Node の実装用に SuspendingPointerInputModifierNode をインスタンス化する方法が追加されています。(Ic4933)。
  • AnnotatedStringUrlAnnotation を、TalkBack などのユーザー補助サービスを介して開けるようになりました。(If4d82b/253292081)。
  • ハードウェア キーをソフト キーボードに送信する前にインターセプトする API を追加しました(I4f4c6b/186800395)。
  • テキスト フィールドの InsertTextAtCursor セマンティクス アクションを追加しました。(I11ed5)。
  • テキスト関連のテスト アクション(performTextInput など)が、フィールドをクリックする代わりに、セマンティクス アクションを使用して直接フォーカスをリクエストするようになります。(I6ed05)。

バグの修正

  • テキストテスト アクションでは、テキスト フィールドを有効にする必要があります。(Iab328)。

バージョン 1.5.0-alpha01

2023 年 3 月 22 日

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

API の変更

  • Modifier.intermediateLayout で明示的な LookaheadScope が不要になりました。intermediateLayout の measure ブロックには、IntermediateMeasureScope がレシーバとして含まれています。このレシーバは、便利な CoroutineScope、LookaheadScope、MeasureScope を提供します。(Ibe2e5
  • LookaheadLayout は、レイアウトではなくなった LookaheadScope に置き換えられました。これにより、LookaheadScope 内の chid コンテンツを親の MeasurePolicy で直接制御できます。(Ibe2e5)。
  • Modifier.Node#coroutineScope を追加し、Modifier.Nodes でコルーチンを起動できるようにしました。(I76ef9)。
  • CompositionLocalConsumerModifierNode インターフェースを実装することで、Modifier.Nodes が CompositionLocals を読み取れるようにします。(Ib44df)。
  • プロパティへの @deprecation クラスの伝播。(I882d1)。

バージョン 1.4

バージョン 1.4.3

2023 年 5 月 3 日

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

バグの修正

  • 特定の修飾子で使用したときに AndroidView が正しくレイアウトされない問題を修正しました。(I4dc77b/274797771)。
  • DropDown のメニューに影響する 2D フォーカス検索のバグを修正しました(b/276811828)。
  • ラムダが初めて呼び出されたときにのみ Enter/exit ブロックを実行する、カスタム フォーカスの Enter/exit プロパティのバグを修正しました(b/277234245)。
  • focusProperties の読み取り中にクラッシュを引き起こすフォーカス システムの回帰を修正しました。(b/271324781b/274897776)。

バージョン 1.4.2

2023 年 4 月 19 日

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

バグの修正

  • AndroidView が修飾子を正しく再利用せず、予期しない動作やクラッシュを引き起こす可能性がある問題を修正しました。(Ib67eeb/275919849)。
  • Dialog コンポーザブル以外で作成されたダイアログ内のテキスト フィールドにキーボードが表示されない回帰を修正しました(I82551b/262140644)。

バージョン 1.4.1

2023 年 4 月 5 日

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

バグの修正

  • ParentDataModifierAndroidView に影響しない問題を修正(b/274797771

バージョン 1.4.0

2023 年 3 月 22 日

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

1.3.0 以降の重要な変更

  • Lazy リストのアイテムを固定できる新しい PinnableContainer を追加し、それらのアイテムが境界の外にスクロールされたときに廃棄されないようにしました。たとえば、Modifier.focusable() はこのメカニズムを使って現在フォーカスのあるアイテムを固定します。(Ib8881b/259274257b/195049010
  • フォーカス システムが新しい試験運用版 Modifier.Node API を使用して書き換えられました。(I7f4d7b/247708726b/255352203b/253043481b/247716483b/254529934b/251840112b/251859987b/257141589
  • Surface に IsContainer セマンティクス プロパティを追加しました。後で変更する際にこのプロパティを使って、サーフェスなど要素の意味論的意味に基づいて移動順序を決定します。(I63379
  • 新しいユーザー補助ロール DropdownList を追加しました。これにより、android.widget.Spinner をフォーカスする際の TalkBack の動作を複製できます。(I177e5b/236159001
  • PlatformTextStyle(emojiSupportMatch) を使用して、必要に応じて単一の Paragraph に対し絵文字サポート処理を無効にできるようになりました。(Ia7100b/139326806
  • Android Compose UI テストが、フレームを(waitForIdle などを介して)アイドル状態にするためフレームの実行時にフレームごとにレイアウトパスを実行するようになりました。この変更は、レイアウト アニメーションの個々のフレームでアサートするテストに影響する可能性があります。(I8ea08b/222093277
  • Text を Static(default) または Animated のいずれかに定義するために試験運用版の TextMotionTextStyle に追加しました。アニメーションを使って Text を拡大縮小、変換、回転する場合は TextMotion.Animated を使用します。(I24dd7

バージョン 1.4.0-rc01

2023 年 3 月 8 日

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

API の変更

  • onReset パラメータを受け入れるコンポーズ可能な関数のオーバーロード AndroidView を追加しました。これにより、コンポジション内のノードが破棄されたときに View インスタンスを再利用でき、互換性のある方法で再利用できます。これはビューの LazyRowsLazyColumns で特に役立ちます。(I3f10db/230099236)。
  • プラットフォーム API と直接通信するカスタム テキスト入力実装を構築するための新しい低レベルの PlatformTextInputAdapter API を導入しました。(I58df4)。

バグの修正

  • BasicTextFieldSetText セマンティクス アクションが、IME アップデートおよびテスト関数(performTextReplacement など)と同じコードパスを使用してテキスト バッファを更新するようになりました。
  • テキストテスト関数 performTextClearanceperformTextReplacementperformTextSelectionSemanticsActions が使用されるようになりました。(I0807db/269633168b/269624358)。

バージョン 1.4.0-beta02

2023 年 2 月 22 日

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

API の変更

  • modifierElementOf() API を削除しました。代わりに ModifierNodeElement から直接拡張してください。(I2256b)。
  • 新しい Modifier.Node.onReset() コールバックを追加しました。これにより、一部のローカルの状態をリセットし、Layout が再利用される場合のケース(LazyColumn のアイテムなど)を適切に処理できるようになりました。FocusTargetModifierNode を修正し、フォーカスされた状態を適切にリセットできるようにしました。(I65495b/265201972
  • DrawScope.drawTextParagraph.paintMultiParagraph.paint のメソッドに BlendMode パラメータを追加し、Canvas にテキストを描画する際のさまざまなブレンド アルゴリズムをサポートしました。(I57508

バグの修正

  • ユーザー補助のフォーカス順序アルゴリズムが改善されました。たとえば、上部バーと下部のバーがそれぞれ最初と最後に読み上げられる頻度が増えました(74e9c5)。

バージョン 1.4.0-beta01

2023 年 2 月 8 日

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

API の変更

  • PinnableContainer.PinnedHandle.unpin()release() に変更しました。(I4667a
  • waitUntilNodeCountwaitUntilAtLeastOneExistswaitUntilExactlyOneExistswaitUntilDoesNotExist を試験運用版 API として ComposeTestRule に追加し、マッチャーとノードの数を受け取るように waitUntil API を拡張しました。詳しくは、ComposeTestRule をご覧ください。(Ifa1b9b/226934294
  • Font.MaximumAsyncTimeoutFont.MaximumAsyncTimeoutMillis に変更しました。(I07af5
  • GoogleFont.Provider.AllFontsListUri を削除し、代わりに ktdoc でリンクしました。(I16f29

バグの修正

  • AndroidFont.fontVariationSettings のドキュメントを追加しました。(I7d9e2

バージョン 1.4.0-alpha05

2023 年 1 月 25 日

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

API の変更

  • CoroutineContext パラメータを受け入れる runComposeUiTest 関数と create*ComposeRule 関数に新しい試験運用版のオーバーロードを導入しました。コンテキストは、テスト コンポジションと、そのコンポジション内のすべての LaunchedEffectrememberCoroutineScope() の呼び出しで使用されます(I10614b/265177763
  • 1 次元の速度を追跡する新しい API を追加しました。(If5a82
  • FocusRequester@Stable としてマークされるようになりました。(I580ee
  • usePlatformDefaultWidth パラメータを受け取る DialogProperties コンストラクタから試験運用版のアノテーションを削除しました。(Ic4048
  • パス上の距離に対する位置と接線を計算する機能として、PathMeasure.getPosition()PathMeasure.getTangent() を追加しました。(I3b47c
  • PlatformParagraphStyle に対して誤って公開されたセッターを削除しました。(I07f47
  • インライン関数または非推奨になった非表示関数の型や null 可能性を拡大しました。(I24f91
  • 割り当てがゼロで、アノテーションのクエリを行う AnnotatedString.hasStringAnnotations を追加しました。(I94dfeb/246960758
  • String をテキストとして受け取る TextMeasurer.measure 関数に新しいオーバーロードを追加しました。(I47b2db/242705342
  • TextStyle の LineBreak API と Hyphens API が安定版に移行しました。(Ic1e1d

外部からの協力

  • TextInputSessionTextInputServicenotifyFocusedRect メソッドは、再びサポートされるようになりました(I23a04b/262648050

バージョン 1.4.0-alpha04

2023 年 1 月 11 日

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

新機能

  • Lazy リストのアイテムを固定できる新しい PinnableContainer を追加し、それらのアイテムが境界の外にスクロールされたときに廃棄されないようにしました。たとえば、Modifier.focusable() はこのメカニズムを使って現在フォーカスのあるアイテムを固定します。(Ib8881b/259274257b/195049010
  • フォーカス システムが新しい試験運用版 Modifier.Node API を使用して書き換えられました。(I7f4d7b/247708726b/255352203b/253043481b/247716483b/254529934b/251840112b/251859987b/257141589
  • Surface に IsContainer セマンティクス プロパティを追加しました。後で変更する際にこのプロパティを使って、サーフェスなど要素の意味論的意味に基づいて移動順序を決定します。(I63379
  • 新しいユーザー補助ロール DropdownList を追加しました。これを使って android.widget.Spinner をフォーカスする際に TalkBack's の動作を複製できます。(I177e5b/236159001
  • PlatformTextStyle(emojiSupportMatch) を使用して、必要に応じて単一の Paragraph に対し絵文字サポート処理を無効にできるようになりました。(Ia7100b/139326806
  • Android Compose UI テストが、フレームを(waitForIdle などを介して)アイドル状態にするためフレームの実行時にフレームごとにレイアウトパスを実行するようになりました。この変更は、レイアウト アニメーションの個々のフレームでアサートするテストに影響する可能性があります。(I8ea08b/222093277
  • Text を Static(default) または Animated のいずれかに定義するために試験運用版の TextMotionTextStyle に追加しました。アニメーションを使って Text を拡大縮小、変換、回転する場合は TextMotion.Animated を使用します。(I24dd7

API の変更

  • 他の DrawScope 関数に合わせて drawText 内の maxSize: IntSize 引数を size: Size に置き換えました。size は以前のデフォルト動作を変更しないようデフォルトで Size.Unspecified に設定されます。(Icd27d
  • 非推奨の試験運用版フォント コンストラクタを削除しました。(I8a724b/261435386
  • ui tooling data クラス Group に、グループがインラインのコンポーズ可能な関数呼び出しの対象かどうかを示すフィールド isInline が追加されました。isInlinetrue の場合、呼び出しはインラインのコンポーズ可能な関数の呼び出しです。ただし、インラインの関数情報を生成しないバージョンの Compose Compiler プラグインとコンパイルされるモジュールからのインラインのコンポーズ可能な関数呼び出しでは値が false になることがあります。 (Idb846
  • 試験運用版であったいくつかの API を安定版に移行しました。
  • Rotary Scroll Event API が安定版になりました。(I42ad3b/261561229
  • FontVariation API が安定版になりました。(I8779fb/241016309
  • すべての Font() コンストラクタが安定版 API になりました。(I5948bb/261435386
  • DeviceFontFamilyName が安定版になりました。(I8b640b/261435386
  • variationSettings を含む AndroidFont コンストラクタが安定版 API になり、これを使用して新しい種類のフォント記述子を作成できるようになりました。(I5adccb/261565807
  • createFontFamilyResolver API が安定版になりました。これを使用して、非同期のフォント読み込み中にキャッチされなかった例外をキャッチできます。(Ibb481b/261435386
  • Font.loadingStrategy API が安定版になりました。(I5937cb/261435386
  • GoogleFont API が安定版になりました。(Ic90b0b/261435386
  • TextUnit(float, TextUnitType) が安定版 API になりました。(I90c84b/261561612
  • pluralStringResource が安定版 API になりました。(I09849b/261439703

バージョン 1.4.0-alpha03

2022 年 12 月 7 日

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

API の変更

  • PointerIcon から ExperimentalComposeUiApi を削除しました。(I23af8
  • ページのユーザー補助アクション PageUpPageDownPageLeftPageRight を導入しました。これらは API 29 からのみ利用可能です。(Ida4ab
  • rememberNestedScrollConnection パラメータ ビューをルートビューからホストビューに更新しました。(Ia5200
  • 祖先のスクロール情報をクエリするための Modifier API を追加しました。(I2ba9db/203141462
  • ジェスチャーがスクロール イベントになる可能性がある場合にタップ操作を正しく遅延させるために Clickable で使用します。
  • Scrollable ViewGroup 内で使用する場合に Clickables がリップルを正しく遅延しない問題を修正しました。
  • ジェスチャーがスクロール イベントになる可能性がある場合にタップを正しく遅延するように Drawers と Sheets を更新しました。
  • graphicsLayer が中間バッファに常にレンダリングされることを示すために CompositingStrategy.Always の名前を Offscreen に変更しました。(I47dc1
  • 複数のコンテンツ スロットがあるレイアウトのオーバーロードが安定するようになりました。(I10566b/248294649
  • テストの一環として Perfetto トレース(システム トレース)をキャプチャし、テストの動作とパフォーマンスを検査するための試験運用版の新しい API PerfettoTrace.record {}PerfettoTraceRule を追加しました。(I3ba16
  • Compose ルールを使用した UI テストでは、withFrameNanos コールバック中に再開された継続は、すべてのフレーム コールバックの実行が終了するまでディスパッチされません。これは、正常に実行されている Compose の動作と一致します。ただし、以前の動作に依存するテストは失敗する可能性があります。これは、withFrameNanos または withFrameMillis を直接呼び出して、コールバック内への移動が必要になる可能性のあるそうした関数に渡される、コールバック外のロジックを持つコードにのみ影響があります。アニメーションのテストの変更については、こちらの CL の例をご覧ください。
  • TestMonotonicFrameClock コンストラクタとファクトリ関数に、withFrameNanos コールバックの後、呼び出し元のコルーチンを再開する前にコードを実行するための、オプションの onPerformTraversals: (Long) -> Unit パラメータを追加しました。(Idb413b/254115946b/222093277b/255802670
  • Compose に EmojiCompat を追加しました。(Ibf6f9b/139326806
  • ダイナミック カラーのサポートのために @Preview に新しい壁紙パラメータを追加しました。(I9f512

バグの修正

  • Recomposer が変更の適用を終了した後、スナップショットの適用通知が送信されるようになりました。(Iad6c0b/222093277
  • マルチウィンドウのスクリーンショットのキャプチャを可能にするため captureToImage に変更を導入しました。これは、Compose のポップアップを使用するスクリーンショット テストに役立ちます。(I169c5

依存関係の更新

  • Compose UI と Compose Material は Lifecycle 2.5.1 に依存するようになりました。(I05ab0b/258038814

バージョン 1.4.0-alpha02

2022 年 11 月 9 日

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

API の変更

  • graphicsLayer の現在のサイズを公開するよう GraphicsLayerScope を更新しました。これは、コンポーザブル サイズに応じた graphicsLayer 変換の計算に役立ちます。(If8c43b/181387080
  • graphicsLayer コンテンツのレンダリングに画面外合成レイヤを利用する状況を判断する CompositingStrategy を導入しました。Auto は、アルファが適用された場合(または RenderEffect/Overscroll)にレイヤを内部で利用するデフォルトの動作を維持します。Always は、画面外バッファを常に導入します。ModulateAlpha は画面外バッファの利用を回避し、代わりに graphicsLayer 内の記録された各描画命令を調節します。ModulateAlpha を使用しても、RenderEffect/Overscroll を使用している場合は画面外バッファが利用されます。(I25e82b/256382834
  • invalidateSubtree()Modifier.Node に追加し、レイアウトと描画の階層全体の無効化を可能にしました。(I4bd90
  • rememberNestedScrollInteropConnection を安定版に昇格しました。ルートビューを rememberNestedScrollInteropConnection に渡す機能を導入しました。これにより、カスタムビューは、特に標準以外のビュー(ModalBottomSheetDialog など)で、スクロールの制約に適切に対応できるようになります。(I9e107
  • 以前読み取った値が変更された場合に通知を受ける必要がある Modifier.Node の実装で使用できる ObserverNode インターフェースを追加しました。(I5728bb/247716483
  • Paint に、ネイティブの android.graphics.Paint を受け取る新しいコンストラクタを追加しました。また、既存のネイティブの Paint オブジェクトを Compose Paint に変換する拡張関数 toComposePaint() も追加しました。(Ica91b
  • Android で使用する新しい FontFamily.Resolver.resolveAsTypeface を追加しました。(I8950b
  • コンポーザブルの内部状態を変更するツールを利用できるよう ToolingState を追加しました。(Ie6614
  • 新たに追加されたアニメーションを適切にサポートするようツールをリファクタリングしました。(I8677b
  • material と material3 の Text、TextFieldOutlinedTextFieldminLines パラメータを追加し、行数の点でコンポーネントの最小高さを設定できるようにしました。(I4af1d

バージョン 1.4.0-alpha01

2022 年 10 月 24 日

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

API の変更

  • ジェスチャー検出器の新しいメソッド awaitEachGesture() が追加されました。これは forEachGesture() と同じように動作しますが、ジェスチャーのループは AwaitPointerEventScope 内で完全に動作するため、反復処理間でイベントが失われることはありません。
  • ジェスチャー間でイベントが失われてしまうため、forEachGesture() が非推奨になり、awaitEachGesture() に置き換えられました。(Iffc3fb/251260206
  • androidx でのユーザー補助オブジェクトのリサイクルのサポートを終了しました。最も古いサポート対象のバージョンでも、パフォーマンスの変化はほとんど無視できることがわかりました。(I0a961
  • 枠線付きテキストを描画できるように、DrawStyleTextStyleSpanStyle の試験運用版属性として追加しました。(If24b8b/155421273
  • AnnotatedString.Builderkotlin.text.Appendable が実装されました。(I1a061b/231030444
  • AnnotatedString.BuilderAnnotatedString の部分文字列、交差するスタイルを追加する append(AnnotatedString, start: Int, end: Int) メソッドが追加されました。
  • 枠線付きテキストを描画できる DrawStyle パラメータを Paragraph および MultiParagraph ペイント関数に追加しました。(Ic8102b/155421273

外部からの協力

  • TV デバイスのプレビューへの追加に協力してくださった vighnesh 氏に感謝いたします(Ie15cd

バージョン 1.3

バージョン 1.3.3

2023 年 1 月 11 日

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

バグの修正

  • Activity が Compose View の状態を保存しているときに Android 9 で発生することがあるクラッシュの問題を修正しました。(I0b755b/260322832

バージョン 1.3.2

2022 年 12 月 7 日

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

バグの修正

  • Profobuf 3.21.8 を使用するよう更新しました。これにより、protobuf-javalite:3.19.4(CVE-2022-3171)でセキュリティ通知が回避されます。(b/255545055

バージョン 1.3.1

2022 年 11 月 9 日

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

バージョン 1.3.0

2022 年 10 月 24 日

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

1.2.0 以降の重要な変更

  • 新しい試験運用版 API スイート LookaheadLayout(これまで不可能だったアニメーション動作に対応)
  • 新しい試験運用版 API スイート Modifier.NodeModifier.composed に代わる高パフォーマンス)
  • ウィンドウ インセットのサポートを改善しました。
  • LazyList の D-pad、ハードウェア キーボードのサポートに焦点を当てました。
  • ダイアログとポップアップでサポートされる最大エレベーションが減って 8 dp になりました(カスタマイズされた一部のデザイン システムの互換性を破る動作変更 - beta01 リリースノートの根拠
  • 多くの、互換性を破らない API の軽微な改善
  • 多くのバグの修正とパフォーマンスの改善

バージョン 1.3.0-rc01

2022 年 10 月 5 日

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

API の変更

  • テキストで自動ハイフネーションをサポートする、Hyphens という新しい試験運用版 API を追加しました(Iaa869

バグの修正

  • DeviceFontFamilyName フォントはデフォルトで wghtital のバリエーション設定を構成せず、読み込まれた Typeface にプラットフォーム設定を使用します。(Ia7a6db/246989332
  • 修飾子が再利用されたときに onModifierLocalsUpdated がデフォルト値で呼び出されなかった、LazyColumn のメモリリークを修正しました(b/230168389

バージョン 1.3.0-beta03

2022 年 9 月 21 日

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

API の変更

  • Text の改行をカスタマイズするオプションを追加しました。(I86907
  • 最小幅の制約をサポートするよう、TextMeasurer.measure メソッドの size:IntSize 引数を constraints: Constraints に変更しました。(I37530b/242707525

バグの修正

  • AndroidX アクティビティの BackHandler API が Dialog コンポーザブル内で動作するようになりました。(I35342

バージョン 1.3.0-beta02

2022 年 9 月 7 日

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

API の変更

  • 複数のコンポーズ可能なコンテンツ ラムダのリストを受け入れる、Layout の試験運用版オーバーロードを追加しました。これにより、異なるコンテンツ ラムダに挿入される測定可能な要素を異なる方法で処理できます。(Ic1b4e

試験運用版 Focus API に関する変更:

  • FocusDirection.InFocusDirection.Out を非推奨とし、FocusDirection.EnterFocusDirection.Exit に置き換えました。(Ia4262b/183746982
  • FocusManager.moveFocus(Enter)FocusManager.moveFocus(Exit) のカスタム動作を指定するために 2 つの新しいフォーカス プロパティ enter と exit を追加しました。(I5f3f9b/183746982
  • FocusRequester.Cancel を使用してフォーカスの移動をキャンセルできるようになりました。FocusRequester.Cancel は、フォーカス プロパティ up、down、left、right、next、previous、start、end、enter、exit のいずれでも使用できます。(Ib300f

バージョン 1.3.0-beta01

2022 年 8 月 24 日

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

修飾子ノードのリファクタリング

Modifier/Modifier.Element インスタンスを処理して LayoutNodes での動作を調整するレイヤが、大幅にリファクタリングされました。現状では、このリファクタリングは、Compose の多くの修飾子のいずれについても公開 API には影響していないため、実装のみの変更ともいえます。それでもこの変更は、さまざまな理由から重要なものとなっています。(Ie4313

変更の概要

追加された試験運用版の Modifier.Node API で可能となる抽象化により、レイアウト ノードのライフサイクルで保持されるインスタンス、そのインスタンスを生成した対応する Modifier.Element の使用ごとやレイアウト ノードごとに割り当てられるインスタンスで、状態を維持できます。

大まかに言うと、この抽象化は、Modifier.composed API の仕組みに依存せずにステートフル修飾子を生成する代替メカニズムとなります。

リスク

この変更は、以前のリリースと厳密にバイナリ互換性があり、目に見える動作に関して実用的かつ妥当な範囲で下位互換性を持つことを目的としています。とは言え、このリファクタリングが影響していない Compose のサブシステムはほとんどないため、Google のテストで把握できていない部分や、まだ検出や修正がされていないような形で、動作に変化が生じている可能性があります。

このリリースにアップグレードする際は、十分にご注意ください。なんらかの不具合が生じたと思われる場合には、Google までお知らせください。

試験運用版の API

さまざまな試験運用版の API が追加されました。いずれも「修飾子ノード」という新しいコンセプトに関連するものです。Modifier.Node は下記の結果として作成されます。

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

互換性を破る動作変更

ダイアログとポップアップでサポートされる最大エレベーションが減って 8 dp になりました。

Compose のダイアログとポップアップに指定できるエレベーションの最大値が、30 dp から 8 dp に引き下げられました。この変更は、マテリアルと UI のカスタム ダイアログとカスタム ポップアップの両方に影響します。この変更の目的は、Android S より前のバージョンにおけるユーザー補助機能のバグを軽減し、各ウィンドウ内でユーザー補助サービスによりダイアログ内やポップアップ内のコンテンツを操作できるようにすることです。

この変更による影響が生じるのは、ダイアログやポップアップのカスタム実装を作成する際にエレベーションを 8 dp より高く設定する場合に限られます。ダイアログやポップアップのエレベーションを下げることを検討してください。この新しい動作を無効にする必要がある場合は、ご希望のエレベーションを設定して独自のダイアログやポップアップをフォークすることを考えてみてください。こうした方法は、ユーザー補助機能に悪影響を及ぼす可能性があるため、おすすめしません。ダイアログやポップアップの下部は、デベロッパーの責任により、ユーザー補助サービスで操作や読み取りができるようにする必要があります。

API の変更

  • 構成変更時に painterResource が更新されない問題を修正しました。(I58e73b/228862715
  • rememberTextMeasurerFontFamily.ResolverDensityLayoutDirection のパラメータを取ることはなくなりました。これらのパラメータにカスタム値を指定するには、TextMeasurer コンストラクタを使用してください。(Ia1da3
  • DialogProperties.decorFitsSystemWindows プロパティが追加されたことで、ダイアログに WindowInsets が使用できるようになりました。(I57742b/229378542
  • バイナリ互換性を維持するため、フォント コンストラクタを元の Kotlin ファイルに戻しました。前回の安定版リリースからの変更はありません。(Ieb2f3
  • equals の定義から不要な演算子を削除しました。これによる影響はありません。(I6c309
  • FontVariation.Setting は、今後の API でのクランプを可能にするためのシール インターフェースです。(I11021b/143703328
  • SlotTree.ktCompositionGroup.findParameters を追加しました。これにより、ツールを使って、スロット テーブル全体を解析しなくても CompositionGroup のパラメータを取得できます。(I124fe

バージョン 1.3.0-alpha03

2022 年 8 月 10 日

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

API の変更

  • LayoutCoordinates.findRootCoordinates() が公開されました。(I7fa37b/204723384
  • PlacementScopeLayoutCoordinates を取得するための試験運用版 API を追加しました。これを利用して、デベロッパーは現在のレイアウトで位置を基準にどこに子を配置したらよいかを把握できます。(I5482bb/238632578
  • LayoutCoordinates 間の行列変換を取得するための LayoutCoordinates.transformFrom を追加しました。(Ic5ab1b/238632578
  • SemanticsModifier.id が非推奨となり、セマンティクス ID を LayoutInfo.semanticsId に移動しました。(Iac808b/203559524
  • リソース フォントが、フォント バリエーションの設定をサポートするようになりました(API 26 以上)。(I900ddb/143703328
  • DeviceFontFamilyNameFont で可変フォントがサポートされるようになりました。(Ic1279b/143703328
  • フォント コンストラクタが、Android O 以上のデバイスで可変フォントを設定するための FontVariation.Setting のリストを受け入れるようになりました。(I11a9db/143703328
  • 可変フォントを定義、使用するための FontVariation API を追加しました。(I3c40cb/143703328
  • LineHeightStyle.Alignment コンストラクタが公開されました(試験運用版)。(I4bbbeb/235876330
  • Paragraph が expect|actual として Android およびデスクトップで定義されるようになりました。(Id387eb/239962983
  • Interface Paragraph がシールの Interface Paragarph になりました。Paragraph のサブクラス化についてのユースケースはありません。この変更が影響する場合は、お問い合わせになることをおすすめします。(If5247b/239962983
  • PlatformTextStyle および LineHeightStyle から試験運用版アノテーションを削除しました。(I64bef
  • TextInputService.show|hideSoftwareKeyboard が非推奨となりました。代わりに、アプリコードでは SoftwareKeyboardController、IME 管理コードでは TextInputSession を使用してください。(I14e4cb/183448615
  • 既存のアニメーション タイプ用の新しい API を追加しました。(I26179

バグの修正

  • SDK 33 以降で POST_NOTIFICATIONS 権限を付与する必要がある API に @RequiresPermission を追加しました。(Ie542eb/238790278

バージョン 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.1

2022 年 8 月 10 日

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

バグの修正

  • インスペクタの null ポインタを修正しました。(b/237987764
  • インスペクタでの記憶時のクラスキャスト例外を修正しました。(b/235526153

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

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

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

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

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 と boundsInParent のプロパティの代わりに、関数を使用してください(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.dragGestureFilter が非推奨になりました。代わりに 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
  • ComposeContentTestRule を導入しました。これは ComposeTestRule を拡張して setContentComposeTestRule から削除済み)を定義するものです。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

  • RememberObserver が CompositionLifecycleObserver に置き換わり、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 と ScrollableRow が非推奨になりました。スクロールが必要な大きいコンテンツの場合、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 が削除されました: Modifier.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 が foundation に追加されました。これを使用して、適切なセマンティクスとユーザー補助機能を備えたフォーカス可能な動作をコンポーネントに追加できます。(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 に置き換えられました。(I4257db/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