Compose UI
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(すべての Compose パッケージについては、API リファレンス ドキュメントをご覧ください)
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2024 年 8 月 7 日 | 1.6.8 | - | 1.7.0-beta07 | - |
構造
Compose は、androidx
内の 7 つの Maven Group ID を組み合わせたものです。各グループにはそれぞれの目的に応じて Compose の機能のサブセットが含まれており、それぞれに固有のリリースノートがあります。
次の表に、各グループの説明と、それぞれのリリースノートのリンクを示します。
グループ | 説明 |
---|---|
compose.animation | Jetpack 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.runtime | Compose のプログラミング モデルと状態管理の基本ビルディング ブロックと、Compose コンパイラ プラグインがターゲットとするコアランタイム。 |
compose.ui | レイアウト、描画、入力などのデバイス操作に必要な Compose UI の基本コンポーネント。 |
依存関係の宣言
Compose への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.7
バージョン 1.7.0-beta07
2024 年 8 月 7 日
androidx.compose.ui:ui-*:1.7.0-beta07
がリリースされました。バージョン 1.7.0-beta07 に含まれる commit については、こちらをご覧ください。
バグの修正
- テキスト入力関連の
SemanticsNodeInteraction
関数performTextReplacement
、performTextInput
、performTextClearance
が、読み取り専用の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
を valisEditable
に変更しました。このプロパティはブール値になり、常にテキスト フィールドで指定されます。(I8acd8)。- ユーザー補助ベンチマーク パラメータの名前を変更。(I3d440)。
- リンクのスタイルを設定するための API を更新しました。
TextLinkStyles
がLinkAnnotation
コンストラクタと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.hasEqualsAnnotations
はhasEqualAnnotations
になりました。(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
がグラフィック レイヤ内で監視されるようになりました。そのため、内部の状態値を読み取ると、状態が変化したときに無効化されるため、シェイプ アニメーションのパフォーマンスが向上します。(Id1629、b/326070216)。 isPositionedByParentWithDirectManipulation
の名前をintroducesFrameOfReference
に変更しました現在は逆効果になっています。つまり、デフォルトでは、ほとんどのLayoutCoordinates
が参照フレームを導入し、直接操作下に配置された場合にのみ、このプロパティは false になります。参照の枠組みになるものだけを使用して位置をクエリするには、positionInLocalFrameOfReference(...)
を使用します。または、LookaheadScope
からpositionInLocalLookaheadFrameOfReference
します。(Ifc5f7)。LookaheadScope
API が安定版になりました。(I21507)- API カウンシルのフィードバックに従って
getScrollViewportLength
のアクション ラムダを変更。(Ibc74a)。 - int ではなく float パラメータを使用するように
GraphicsLayer
Outline API を更新しました。UnsetOffset/UnsetSize IntSize
の標識値を削除し、浮動小数点数ベースのオフセットとサイズのインライン クラスの既存の未指定定数に置き換えました(I2fb03、b/333863462)。 - テスト中にマウス入力を注入する際、
MouseInjectionScope.click()
、MouseInjectionScope.doubleClick()
、MouseInjectionScope.tripleClick()
、MouseInjectionScope.longClick()
がbutton: MouseButton
パラメータを受け入れるようになり、より普遍的に適用できるようになりました。すべてのメソッドのデフォルト値はMouseButton.Primary
です。(I31a23、b/190493367、b/261439695)。 LinkInteractionListener
内でonClicked
の名前をonClick
に変更しました。(Iaa35c)。TextInclusionStrategy.isInside
をisIncluded
に変更しました。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
をテキスト コンポーザブルに渡します。(I34d4b、b/323346994)。- 手書き入力ジェスチャー用の
ViewConfiguration.HandwritingGestureLineMargin
を導入しました。BasicTextField
のJoinOrSplit
ジェスチャーをサポートします。(Ie6e13、b/325660505) FocusProperties.enter
とFocusProperties.exit
は試験運用版ではなくなりました。FocusDirection.Enter
とFocusDirection.Exit
は試験運用版ではなくなりました。FocusRequester.Cancel
は試験運用版ではなくなりました(I461a1、b/261564106)。- レイアウト座標をクエリするときに、
excludeDirectManipulationOffset
引数を使用して、Placeable.PlacementScope.withDirectManipulationPlacement
を使用して子を配置した親 Layout によって設定されたオフセットを除外できるようになりました。同様に、子の位置を頻繁に変更するレイアウトで、withDirectManipulationPlacement
(デフォルトで実装されているスクロールなど)を使用して子を配置するようになりました。これにより、approachLayout
ベースのアニメーションがより直感的になり、アニメーション化するオフセットと、アプローチのアニメーション化を決定する際に直接適用するものを区別できるようになりました。(I60ec7)。 - 長いスクリーンショットの機能フラグは削除されました。(I28648、b/329128246)。
LazyColumn
で、長いスクリーンショットで固定ヘッダーが正しくレンダリングされるようになりました。(I8d239、b/329296635)。NestedScroll
ソースのドラッグとフリングは、アニメーション(副作用)やマウスホイールとキーボード(UserInput
)を含むこれらのソースの拡張定義に対応するために、UserInput
とSideEffect
に置き換えられます。(I40579)。ApproachLayoutModifierNode
とModifier.approachLayout
が安定版になり、古いisMeasurementApproachComplete()
とisPlacementApproachComplete()
をそれぞれ新しいisMeasurementApproachInProgress()
とisPlacementApproachInProgress()
に置き換えました。- サポートが終了した
intermediateLayout
修飾子を削除しました。(I3e91c)。 GraphicsLayer#buildLayer
の名前を record に変更して、RenderNode
や Picture などの Displaylist ベースの API の begin/endRecording メソッドをミラーリングします。rememberObserver
を利用するようにrememberGraphicsLayer
を更新しました。(I312c1、b/288494724、b/330758155)。UrlAnnotation
は非推奨となりました。代わりにLinkAnnotation.Url
を使用してください。マテリアル テーマ設定を使用している場合は、TextDefaults
オブジェクトを使用して、マテリアル テーマ設定を適用してアノテーションを作成します(I8d180、b/323346545)。- テキストリンクに、通常のスタイル設定に加えて、押された状態のスタイル設定オプションが追加され、カーソルを合わせてフォーカスされるようになりました(I5f864、b/139312671)。
String.parseAsHtml
の名前をAnnotatedString.Companion.fromHtml
に変更しました。(I43dcd)。- スタイル設定引数(
linkStyle
、focusedLinkStyle
、hoveredLinkStyle
)とリンク操作リスナーをparseAsHtml
メソッドに追加しました。<a>
タグで HTML タグ付きの文字列を解析する場合、メソッドはそのようなタグごとにLinkAnnotation.Url
を作成し、スタイル設定オブジェクトとリンク操作リスナーを各アノテーションに渡します。(I7c977)。 LinkAnnotation
が、状態ベースのスタイル設定の引数とLinkInteractionListener
を受け取るようになりました。このアノテーションをAnnotatedString
に追加して、ハイパーリンクを取得します。focusedState
やhoveredState
を渡すことで、リンクがフォーカスされているときやカーソルを合わせたときの視覚的なconfiguration
を定義できます。(I81ce4、b/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
に変換できます。すべてのタグがサポートされているわけではありません。たとえば、箇条書きリストはまだ表示できません。(I84d3d、I30626、b/139326648)。 - 公式の Android API(
ScrollCaptureCallback
)を使用して Compose のスクロール コンテナに長いスクリーンショットに対する試験運用版のサポートを実装しました。この機能は試験運用中であり、現時点ではすべてのケースが正しく処理されるわけではありません。そのため、現在、この機能はデフォルトで無効になっています。オプトインするには、ComposeFeatureFlag_LongScreenshotsEnabled
フラグを true に設定します。(I2b055、b/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
RectF
をComposeRect
に変換するヘルパー メソッド(I39925、b/325660505) - すべての
KeyboardOptions
パラメータがデフォルトで未指定の値になりました。KeyboardOptions.merge
メソッドを追加しました。 KeyboardOptions.autoCorrect
の名前をautoCorrectEnabled
に変更し、null 許容にしました。null は、値が指定されていないことを示します。(Ia8ba0、b/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
スタブを導入しました(I1c3b5、b/288494724)。 - Compose フレームワークを更新して、Owner、
DelegateableNode
、drawWithCache
の修飾子の実装を更新して、GraphicsContext
コンポジションをローカルに公開するとともに、修飾子が破棄されたときにGraphicsLayer
インスタンスを自動的にクリーンアップするスコープ アクセス用のGraphicsContext
へのアクセスを公開するようにします。(I64a2f、b/288494724)。 - 低レベルの IME 関連のテストやその他の低レベルの IME ユースケースの作成に役立つ
InterceptPlatformTextInput
を導入しました。PlatformTextInputTestOverride
のサポートが終了しました。(I862ed、b/322680547)。 GraphicsLayer.setOutline(Outline)
拡張関数が追加されました。(Ib81f4)。GraphicsContext
関数コンストラクタを導入し、GraphicsLayer
インスタンスを作成するファクトリを作成します。(Ib98d6、b/288494724)GraphicsLayer
API を公開し、別の場所で描画したり、最終的な結果にさまざまな視覚効果を適用したりするために使用できる描画コマンドをデベロッパーが定義できるようにしました。(I80245、b/288494724)。- 指定された長方形領域で覆われるテキスト範囲を返す
Paragraph#getRangeForRect
を導入します。(Iee516、b/325660505)。 onLinkClicked
引数を指定したBasicText
の試験運用版のオーバーライドを削除しました。ハイパーリンク サポート用の代替 API が今後提供される予定です。(I107d5)。
バグの修正
GraphicsLayer
プロセス/実際の API 定義を追加し、オプションで視覚効果と変換を合成できる描画コマンドのキャプチャと再生をサポートします。GraphicsLayer
インスタンスの作成と管理など、グラフィックの依存関係を含めるためにGraphicsContext
インターフェースを導入しました。(I4a8d6、b/288494724)。- 1D フォーカス検索で、他のビューに埋め込まれた
ComposeView
内でフォーカスが停止する相互運用性の問題を修正しました。(I08fd4)。
外部からの協力
LocalLifecycleOwner
が Compose UI からlifecycle-runtime-compose
に移動され、Compose ベースのヘルパー API を Compose UI の外部で使用できるようになりました。Jake Wharton 氏の貢献に感謝します。(I6c41b、b/328263448)。- すべてのバイアスベースのアライメント サブタイプで、バイアスの浮動小数点プロパティを一貫して公開します。(I69f0f、b/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
が安定版になりました。(I4d92c、b/261436820)DelegatableNode.requireView()
を導入し、修飾子ノードがコンポジション ローカルを読み取らずに現在の AndroidView
を取得できるようにしました。(I40768)。- パスの方向を逆にする新しい API
Path.reverse()
(I36348) hintLocales
をKeyboardOptions
に追加しました。これにより、TextFields
は特定の言語 / 地域の IME にヒントを表示し、使用言語を事前設定できるようになりました。- 基になるプラットフォーム オブジェクトを返す
Locale
のplatformLocale
プロパティを公開します。次に例を示します。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
を導入しました。試験運用版のFlowRow
とFlowColumn
に対する機能強化を発表します。ContextualFlowRow
とContextualFlowColumn
のデビューに伴い、maxLines とオーバーフローのサポートが追加されました。このアップデートは、パフォーマンスが最適化されたコンポーネントを提供するように設計されています。ContextualFlow*
は、小さなmaxLines
構成と動的な +N 表示ボタンを使用する多数のアイテムに最適で、FlowRow
とFlowColumn
はアイテム数 100 未満の少数のアイテムに最適です。重要: 交差軸の最大値に適合するかどうかにかかわらず、すべてのアイテムが構成されるFlowRow
またはFlowColumn
の既存の動作を維持するには、初期化時にoverflow
をFlowRowOverflow.Visible
またはFlowColumnOverflow.Visible
に設定します。これらの新機能の活用例については、ContextualFlowRowSample
とFlowRowSample
をご覧ください。(Ib9135、b/293577082)。- 最大許容文字数をフィルタするテキスト フィールドに設定する
maxTextLength
セマンティクス プロパティを追加します。(I24d9f、b/170648072)。 Modifier.inspectable
ラッパーは非推奨になりました。この API では、必要以上に修飾子の無効化が作成されるため、この API の使用は推奨されていません。修飾子プロパティをツールに公開したい場合は、ModifierNodeElement
にinspectableProperties()
メソッドを実装することをおすすめします。(Ib3236)。WindowManager.LayoutParams
フラグを完全に制御できるPopupProperties
の新しいコンストラクタ。(Ibb33e、b/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
に特定のポイントが含まれているかどうかを確認するために、PathHitTest
とPath.contains(Offset)
を追加しました。(I3b218)。TextLayoutResult
がgetLineBaseline(lineIndex)
メソッドを公開するようになりました。これにより、既存のコンビニエンス プロパティfirstBaseline
とlastBaseline
に加えて、テキストの任意の行のベースラインを読み取ることができます。(Ide4e8、b/237428541)。- 2 つの
AnnotatedStrings
のアノテーションのみを比較するメソッドを追加しました。(I32659)。
バグの修正
SemanticsPropertyReceiver.performImeAction
とSemanticsActions.PerformImeAction
の下位互換性の問題を修正しました。(Id0528、b/322269946)。
バージョン 1.7.0-alpha02
2024 年 2 月 7 日
androidx.compose.ui:ui-*:1.7.0-alpha02
がリリースされました。バージョン 1.7.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
SemanticsPropertyReceiver.performImeAction
とのバイナリ互換性の問題を修正しました。(I65865、b/322269946)。usePlatformDefaultWidth
パラメータを受け取るPopupProperties
コンストラクタが試験運用版ではなくなりました。(I8f8d2)。- タイムアウト メッセージに含める条件の文字列説明を取得する
ComposeTestRule.waitUntil
のオーバーロードを追加しました。(I9413e)。 - 同じ修飾子チェーンに追加されたセマンティクス プロパティを削除する新しいセマンティクス API
unset()
。新しいセマンティクス プロパティisOpaque
。(I8c583、b/317966058、b/246056649)。 PointerInputChange
の公開 API のコピーメソッドからoriginalEventPosition
を削除しました。(I7bead)。
バグの修正
- タブ以外のボタンとラジオボタン以外のボタンを選択すると、クリック可能になる a11y バグを修正しました。(I2181c)。
VelocityTracker
では、ポイントの追加に関する修正がデフォルトで有効になります。この修正は、問題がある場合にVelocityTrackerAddPointsFix
を false に設定することで無効にできます。(Ib3877、b/269487059)。TextStyle
とParagraphStyle
でのバイナリの下位互換性がない問題を修正しました。(I179f0、b/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 の変更
ClipEntry
とClipMetadata
を追加して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.performImeAction
とSemanticsActions.PerformImeAction
の下位互換性の問題を修正しました。(Ie0bb2、b/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)。- ルートが再コンポーズされるたびに
LocalSoftwareKeyboardController
とLocalTextInputService
が新しい値を提供することによって発生する余分なダウンストリーム再コンポーズを修正しました。(I42190、b/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
に変更されました。acceptsDragAndDropTransfer
がdragAndDropTarget
修飾子に追加され、ドラッグ&ドロップ セッションから受け入れられるようになりました。ドラッグ&ドロップ セッションに関心がある場合、このラムダは実行可能なDragAndDropTarget
を返します。ドラッグ イベントを処理する他のラムダはこれに置き換えられました。ドラッグ&ドロップ セッションから受け取るDragAndDropTarget
ファクトリ関数が追加されました(Iebf3a)DragAndDropModifierNode.drag
型としてのDragAndDropInfo
を削除し、transferData
、装飾サイズ、ドラッグ装飾DrawScope
ラムダのパラメータを受け取るようになりましたDragAndDropTarget
は、単一の抽象メソッドではなく、特定のドラッグ&ドロップ イベント用のメソッドを備えています。DragAndDropModifierNode
のファクトリ関数のonDragAndDropEvent
の名前をonDragAndDropStart
に変更し、提供されたDragAndDropTarget
が特定のドラッグ&ドロップ セッションでのみ有効であることを明確にしました。DragAndDropEventType
が削除されました。(I645b1)PlatformTextInputModifierNode.runTextInputSession
の名前をestablishTextInputSession
に変更しました。(I03cd0)。走査可能なノードの API 名を改善してわかりやすくしました。(Ia4474)。
OriginalText
をTextSubstitution
に置き換えます。(Ifa5a8)。PlatformTextInputModifierNode.textInputSession
の名前をrunTextInputSession
に変更しました(Ie9c6b)。後で再利用できるように保持されている
SubcomposeLayout
の子(およびそれに基づくLazyColumn
のようなレイアウト)は、無効と見なされます。このようなノードをテストするための新しいassertIsDeactivated()
テスト API が導入されました。残りのテスト API は、無効化されたノードをデフォルトで除外します。(I2ef84、b/187188981)。FocusDirection.In
とFocusDirection.Out
を削除しました。代わりにFocusDirection.Enter
とFocusDirection.Exit
を使用します。(I2f660)マテリアルの
SwipeToReveal
API(カードとチップ用)は、データクラス ベースのインスタンスではなく、スロットベースの API(Compose が推奨)を使用してスロットを作成するようになりました。これは互換性を破る変更です。新しい API の使用方法については、デモとサンプルコードをご覧ください。(Ia8943)。FontStyle(int)
コンストラクタは非推奨となりました。代わりにFontStyle.Normal
またはFontStyle.Italic
を使用してください。(I66610)。FontScalable
インターフェースの名前をFontScaling
に変更しました(Ie804a)。
バグの修正
- テキスト エディタがフォーカスされていない場合、
SoftwareKeyboardController.show()
はソフトウェア キーボードを表示しなくなります。(I2165a、b/301477279)。 - 同じ Compose ビューで Down イベントを受け取っていないキーのハードウェア キーの Up イベントが無視されるようになりました。(Ib37b4、b/305518328)。
ArcLine
のスイープ グラデーションに対するレンダラのサポートを追加。(I4d5bb)。PageSize.Fixed
のイコールとハッシュコードを実装します。(Ie3ede、b/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
に変更されました。(Id0e30、b/303904810)。SemanticsNodeInteraction.isDisplayed()
とSemanticsNodeInteraction.isNotDisplayed()
を導入し、一致したノードが表示されるかどうかをアサートせずに確認します。(I2c196、b/302100809)。null
の代わりに、ParagraphTextStyle
のTextAlign
、TextDirection
、Hyphens
、LineBreak
フィールドに特別なUnspecified
値を導入しました。これらのクラスはインライン クラスであるため、null 値許容を未指定に置き換えることで、プリミティブ型のボックス化を回避できます。TextStyle
と Paragraph スタイルのコンストラクタ、ゲッター、その他のメソッドが、上記のパラメータを非 null 型として受け入れるように更新されました。(I4197e、b/299490814)。- XML から
GoogleFont
を読み取るためのGoogleFont
オーバーロードを追加します。(If8f59)。 LoremIpsum
PreviewParameterProvider
をオープンクラスにしました。(I41bf5、b/266918816、b/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
修飾子が追加されました。(Ib7828、b/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)ColorInt
、FloatRange
、IntRange
、Size
などを指定するためのさまざまなグラフィック API に、androidx アノテーションを追加しました。(Id65c8、b/290950582)。showSystemUi=true
をPreviewScreenSizes
定義に追加(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)。ScrollView
やRecyclerView
などの View コンポーネントのフリング速度はViewConfiguration.ScaledMaximumFlingVelocity
に制限されています。Compose に独自のバージョンのmaximumFlingVelocity
が追加され、Draggable
に適用されるようになりました。(Ibf974)。- プラットフォームのドラッグ&ドロップ API をサポートする初期スキャフォールディングを追加します。(If84ce)。
deviceId
をRotaryScrollEvent
に追加しました(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
インターフェースを追加しました(I812d1、b/252846775)。 Modifier.focusGroup
が安定版 API に昇格しました。(I7ffa3)。ColorInt
、FloatRange
、IntRange
、Size
などを指定するためのさまざまなグラフィック API に、androidx アノテーションを追加しました。(I70487、b/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
は、計算で読み取られた状態が変更されると、ポップアップの位置を自動的に更新するようになりました。(I676a1、b/292257547)。readOnly
が true のときにキーボードが表示され、編集可能になるテキスト フィールドを修正しました。また、フォーカス中にreadOnly
が true から false に変更されるとキーボードが表示されない問題を修正しました。(I34a19、b/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 の設計を全面的に見直しました。(I6c93a、b/274661182、b/267235947、b/277380808)。SoftwareKeyboardController
とLocalSoftwareKeyboardController
は試験運用版ではなくなりました。LocalSoftwareKeyboardController
も適切なCompositionLocal
になりました。(I4c364)。LookaheadLayout
とLookaheadLayoutScope
はいくつかのリリースで非推奨となっており、現在は削除されています。代替 API はLookaheadScope
で、どのレイアウトでも動作します。(I12ac3)。- テストでフォーカスをリクエストするための、より便利で見つけやすい方法である
SemanticsNodeInteraction.requestFocus
を追加しました。(Ie8722)。 - 今後のフレームワークのテストで使用するために、グローバル アサーションを登録するための試験運用版の API を追加します。(I12d77)。
バグの修正
AndroidView
のupdate
コールバックの初回呼び出しは、AndroidView
を導入するコンポジションが適用されたときに実行されず、ビューがアタッチされるまで延期されるようになりました。これにより、読み取られた状態が作用によってすぐに変更された場合にupdate
コールバックが無効にならないバグが修正されました。(Ie9438、b/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.saveFocusedChild
とFocusRequester.restoreFocusedChild
を追加しました(Ic557e、b/272302679、b/275157318)。- 読み込みに失敗したアセットパスの説明を含むビットマップ アセットを読み込もうとしたときにスローされるスローアブルをラップする
ResourceResolutionException
型を追加しました。(I19f44、b/230166331、b/278424788)。 - パフォーマンスとメモリ割り当てのアクセシビリティを最適化しました。(Iede48)。
- テキスト翻訳をサポートするセマンティクス プロパティとアクションを追加しました。(I4a6bc)。
- 現在の測定パスが先読みパスかどうかを示す、
IntrinsincMeasureScope
とその実装の新しいプロパティ(MeasureScope
など)。(I7a812)。 - 別の密度/レイアウト方向とサイズを使用して、レンダリングを別のキャンバスにリターゲットする機能を導入するために
DrawScope
API を更新しました。 - 密度とレイアウト方向の設定をサポートし、キャンバスを構成できるように
DrawContext
を更新しました。(Ie1f9b、b/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)。- マウスによる選択のサポートを追加しました。タップ操作で選択する場合、単語単位で拡張し、文字単位で縮小します。(Ic0c6c、b/180639271)。
- 境界外のオフセットに対して
AssertionError
をスローしていたParagraph
メソッドは、MultiParagraph
のようにIllegalArgumentException
をスローするようになりました。(I549d3、b/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/301209788)
TextField
では、韓国語の入力にフォーカスして入力する際に、前のコマンドが誤って適用され、文字が失われることがあります。
バージョン 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 に変更されるとキーボードが表示されない問題を修正しました。(I34a19、b/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 については、こちらをご覧ください。
バグの修正
SubcomposeLayout
がmovableContentOf()
内で使用されている場合に発生するクラッシュを修正しました。
バージョン 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)。- 新しいセマンティクス プロパティ
traversalIndex
。TalkBack
走査でノードを並べ替えるために使用される浮動小数点数です(値が小さいほど前になります)。(I9a81b、b/186443263)。 - Semantics プロパティ
isContainer
の名前をisTraversalGroup
に変更しました(I121f6) ColorProducer
がproduce
ではなくoperator fun invoke
になりました。(I4a9a2)- 変換/スケーリング/回転の変換をパス オブジェクトに適用する
Path
Transform API を追加しました。(I23434、b/233772232)。 ColorProducer
のメソッドはproduce
と呼ばれます。(I78bde)。toFrameworkColorSpace
の名前をtoAndroidColorSpace
に変更しました。(I4f547)ColorLambda
をColorProducer
に変更しました。(I73b1a)。- Android と Compose の色空間型を変換する API を導入しました。(Ie7db4、b/279979665)。
- テキストの色を効率的にアニメーション化または設定できるように、
BasicText
に色パラメータを追加しました。(Iffd88、b/246961787)。 TextRange.constrain
の名前をTextRange.coerceIn
に変更しました(I31be2)。- 最適化された
TextStyle.merge(...)
と完全なパラメータ リストを追加しました。(Iad234、b/246961787)。 Brush
、DrawStyle
、TextMotion
、DrawScope.drawText
、Paragraph.paint(Brush)
、MultiParagraph.paint(Brush)
を含む多くの Text API が安定しました。(I2f740、b/261581564、b/261581931、b/261561245)。PlatformTextStyle.includeFontPadding
のサポートが終了しました。当初はこのフィールドを削除するつもりでしたが、フィードバックでは、デベロッパーがこの構成オプションを必要とすることがわかりました。そのため、このフィールドから非推奨を削除しました(I98e96、b/277703184)。- パブリック
TextRange.constrain
メソッドを追加しました。(I97912)。 AnnotatedString
のUrlAnnotation
を、TalkBack
などのユーザー補助サービスを介して開けるようになりました。(If4d82、b/253292081)。- テキスト フィールドの
InsertTextAtCursor
セマンティクス アクションを追加しました。(I11ed5)。 LineHeightStyle.Alignment(topRatio)
コンストラクタが安定版 API に昇格しました。(I79c32、b/261565383)。TextMeasurer
と関連 API は試験運用版ではなくなりました。(I74647、b/261581753)。- テキスト エディタ ノードで IME アクションを呼び出す
PerformImeAction
セマンティクス アクションを追加しました。(Ic606f、b/269633506)。 PlatformTextInput
API は Android の試験運用版ではなくなりました。(I668eb)。Enum.valueOf
の value パラメータ名が変更されました(Ia9b89)- 列挙値からスローされる例外を増やしました。(I818fe)
- プラットフォーム API と直接通信するカスタム テキスト入力実装を構築するための新しい低レベルの
PlatformTextInputAdapter
API を導入しました。(I58df4)。 DrawScope.drawText
、Paragraph.paint
、MultiParagraph.paint
のメソッドにBlendMode
パラメータを追加し、Canvas にテキストを描画する際のさまざまなブレンド アルゴリズムをサポートしました。(I57508)Font.MaximumAsyncTimeout
をFont.MaximumAsyncTimeoutMillis
に変更しました。名前の変更のみ。(I07af5)@Preview
参照デバイスの DPI 値を更新しました(Id6151、b/254528382)。brush
とalpha
のパラメータをBasicText
に追加して、テキストブラシのアニメーションや設定を効率的に行えるようにしました。- Float、Double、Long、Int、Short のボックスフリーのラムダ型を :ui:ui-unit で定義しました(I6f18d、b/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
によるビューの再利用のサポートを有効にしました。(I00b1e、b/276802519)。- Compose Path API を更新し、巻き戻し操作をサポートするようにしました。これにより、頻繁なパス操作とより高速な再利用のユースケースに対応できるようになりました。(I7b797)。
- 最適化された
TextStyle.merge(...)
と完全なパラメータ リストを追加しました。(Iad234、b/246961787)。 Brush
、DrawStyle
、TextMotion
、DrawScope.drawText
、Paragraph.paint(Brush)
、MultiParagraph.paint(Brush)
を含む多くの Text API が安定しました。(I2f740、b/261581564、b/261581931、b/261561245)。PlatformTextStyle.includeFontPadding
のサポートが終了しました。当初はこのフィールドを削除するつもりでしたが、フィードバックでは、デベロッパーがこの構成オプションを必要とすることがわかりました。そのため、このフィールドから非推奨を削除しました(I98e96、b/277703184)。
バグの修正
Dialog
コンポーザブルで作成されていないダイアログ内のテキスト フィールドにキーボードが表示されない回帰を修正しました。(I82551、b/262140644)。
バージョン 1.5.0-alpha03
2023 年 4 月 19 日
androidx.compose.ui:ui-*:1.5.0-alpha03
がリリースされました。バージョン 1.5.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
LookaheadScope
のSubcomposeLayout
の新しいデフォルト動作: 条件付きスロット(TabRow
、Scaffold
、BoxWithConstraints
など)を持たないSubcomposeLayouts
が、先読みアニメーションで適切に機能するようになりました。
API の変更
- 先読みパスの測定ポリシーを再利用する新しいデフォルトの
intermediateMeasurePolicy
により、Scaffold
、TabRow
、BoxWithConstraints
などの条件付きスロットのないSubcomposeLayout
サブタイプがデフォルトで先読みで動作するようになりました。(Id84c8)。 - Android ウィンドウ用に作成された recomposer は、
ON_STOP
通知を受け取ったときに、すべてのコンポジションではなくwithFrameNanos
への呼び出しのみをブロックするようになりました。つまり、停止したアクティビティに関連付けられているウィンドウは、データ変更に応じて引き続き再コンポーズされますが、アニメーションや他のwithFrameNanos
の呼び出し元はブロックされます。(Id9e7f、b/240975572)。 motionEventSpy
を Stable に変更します。(Ic5ec4、b/261560988)。- パブリック
TextRange.constrain
メソッドを追加しました。(I97912)。 - この互換性 API を使用して設定
includeFontPadding
false を切り替えてテストするようデベロッパーに推奨するよう、PlatformTextStyle.includeFontPadding
は非推奨ではなくなりました。(I98e96、b/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 をキーイベントで安定版に変更します。(I9c7d8、b/261566839、b/261567368)。
PointerInputChange
で試験運用版の API を安定版に変更します。(I1b543、b/261560988、b/261565762、b/261565749)。- より複雑な
Modifier.Node
の実装用にSuspendingPointerInputModifierNode
をインスタンス化する方法が追加されました。(Ic4933)。 AnnotatedString
のUrlAnnotation
を、TalkBack
などのユーザー補助サービスを介して開けるようになりました。(If4d82、b/253292081)。- ハードウェア キーをソフト キーボードに送信する前にインターセプトする API を追加しました(I4f4c6、b/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 は、Layout ではなくなった 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
が正しくレイアウトされない問題を修正しました。(I4dc77、b/274797771)。 DropDown
のメニューに影響する 2D フォーカス検索のバグを修正しました(b/276811828)。- ラムダが初めて呼び出されたときにのみ Enter/exit ブロックを実行する、カスタム フォーカスの Enter/exit プロパティのバグを修正しました(b/277234245)。
focusProperties
の読み取り中にクラッシュを引き起こすフォーカス システムの回帰を修正しました。(b/271324781、b/274897776)。
バージョン 1.4.2
2023 年 4 月 19 日
androidx.compose.ui:ui-*:1.4.2
がリリースされました。バージョン 1.4.2 に含まれる commit については、こちらをご覧ください。
バグの修正
AndroidView
が修飾子を正しく再利用せず、予期しない動作やクラッシュを引き起こす可能性がある問題を修正しました。(Ib67ee、b/275919849)。Dialog
コンポーザブル以外で作成されたダイアログ内のテキスト フィールドにキーボードが表示されない回帰を修正しました(I82551、b/262140644)。
バージョン 1.4.1
2023 年 4 月 5 日
androidx.compose.ui:ui-*:1.4.1
がリリースされました。バージョン 1.4.1 に含まれる commit については、こちらをご覧ください。
バグの修正
ParentDataModifier
がAndroidView
に影響しない問題を修正(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()
はこのメカニズムを使って現在フォーカスのあるアイテムを固定します。(Ib8881、b/259274257、b/195049010) - フォーカス システムが新しい試験運用版
Modifier.Node
API を使用して書き換えられました。(I7f4d7、b/247708726、b/255352203、b/253043481、b/247716483、b/254529934、b/251840112、b/251859987、b/257141589) - Surface に
IsContainer
セマンティクス プロパティを追加しました。後で変更する際にこのプロパティを使って、サーフェスなど要素の意味論的意味に基づいて移動順序を決定します。(I63379) - 新しいユーザー補助ロール
DropdownList
を追加しました。これにより、android.widget.Spinner
をフォーカスする際のTalkBack
の動作を複製できます。(I177e5、b/236159001) PlatformTextStyle(emojiSupportMatch)
を使用して、必要に応じて単一の Paragraph に対し絵文字サポート処理を無効にできるようになりました。(Ia7100、b/139326806)- Android Compose UI テストが、フレームを(
waitForIdle
などを介して)アイドル状態にするためフレームの実行時にフレームごとにレイアウトパスを実行するようになりました。この変更は、レイアウト アニメーションの個々のフレームでアサートするテストに影響する可能性があります。(I8ea08、b/222093277) - Text を
Static(default)
または Animated のいずれかに定義するために試験運用版のTextMotion
をTextStyle
に追加しました。アニメーションを使って 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 インスタンスを再利用でき、互換性のある方法で再利用できます。これはビューのLazyRows
とLazyColumns
で特に役立ちます。(I3f10d、b/230099236)。- プラットフォーム API と直接通信するカスタム テキスト入力実装を構築するための新しい低レベルの
PlatformTextInputAdapter
API を導入しました。(I58df4)。
バグの修正
BasicTextField
のSetText
セマンティクス アクションが、IME アップデートおよびテスト関数(performTextReplacement
など)と同じコードパスを使用してテキスト バッファを更新するようになりました。- テキストテスト関数
performTextClearance
、performTextReplacement
、performTextSelection
でSemanticsActions
が使用されるようになりました。(I0807d、b/269633168、b/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
を修正し、フォーカスされた状態を適切にリセットできるようにしました。(I65495、b/265201972) DrawScope.drawText
、Paragraph.paint
、MultiParagraph.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)waitUntilNodeCount
、waitUntilAtLeastOneExists
、waitUntilExactlyOneExists
、waitUntilDoesNotExist
を試験運用版 API としてComposeTestRule
に追加し、マッチャーとノードの数を受け取るようにwaitUntil
API を拡張しました。詳しくは、ComposeTestRule
をご覧ください。(Ifa1b9、b/226934294)Font.MaximumAsyncTimeout
をFont.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
関数に新しい試験運用版のオーバーロードを導入しました。コンテキストは、テスト コンポジションと、そのコンポジション内のすべてのLaunchedEffect
とrememberCoroutineScope()
の呼び出しで使用されます(I10614、b/265177763)- 1 次元の速度を追跡する新しい API を追加しました。(If5a82)
FocusRequester
が@Stable
としてマークされるようになりました。(I580ee)usePlatformDefaultWidth
パラメータを受け取るDialogProperties
コンストラクタから試験運用版のアノテーションを削除しました。(Ic4048)- パス上の距離に対する位置と接線を計算する機能として、
PathMeasure.getPosition()
とPathMeasure.getTangent()
を追加しました。(I3b47c) PlatformParagraphStyle
に対して誤って公開されたセッターを削除しました。(I07f47)- インライン関数または非推奨になった非表示関数の型や null 可能性を拡大しました。(I24f91)
- 割り当てがゼロで、アノテーションのクエリを行う
AnnotatedString.hasStringAnnotations
を追加しました。(I94dfe、b/246960758) String
をテキストとして受け取るTextMeasurer.measure
関数に新しいオーバーロードを追加しました。(I47b2d、b/242705342)- TextStyle の
LineBreak
API とHyphens
API が安定版に移行しました。(Ic1e1d)
外部からの協力
TextInputSession
とTextInputService
のnotifyFocusedRect
メソッドは、再びサポートされるようになりました(I23a04、b/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()
はこのメカニズムを使って現在フォーカスのあるアイテムを固定します。(Ib8881、b/259274257、b/195049010) - フォーカス システムが新しい試験運用版
Modifier.Node
API を使用して書き換えられました。(I7f4d7、b/247708726、b/255352203、b/253043481、b/247716483、b/254529934、b/251840112、b/251859987、b/257141589) - Surface に
IsContainer
セマンティクス プロパティを追加しました。後で変更する際にこのプロパティを使って、サーフェスなど要素の意味論的意味に基づいて移動順序を決定します。(I63379) - 新しいユーザー補助ロール
DropdownList
を追加しました。これを使ってandroid.widget.Spinner
をフォーカスする際にTalkBack's
の動作を複製できます。(I177e5、b/236159001) PlatformTextStyle(emojiSupportMatch)
を使用して、必要に応じて単一の Paragraph に対し絵文字サポート処理を無効にできるようになりました。(Ia7100、b/139326806)- Android Compose UI テストが、フレームを(
waitForIdle
などを介して)アイドル状態にするためフレームの実行時にフレームごとにレイアウトパスを実行するようになりました。この変更は、レイアウト アニメーションの個々のフレームでアサートするテストに影響する可能性があります。(I8ea08、b/222093277) - Text を
Static(default)
または Animated のいずれかに定義するために試験運用版のTextMotion
をTextStyle
に追加しました。アニメーションを使って Text を拡大縮小、変換、回転する場合はTextMotion.Animated
を使用します。(I24dd7)
API の変更
- 他の
DrawScope
関数に合わせてdrawText
内のmaxSize: IntSize
引数をsize: Size
に置き換えました。size
は以前のデフォルト動作を変更しないようデフォルトでSize.Unspecified
に設定されます。(Icd27d) - 非推奨の試験運用版フォント コンストラクタを削除しました。(I8a724、b/261435386)
- ui tooling data クラス
Group
に、グループがインラインのコンポーズ可能な関数呼び出しの対象かどうかを示すフィールドisInline
が追加されました。isInline
がtrue
の場合、呼び出しはインラインのコンポーズ可能な関数の呼び出しです。ただし、インラインの関数情報を生成しないバージョンの Compose Compiler プラグインとコンパイルされるモジュールからのインラインのコンポーズ可能な関数呼び出しでは値が false になることがあります。 (Idb846) - 試験運用版であったいくつかの API を安定版に移行しました。
- Rotary Scroll Event API が安定版になりました。(I42ad3、b/261561229)
FontVariation
API が安定版になりました。(I8779f、b/241016309)- すべての
Font()
コンストラクタが安定版 API になりました。(I5948b、b/261435386) DeviceFontFamilyName
が安定版になりました。(I8b640、b/261435386)variationSettings
を含むAndroidFont
コンストラクタが安定版 API になり、これを使用して新しい種類のフォント記述子を作成できるようになりました。(I5adcc、b/261565807)createFontFamilyResolver
API が安定版になりました。これを使用して、非同期のフォント読み込み中にキャッチされなかった例外をキャッチできます。(Ibb481、b/261435386)Font.loadingStrategy
API が安定版になりました。(I5937c、b/261435386)GoogleFont
API が安定版になりました。(Ic90b0、b/261435386)TextUnit(float, TextUnitType)
が安定版 API になりました。(I90c84、b/261561612)pluralStringResource
が安定版 API になりました。(I09849、b/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)- ページのユーザー補助アクション
PageUp
、PageDown
、PageLeft
、PageRight
を導入しました。これらは API 29 からのみ利用可能です。(Ida4ab) rememberNestedScrollConnection
パラメータ ビューをルートビューからホストビューに更新しました。(Ia5200)- 祖先のスクロール情報をクエリするための Modifier API を追加しました。(I2ba9d、b/203141462)
- ジェスチャーがスクロール イベントになる可能性がある場合にタップ操作を正しく遅延させるために
Clickable
で使用します。 Scrollable ViewGroup
内で使用する場合にClickables
がリップルを正しく遅延しない問題を修正しました。- ジェスチャーがスクロール イベントになる可能性がある場合にタップを正しく遅延するように Drawers と Sheets を更新しました。
graphicsLayer
が中間バッファに常にレンダリングされることを示すためにCompositingStrategy.Always
の名前をOffscreen
に変更しました。(I47dc1)- 複数のコンテンツ スロットがあるレイアウトのオーバーロードが安定するようになりました。(I10566、b/248294649)
- テストの一環として Perfetto トレース(システム トレース)をキャプチャし、テストの動作とパフォーマンスを検査するための試験運用版の新しい API
PerfettoTrace.record {}
とPerfettoTraceRule
を追加しました。(I3ba16) - Compose ルールを使用した UI テストでは、
withFrameNanos
コールバック中に再開された継続は、すべてのフレーム コールバックの実行が終了するまでディスパッチされません。これは、正常に実行されている Compose の動作と一致します。ただし、以前の動作に依存するテストは失敗する可能性があります。これは、withFrameNanos
またはwithFrameMillis
を直接呼び出して、コールバック内への移動が必要になる可能性のあるそうした関数に渡される、コールバック外のロジックを持つコードにのみ影響があります。アニメーションのテストの変更については、こちらの CL の例をご覧ください。 TestMonotonicFrameClock
コンストラクタとファクトリ関数に、withFrameNanos
コールバックの後、呼び出し元のコルーチンを再開する前にコードを実行するための、オプションのonPerformTraversals: (Long) -> Unit
パラメータを追加しました。(Idb413、b/254115946、b/222093277、b/255802670)- Compose に EmojiCompat を追加しました。(Ibf6f9、b/139326806)
- ダイナミック カラーのサポートのために
@Preview
に新しい壁紙パラメータを追加しました。(I9f512)
バグの修正
Recomposer
が変更の適用を終了した後、スナップショットの適用通知が送信されるようになりました。(Iad6c0、b/222093277)- マルチウィンドウのスクリーンショットのキャプチャを可能にするため
captureToImage
に変更を導入しました。これは、Compose のポップアップを使用するスクリーンショット テストに役立ちます。(I169c5)
依存関係の更新
- Compose UI と Compose Material は Lifecycle 2.5.1 に依存するようになりました。(I05ab0、b/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
変換の計算に役立ちます。(If8c43、b/181387080)graphicsLayer
コンテンツのレンダリングに画面外合成レイヤを利用する状況を判断するCompositingStrategy
を導入しました。Auto は、アルファが適用された場合(またはRenderEffect/Overscroll
)にレイヤを内部で利用するデフォルトの動作を維持します。Always は、画面外バッファを常に導入します。ModulateAlpha
は画面外バッファの利用を回避し、代わりにgraphicsLayer
内の記録された各描画命令を調節します。ModulateAlpha
を使用しても、RenderEffect/Overscroll
を使用している場合は画面外バッファが利用されます。(I25e82、b/256382834)invalidateSubtree()
をModifier.Node
に追加し、レイアウトと描画の階層全体の無効化を可能にしました。(I4bd90)rememberNestedScrollInteropConnection
を安定版に昇格しました。ルートビューをrememberNestedScrollInteropConnection
に渡す機能を導入しました。これにより、カスタムビューは、特に標準以外のビュー(ModalBottomSheetDialog
など)で、スクロールの制約に適切に対応できるようになります。(I9e107)- 以前読み取った値が変更された場合に通知を受ける必要がある
Modifier.Node
の実装で使用できるObserverNode
インターフェースを追加しました。(I5728b、b/247716483) Paint
に、ネイティブのandroid.graphics.Paint
を受け取る新しいコンストラクタを追加しました。また、既存のネイティブの Paint オブジェクトを Compose Paint に変換する拡張関数toComposePaint()
も追加しました。(Ica91b)- Android で使用する新しい
FontFamily.Resolver.resolveAsTypeface
を追加しました。(I8950b) - コンポーザブルの内部状態を変更するツールを利用できるよう
ToolingState
を追加しました。(Ie6614) - 新たに追加されたアニメーションを適切にサポートするようツールをリファクタリングしました。(I8677b)
- material と material3 の Text、
TextField
とOutlinedTextField
にminLines
パラメータを追加し、行数の点でコンポーネントの最小高さを設定できるようにしました。(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()
に置き換えられました。(Iffc3f、b/251260206) - androidx でのユーザー補助オブジェクトのリサイクルのサポートを終了しました。最も古いサポート対象のバージョンでも、パフォーマンスの変化はほとんど無視できることがわかりました。(I0a961)
- 枠線付きテキストを描画できるように、
DrawStyle
をTextStyle
とSpanStyle
の試験運用版属性として追加しました。(If24b8、b/155421273) AnnotatedString.Builder
にkotlin.text.Appendable
が実装されました。(I1a061、b/231030444)AnnotatedString.Builder
にAnnotatedString
の部分文字列、交差するスタイルを追加するappend(AnnotatedString, start: Int, end: Int)
メソッドが追加されました。- 枠線付きテキストを描画できる
DrawStyle
パラメータをParagraph
およびMultiParagraph
ペイント関数に追加しました。(Ic8102、b/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 で発生することがあるクラッシュの問題を修正しました。(I0b755、b/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.Node
(Modifier.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
フォントはデフォルトでwght
とital
のバリエーション設定を構成せず、読み込まれたTypeface
にプラットフォーム設定を使用します。(Ia7a6d、b/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
に変更しました。(I37530、b/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.In
とFocusDirection.Out
を非推奨とし、FocusDirection.Enter
とFocusDirection.Exit
に置き換えました。(Ia4262、b/183746982)FocusManager.moveFocus(Enter)
とFocusManager.moveFocus(Exit)
のカスタム動作を指定するために 2 つの新しいフォーカス プロパティ enter と exit を追加しました。(I5f3f9、b/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
が更新されない問題を修正しました。(I58e73、b/228862715) rememberTextMeasurer
がFontFamily.Resolver
、Density
、LayoutDirection
のパラメータを取ることはなくなりました。これらのパラメータにカスタム値を指定するには、TextMeasurer
コンストラクタを使用してください。(Ia1da3)DialogProperties.decorFitsSystemWindows
プロパティが追加されたことで、ダイアログにWindowInsets
が使用できるようになりました。(I57742、b/229378542)- バイナリ互換性を維持するため、フォント コンストラクタを元の Kotlin ファイルに戻しました。前回の安定版リリースからの変更はありません。(Ieb2f3)
- equals の定義から不要な演算子を削除しました。これによる影響はありません。(I6c309)
FontVariation.Setting
は、今後の API でのクランプを可能にするためのシール インターフェースです。(I11021、b/143703328)SlotTree.kt
にCompositionGroup.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()
が公開されました。(I7fa37、b/204723384)PlacementScope
でLayoutCoordinates
を取得するための試験運用版 API を追加しました。これを利用して、デベロッパーは現在のレイアウトで位置を基準にどこに子を配置したらよいかを把握できます。(I5482b、b/238632578)LayoutCoordinates
間の行列変換を取得するためのLayoutCoordinates.transformFrom
を追加しました。(Ic5ab1、b/238632578)SemanticsModifier.id
が非推奨となり、セマンティクス ID をLayoutInfo.semanticsId
に移動しました。(Iac808、b/203559524)- リソース フォントが、フォント バリエーションの設定をサポートするようになりました(API 26 以上)。(I900dd、b/143703328)
DeviceFontFamilyNameFont
で可変フォントがサポートされるようになりました。(Ic1279、b/143703328)- フォント コンストラクタが、Android O 以上のデバイスで可変フォントを設定するための
FontVariation.Setting
のリストを受け入れるようになりました。(I11a9d、b/143703328) - 可変フォントを定義、使用するための
FontVariation
API を追加しました。(I3c40c、b/143703328) LineHeightStyle.Alignment
コンストラクタが公開されました(試験運用版)。(I4bbbe、b/235876330)- Paragraph が expect|actual として Android およびデスクトップで定義されるようになりました。(Id387e、b/239962983)
- Interface Paragraph がシールの Interface Paragarph になりました。Paragraph のサブクラス化についてのユースケースはありません。この変更が影響する場合は、お問い合わせになることをおすすめします。(If5247、b/239962983)
PlatformTextStyle
およびLineHeightStyle
から試験運用版アノテーションを削除しました。(I64bef)TextInputService.show|hideSoftwareKeyboard
が非推奨となりました。代わりに、アプリコードではSoftwareKeyboardController
、IME 管理コードではTextInputSession
を使用してください。(I14e4c、b/183448615)- 既存のアニメーション タイプ用の新しい API を追加しました。(I26179)
バグの修正
- SDK 33 以降で
POST_NOTIFICATIONS
権限を付与する必要がある API に@RequiresPermission
を追加しました。(Ie542e、b/238790278)
バージョン 1.3.0-alpha02
2022 年 7 月 27 日
androidx.compose.ui:ui-*:1.3.0-alpha02
がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
- 圧力を取得するための新しいプロパティ
PointerInputChange#pressure
を追加しました。(I45a5e、b/205164819) - コンポジションで
TextMeasurer
インスタンスを簡単に作成して記憶するためのrememberTextMeasurer
を追加しました。(I8d66e) Rect
、RoundRect
、MutableRect
がcontains
関数を呼び出すための Kotlinin
構文をサポートするようになりました。(Ie42b0、b/238642990)- API のよりシンプルな部分と合わせて簡単に実装できるようになったため、
KeyInjectionScope
から不要な関数を削除しました。削除した関数には、pressKeys
、keysDown
、keysUp
などがあります。(I81d77) KeyInjectionScope
内の定数とパラメータの単位がミリ秒である場合に接尾辞「Millis」を追加するよう、これらの名前をリファクタリングしました。(Iabef5)- テキスト編集に関する問題をトラブルシューティングできるよう
toStringForLog()
メソッドをEditCommand
に追加しました。(I53354、b/228862731) Canvas
やdrawBehind
のようなDrawScope
で動作するコンポーザブルや修飾子に、マルチスタイルのテキストを描画できるように、DrawScope
にdrawText
拡張関数を追加しました。(I16a62、b/190787898)TextMeasurer
という新しい試験運用版 API を導入しました。この API を利用すると、Compose ランタイムから切り離して、BasicText
と同じ結果を出す任意のテキスト レイアウト演算を行えます。(I17101)SlotTree.kt
にmapTree
を追加しました。これにより、ツールを利用して、asTree のように最初にメモリコピーを作成することなくSlotTree
を検査できます。Layout Inspector では、パフォーマンスが約 10 倍向上します。(I5e113)- バイナリ出力ファイルに保存されるよう Compose プレビューを変更し、デベロッパーがライブラリから
MultiPreview
アノテーションを書き込み、再使用できるようにしました。(I85699、b/233511976)
バグの修正
Velocity
トラッカーにInputEventChange
イベントを追加する際に位置ではなく差分を考慮することで、ターゲット要素が移動した場合も含めて、すべてのケースで速度が正確に計算されるようにしました。(Icea9d、b/216582726、b/223440806、b/227709803)- アノテーションがある場合に
AnnotatedString.toUpperCase
によって発生する NPE を修正しました。(I0aca2、b/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) TextStyle
とSpanStyle
のブラシのフレーバーにオプションの alpha パラメータを追加して、Text
全体の不透明度を変更できるようになりました。(Ic2fac、b/234117635)AnnotatedString
のTalkBack
のリンクをサポートするために、UrlAnnotation
のアノテーション タイプと関連メソッドを導入しました。(I1c754、b/231495122)- ユーティリティ機能をランタイムに移行。(I4f729)
バグの修正
TextLayoutResult.getLineForOffset
がスローしない。(Idc5d6、b/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 リストのフォーカス ドリブン スクロールが動作するようになりました FocusOrder
とFocusProperties
に新しい動作カスタマイズ 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
に追加しました(withKeysDown
、withKeysToggled
など)。また、特定のメタキーが押されているかどうかをチェックするためのプロパティも追加されました(いずれかの Ctrl キーが押されているかどうかを確認するisCtrlDown
など)。各関数に関するドキュメントについては、KeyInjectionScope
を参照してください。(I9f6cd、b/229831515) - カスタムのオーバースクロール効果とそれを受け入れる
Modifier.scrollable
のオーバーロードを可能にするために、試験運用版のOverscrollEffect
が導入されました。 - 試験運用版の
LocalOverScrollConfiguration
をfoundation.gesture
から foundation パッケージに移動し、名前をLocalOverscrollConfiguration
に変更しました。(If19fb、b/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 の変更
pressKeyTimes
をisCapsLockOn
および friends とともにKeyInjectionScope
に追加しました。また、API は、メタキーを押したままマウスボタンをクリックするなど、マウスとキーボードを組み合わせた注入のパターンもサポートするようになりました。(I4c8da、b/229831515)- キーイベント注入の試験運用版サポートを追加しました。
performKeyInput
を使用してキーイベントを送信するか、performMultiModalInput
によるマルチモーダル入力ジェスチャーの際にMultiModalInjectionScope
のkey
プロパティを介してキーイベントを送信します。API のドキュメントについては、KeyInjectionScope
をご覧ください。(Ic5000、b/229831515) - Android でサポートされている Google Fonts の正規のインターネット ソースを取得するための新しい
GoogleFont.Provider.AllFontsListUri
を追加しました。 - Google Fonts が Compose への読み込みに失敗した場合に再スローされるエラー メッセージを改善しました。(I0416c)
バグの修正
- 速度トラッカーに
InputEventChange
イベントを追加する際に位置ではなく差分を考慮するようになり、ターゲット要素が移動した場合でもすべてのケースで速度が正確に計算されるようにしました。(I51ec3、b/216582726、b/223440806、b/227709803) - コンポーザブルで、クイック設定タイルから切り替えた後すぐに
Show Layout Bounds
の設定が適用され、アクティビティを終了して再入力する必要がなくなりました。(I843d5、b/225937688) - ユーザー補助の文字列検索で、フォントの読み込みがトリガーされなくなりました以前は、
StyleSpans
でフォントの読み込みが試みられ、FontFamily.Resolver
が上書きされていた場合にクラッシュを引き起こしました。(I4609d) - カーソルがテキスト フィールドの末尾にあるときに Delete キーを押してもクラッシュしなくなりました。
DeleteSurroundingTextCommand
とDeleteSurroundingTextInCodePointsCommand
において、コンストラクタ引数が負数でないことが必須になりました。(Ica8e6、b/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
のカスタム実装が可視境界を超えてアイテムをレイアウトする際に使用できます。(Ifabfb、b/184670295) Modifier.composed
の鍵付きバージョンが安定版 API になりました。(Ie65e4、b/229988420)- コンポジション ローカルを使用して現在のビュー情報を取得するように
rememberNestedScrollConnection
API を簡略化しました。(I67ca7) @ComposableTarget
アノテーションと、@ComposableTargetMarker
によってマークされたアノテーションを、@file
接頭辞を使用したファイル スコープで使用できるようになりました。ファイル スコープでターゲット アノテーションを使用すると、コンパイラは、ファイル内のすべてのコンポーズ可能な関数が、関連付けられた Applier をターゲットとするものと想定します。たとえば@file:UiComposable
を使用すると、すべての@Composable
関数が Compose UI Applier をターゲットとすることが宣言されます。別の Applier をターゲットとする関数では、目的の Applier に対するターゲット マーカー アノテーションを明示的に指定する必要があります。(I40804)プラットフォームに依存しない新しいテスト API である
interface ComposeUiTest
とfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
を導入しました。これらは、TestRule
を使用することなく Compose UI テストを実行できます。ComposeTestRule
を使用せずにテストを実行するには、テストをラムダとしてrunComposeUiTest
に渡して、レシーバ スコープComposeUiTest
のメソッドとメンバーを使用します。これらはComposeContentTestRule
の場合と同じです。基盤となるアクティビティへのアクセスを可能にするために、
AndroidComposeTestRule
と同様に Android 固有のinterface AndroidComposeUiTest
とfun 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() } }
現時点では、
ComposeContentTestRule
とComposeTestRule
はComposeUiTest
から拡張されません。つまり、ComposeUiTest
の拡張関数はTestRule
インターフェースでまだ呼び出すことができません。ComposeUiTest
が安定版 API に移行すると、ComposeContentTestRule
とComposeTestRule
はComposeUiTest
から拡張するように変更されます。(Ib4e90)LineHeightBehavior
の名前がLineHeightStyle
に変更されました。LineVerticalAlignment
の名前がLineHeightStyle.Alignment
に変更されました。LineHeightTrim
の名前がLineHeightStyle.Trim
に変更されました。LineHeightStyle
のデフォルトのコンストラクタ値が削除されました。(I582bf、b/181155707)グラデーション カラーを使用してテキストを描画できるように、
TextStyle
とSpanStyle
にBrush
を追加しました。(I53869, b/187839528)LineHeightBehavior
の属性trimFirstLineTop
とtrimLastLineBottom
を単一の列挙型LineHeightTrim
に変更しました。LineHeightTrim
には、2 つのブール値(FirstLineTop
とLastLineBottom
)、Both、None によって定義される 4 つの状態の値があります。(Ifc6a5、b/181155707)LineHeightBehavior
がTextStyle
とParagraphStyle
に追加されました。LineHeightBehavior
は、行の高さを最初の行の先頭と最後の行の末尾に適用するかどうかを制御します。また、TextStyle(lineHeight)
によって指定されるスペース内の行の配置も定義します。たとえば、CSS が
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
を介して定義したものと同様の動作を実行できます。設定
trimFirstLineTop
およびtrimLastLineBottom
は、includeFontPadding
が false の場合のみ正しく機能します。(I97332、b/181155707)PlatformParagraphStyle.lerp
関数とPlatformSpanStyle.lerp
関数がトップレベル関数に変更されました。(I9a268)
バグの修正
PointerInputChange::copy
のドキュメントに、シャローコピーであることが正しく示されるようになりました。(I182f5)- 高さに制限があり、テキスト行の全体が収まらない場合に、省略記号を使用できるようになりました。(Ie528c、b/168720622)
- デフォルトで
includeFontPadding
がオンになります。TextStyle.platformTextStyle
属性を使用するとincludeFontPadding
をオフにできます。近い将来、デフォルトの動作が変更されますが、それまではこの方法で行の高さを改善し(aosp/2058653)、TextField
のクリッピングの問題を解決できます。(I01423、b/171394808)
外部からの協力
- Android で垂直方向にスクロールすると、
MouseInjectionScope.scroll(delta = someDelta)
が反転するようになりました(someDelta が正値の場合、下方向にスクロールします)。(Ifb697、b/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
を渡しても機能しませんが、今後、高さに基づいて省略するなど、いくつかの計算を行うことが可能になる予定です。(I6afee、b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
は、新しいアイテムの追加を許可しない MutableSet のようなカスタムクラスを受け入れるようになりました。(Icd314)- PointerIcon が
@Stable
インターフェースになりました(I9dafe) PointerInputChange
での部分的な消費(down または position)が非推奨になりました。consume()
を使用すると、変更を完全に使用できます。isConsumed
を使用すると、以前にその変更が他のユーザーに使われたかどうかを確認できます。PointerInputChange::copy()
が常にシャローコピーを作成するようになりました。つまり、PointerInputChange
のコピーのいずれか 1 つが使用されると、以降はそれらのコピーが使用されます。バインドされていないPointerInputChange
を作成するには、代わりにコンストラクタを使用します。(Ie6be4、b/225669674)- Compose > View の方向で、Compose と View の間のネスト スクロールの相互運用を有効にしました。これにより、Compose の親は、ネストされたスクロール ビューからネストされたスクロール差分を受け取ることができるようになります。(If7949、b/174348612)
- 新しい
SemanticsProperty testTagsAsResourceId
。これを使用して、View システム用に設計された UIAutomator テストに Compose を準拠させることができます。(I39c20) FontFamily.SansSerif
を使用すると、Android のシステム フォントで利用可能な太さがすべて表示されます。これにより、API 21~28 の内部で sans-serif-medium のような代替フォント名が使用されます。これまで API 21~28 では太さ 400 と 700 のみがサポートされていたため、動作が変更されます。(I380fe、b/156048036、b/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 { ... }
が追加されました。この関数によりユーザーは、このブロック中に読み込まれた状態値の変更にサブスクライブせずに、渡されたラムダを実行できます。これは、スナップショット ベースのスレッドセーフな書き込み / 読み取りの利点を活用しつつ、不要な再コンポジションまたは再測定を行わずに値を読み取れるようにしたいユースケースで役立つ場合があります。(I9f365、b/214054486) ComposeView
のconsumeWindowInsets
拡張プロパティを使用すると、デベロッパーは AndroidWindowInsets
の消費を無効にできます。これにより、階層内の個々のComposeViews
が互いに干渉することなく、それぞれWindowInsets
を適用できます。(I0ef08、b/220943142)- IME に小数点記号を含めるために、
Keyboard.Number
の代わりとしてKeyboardType.Decimal
を追加しました。(Iec4c8、b/209835363) PointerEventType.Scroll
とPointerEvent.scrollDelta
が安定版 API になりました。(I574c5、b/225669674)- 連携する View クラスの View と Compose の間のネスト スクロールの相互運用を有効にしました。これにより、Compose は(連携する)View の親にスクロール差分をディスパッチできるようになりました。(I5d1ac、b/174348612)
- システム全体における太字テキストのユーザー補助設定を統合するように
FontFamily.Resolver
を更新しました。(I6c1e7) Font(AssetManager, String, ...)
が非推奨となり、Font(String, AssetManager, ...)
に置き換えられました。これは試験運用版の API です。(I1c7a4)- 新しいフォント記述子
Font(DeviceFontFamilyName)
を追加し、フォントのフォールバック チェーン中にシステムがインストールしたフォントを必要に応じて検索できるようにしました。(I30468、b/219754572) - TextStyle/ParagraphStyle に
includeFontPadding
の一時的な互換性設定を追加しました。includeFontPadding
はTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
を介して変更できます。これは移行を可能にするための一時的な設定オプションで、後で削除されます。(If47be、b/171394808) - デバッグのヘルプに
GoogleFont.Provider.isAvailableOnDevice
拡張機能を追加しました。(I64e31) @ArrayRes
で使用するGoogleFont.Provider
コンストラクタを追加しました。(Ic5ee1、b/225984280)Compose GoogleFont
はFont(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
のコンテンツを切り替える自動ミラーリングをサポートするようにしました。(I79cd9、b/185760237) API の互換性を確保するため、シャドウの色、アンビエントの色が
Modifier.graphicsLayer
の末尾のパラメータになるよう更新しました。(I3f864、b/160665122)API の互換性を破る動作変更にならないよう、
GraphicsLayerScope
のシャドウの色、アンビエントの色にデフォルトの実装を追加しました。RSB イベントにイベント時間を追加しました。(Ief8ae)
FocusOrder
をFocusProperties
に統合して、focusProperties()
にfocusOrder()
のすべての機能が含まれるようにしました。FocusOrder
とfocusOrder()
が非推奨になりました。focusRequester
を受け取るfocusOrder()
は、focusRequester()
修飾子とfocusProperties()
の組み合わせに置き換える必要があります。これにより、懸念事項である修飾子の区別がより強力になります。(I601b7)RecyclerView
とCompose
の両方をアップグレードすると、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
に追加しました。(I1ba1a、b/160665122) pluralStringResource
関数で複数のリソースがサポートされるようになりました。(Ib2f23、b/191375123)
バージョン 1.2.0-alpha05
2022 年 3 月 9 日
androidx.compose.ui:ui-*:1.2.0-alpha05
がリリースされました。バージョン 1.2.0-alpha05 に含まれる commit については、こちらをご覧ください。
API の変更
TextToolbar
がActionCallback
ではなくラムダ引数を取るようになりました。(Ib2eb9、b/197950089)- Tiramisu DP2 と一致するよう core と appcompat の null 可能性を更新しました。(I0cbb7)
- Measured インターフェースが parentData プロパティを公開するようになりました。(I3313f)
Modifier.onPlaced
とOnPlacedModifier
インターフェースが安定版になりました。(Ib5482)- これで、Compose Animation では、開発者向けオプションの [Animator 再生時間スケール] 設定がサポートされるようになりました。(I5a4fc、b/161675988)
BeyondBoundsLayout
修飾子をローカルに追加しました(If8b51、b/184670295)- テキスト: includeFontPadding がデフォルトでオフになりました。
includeFontPadding=false
の結果として起きるクリッピングの問題は対処され、縦長文字ではクリッピングが起きなくなりました。(I31c84、b/171394808)
バグの修正
- すでにコンテンツが存在する場合にコンテンツを設定しようとすると、
ComposeContentTestRule.setContent
がIllegalStateException
をスローするようになりました。(I888a5、b/199631334) - Android のクリップボードから読み取る際にクリップボードの内容が原因で発生するクラッシュを修正しました。(I06020、b/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 の変更
ComposableTarget
、ComposableTargetMarker
、ComposableOpenTarget
を追加しました。使用が想定されていない 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 になりました。(I1ee35、b/174162090)Text の非同期フォント読み込みをサポートしました。(I77057、b/214587005)
カスタム
Font.ResourceLoader
をFontFamily.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 の変更
TextInputSession
とTextInputService
のnotifyFocusedRect
メソッドが非推奨となり、呼び出されなくなりました。代わりにBringIntoViewRequester
を使用してください。(Ia4302、b/192043120、b/216842427、b/178211874)RenderNode
スタブクラスにdestroyDisplayListData
メソッドを導入しました(I1e659、b/216660268)- 事前に作成した
SubcomposeLayout
の子を事前に測定できる新しい API を追加しました。(I857ea) コンポーザブル ラムダを別のラムダに変換する
movableContentOf
を追加しました。変換されたラムダは、状態および対応するノードを呼び出された新しい場所に移動します。前の呼び出しがコンポジションから出ると状態は一時的に保持され、ラムダへの新しい呼び出しがコンポジションに入った場合、状態および関連付けられたノードが新しい呼び出しの場所に移動されます。新しい呼び出しが追加されない場合、状態は完全に削除され、オブザーバーに通知されます。movableContentOf
ラムダが同じコンポジションで複数回呼び出された場合、呼び出しごとに新しい状態とノードが作成されます。呼び出しがコンポジションを出て新しい呼び出しが入ると、状態は、呼び出しの順序で最初に出る呼び出しから入る呼び出しへと移動します。新しい呼び出しで宣言されていない状態はすべて完全に削除されます。(Ib4850)FontFamilyResolver
をLocalFontFamilyResolver.current
から利用できるようになりましたCompose の使用以外で新しい FontFamily リゾルバを作成するための
createFontFamilyResolver(context)
とcreateFontFamilyResolver(context, coroutineScope)
を追加しました。Paragraph と MultiParagraph が
FontFamily.Resolver
を使用するようになりましたTextLayoutResult.layoutInput.fontFamilyResolver
に、このレイアウトで使用されるリゾルバが含まれるようになりました。TextLayoutResult.layoutInput.resourceLoader
は使用されなくなったため、非推奨になりました。(Id5a45、b/174162090)フォールバック動作で非同期およびオプションのフォント読み込みをサポートします。このパスは Text と TextField によって使用され、FontFamilyResolver を介して公開されます
FontFamilyResolver.preload
を介したフォントのプリロードのサポートFontFamilyResolver.setAsyncLoadContext
を使用すると、非同期フォントの読み込みに使用するグローバル コルーチン コンテキストを設定できます。(I87fe8、b/174162090)AndroidFont
を追加しました。これは、Android で新しいタイプのフォント リソース記述子を提供するための新しい低レベル API です。たとえば、アプリ固有のバックエンドからフォントを読み込む、必要に応じてデバイスにプリインストールされているフォントを見つける、現在のフォント ファクトリでは提供されないリソースからフォントを読み込むといったことが可能です。Font.ResourceLoaded
API が拡張され、フォントの非同期読み込みのオプションがサポートされるようになりました。アプリ デベロッパーがこの API を直接使用することは推奨されません。新しいタイプのフォントを追加するには、AndroidFont
をご覧ください。Font.AndroidResourceLoader
拡張関数を使用すると、コンポジションの外部でFont.ResourceLoader
を作成できます。リソースベースのフォントに
loadingStrategy
パラメータを追加しました。これにより、ダウンロード可能なフォントの XML をリソース フォントが参照する場合の非同期読み込みが可能になります。(Ie5aea、b/174162090)Typeface(FontFamily)
コンストラクタが非推奨となりました。これは以前、フォントのプリロードに使用されていましたが、ダウンロード可能なフォントでは最大で 10 秒ほどかかることがあります。ダウンロード可能なフォントに使用する場合、この呼び出しによって 10 秒間のブロックが発生する可能性があります。代わりに、FontFamilyResolver.preload
を使用してください。fontResource(FontFamily): Typeface
が非推奨になりました。これは以前、フォントのプリロードに使用されていましたが、ダウンロード可能なフォントでは最大で 10 秒ほどかかることがあります。代わりに、FontFamilyResolver.preload
を使用してください(If8e7c、b/174162090)maxSlotsToRetainForReuse
を受け入れるSubcomposeLayoutState
コンストラクタが非推奨となりました。代わりに、SubcomposeSlotReusePolicy
を受け入れる新しいコンストラクタが追加されました。これは、将来の再利用のために保持するスロットをきめ細かく制御できる新しいインターフェースです。(I52c4d)Color
の HSV 関数と HSL 関数を、試験運用版でない API として公開します。Oklab の色空間は公開 API になりました。(I08fb6、b/180731008)公開 API になることが想定されておらず、何も行わない
AndroidComposeTestRule.AndroidComposeStatement
が非推奨となりました。(Ibc46b)内部で生成された kt クラスの名前変更(Ia0b9e、b/174162090)
FontLoadingStrategy.values
を削除しました(I42a9d、b/174162090)グローバル フォント ローダの名前が
FontFamilyResolver
になりました。(I4f773、b/174162090)パソコン用の新しいフォント読み込みシステムを使用。(I9ce5c、b/174162090)
FontFamily.Resolver.resolve
がState<Any>
を返すようになりました(I4406c、b/174162090)
バグの修正
- ソフト入力モードが
ADJUST_PAN
のときに、TextField がフォーカスされてキーボードが表示された場合、TextField が隠れないようキーボードの上に保持されるようになりました。(I8eaeb、b/190539358、b/192043120) - デスクトップでは
FontFamily.Resolver
のコンポジション ローカルを使用します。 - デスクトップの
FontLoader
が非推奨になりました。 - デスクトップに新しい
createFontFamilyResolver
ファクトリが追加されました(I6bbbb、b/174162090) - テキスト フィールド間でフォーカスを変更したときに、ソフト キーボードの入力タイプがちらつくことがなくなりました。(I1bf50、b/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()
を追加しました。(I18bf5、b/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.updateDisplayList
のNullPointerException
を修正しました(aosp/1947059、b/206677462)- Android のクリップボードから読み取る際にクリップボードの内容が原因で発生するクラッシュを修正しました。(I06020、b/197769306)
LazyVerticalGrid
の RTL を修正しました(aosp/1931080、b/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 可能性をクリーンアップしました。(I7078a、b/204917439)- 試験運用版の API が追加され、PointerInputchange をまとめて使用したり、使用されているかどうかをチェックしたりできるようになりました。(I2e59d)
- UI レイヤでのマウス スクロール ホイール イベントのサポートを追加しました。(Ia14eb、b/198214718)
- 等価性を比較するためのキーを受け入れ、最適化スキップの対象を判断する、試験運用版の
Modifier.composed
オーバーロードを追加しました。(Ice799、b/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.Touch
とMultiModalInjectionScope.Mouse
を削除しました。マルチモーダル ジェスチャーのタップイベントとマウスイベントを挿入するために、MultiModalInjectionScope.touch()
とMultiModalInjectionScope.mouse()
を使用できるようになりました。どちらも、そのモダリティのレシーバー スコープを含むラムダを受け入れます。(Idde18)
バグの修正
TouchInjectionScope.swipeWithVelocity
のdurationMillis
のデフォルト値が、スワイプが可能になるよう計算されるようになりました。(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 を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918d、b/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 を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918d、b/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 の変更
ViewRootForInspector
とLayoutInfo.ownerViewId
からExperimentalComposeUiApi
を削除しました。(I5c2e3)- Layout の子のないオーバーロードが追加され、効率が改善されました。(Ib0d9a)
- モジュール間で呼び出す必要がある Composer メソッドから
InternalCompilerApi
を削除しました。(I1aa0b) SemanticsNodeInteraction.performSemanticsAction
は、関数が呼び出されたSemanticsNodeInteraction
を返すようになりました。(I9e5db)- TouchMode/NonTouchMode を検出するため LocalInputModeManager CompositionLocal を追加しました。(I6a83c、b/175899786)
LayoutInfo
にviewConfiguration: ViewConfiguration
を追加し、コンシューマが長押しタイムアウトなどの正しい値を取得できるようにしました。(I76ca6)InjectionScope
にviewConfiguration: 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 に変更されました。(Ic2ab3、b/197773820)flush()
とdispose()
をInjectionScope
に追加しました。それぞれ、キューに入れられたすべてのイベントをすぐにフラッシュする場合と、スコープを破棄する場合に使用してください。(Ifb73a)- 指定したマッチャーと一致するコンテンツにスクロール可能なコンテナをスクロールする
performScrollToNode(matcher: SemanticsMatcher)
を追加しました。(Ic1cb8) InjectionScope
がDensity
を実装し、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 の変更
- 修飾子間コミュニケーションのサポートを追加しました。(Id5467、b/198826874)
- PointerEventChange に試験運用版の履歴ポインタを追加しました。(Ic1fd8、b/197553056、b/199921305)
LayoutInfo
にdensity: Density
とlayoutDirection: LayoutDirection
を追加しました。これにより、LayoutInfo
のコンシューマが、LayoutInfo
で公開されるサイズと位置を正しく解釈できるようになりました。(I002f1)- 試験運用版のマウスイベント挿入サポートを追加しました。
performMouseInput
を使用してマウスイベントの送信を開始するか、performMultiModalInput
でのマルチモーダル入力ジェスチャーの際にMultiModalInjectionScope
のMouse
プロパティを介してマウスイベントを送信します。利用可能な API のドキュメントについては、MouseInjectionScope
をご覧ください。(Iaa4a8、b/190493367)
バグの修正
- スクロールに関して、スクロール可能(遅延と非遅延の両方)のユーザー補助サポートを修正しました。(I6cdb0)
TouchInjectionScope.swipeWithVelocity
を改善しました。幅広い入力変数を受け入れるようになり、スワイプを作成できない場合に入力の変更を提示するようになりました。(I40fbe、b/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 でこれらの呼び出しをインターセプトできます。(I9eae3、b/192479655)
performGesture
とGestureScope
が非推奨になり、それぞれperformTouchInput
とTouchInjectionScope
に置き換えられました。(Ia5f3f, b/190493367)- タップ ターゲットの最小サイズが含まれる
touchBoundsInRoot
をSemanticsNode
に追加しました。これにより、デベロッパーはタップ ターゲットがユーザー補助の最低条件を満たすことができます。(I2e14b、b/197751214) - inspectable の実装をやり直しました。(I927bc、b/191017532)
- composed と一致するよう inspectable のパラメータ名を変更しました。(I3a482、b/191017532)
performTouchInput
とTouchInjectionScope
に代えて、performTouchInput
とTouchInjectionScope
を導入し、他のモダリティ(マウスなど)もサポートするようになりました。TouchInjectionScope
のメソッドは、movePointerTo
とmovePointerBy
を除き、GestureScope
と同じで、これらの名前はupdatePointerTo
とupdatePointerBy
に変更されました。その他のメソッドはすべて同じです。TouchInjectionScope
の動作はGestureScope
の動作とほぼ同じですが、以下のような小さい違いが 2 つあります。- 移動イベントを送信しないままでポインタの移動中にダウンイベントを送信した場合(つまり、
updatePointerTo()
は使用されたが、move()
は使用されず、down()
が呼び出された場合)、以前の実装では、イベント時間を進めて、ダウンイベントを送信する前に移動イベントを送信します。新しい実装でも移動イベントは送信されますが、この特定のシナリオではイベント時間は進めません。 - 上記と同じように、移動イベントを送信しないままでポインタの移動中にアップイベントを送信した場合、以前の実装では、イベント時間を進めて、アップイベントを送信する前に移動イベントを送信します。新しい実装ではそのどちらも行わず、ポインタの新しい位置はアップイベントを介してのみ反映されます。
最後に、
TouchInjectionScope
に、指定されたポインタの現在の位置を取得するための新しいメソッドcurrentPosition(pointerId: Int)
が導入されました。(If1191、b/190493367)- 移動イベントを送信しないままでポインタの移動中にダウンイベントを送信した場合(つまり、
バグの修正
- 最小限のタップ ターゲットを確保するために、クリップがクリップ領域の外までタップ ターゲット境界を拡張できるようになりました。(I43e10、b/171509422)
- Android 12 デバイスで、ストレッチ オーバースクロールのサポートを追加しました。(Iccf3c、b/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
に依存するように Compose1.1.0-alpha03
を更新しました。(I74545)
API の変更
- 他の修飾子をラップするための
Modifier.inspectable
を追加しました。(I1909b、b/191017532) BlurredEdgeTreatment
API を追加しました。この API は、ぼかしのユースケースを簡素化して、クリップフラグと TileMode のよく使用される組み合わせにするためのものです。ほとんどのユースケースでは、ぼかしを入れたコンテンツを元のコンテンツの境界の外側に描画し、ぼかし領域を透明なブラックを使ってこの境界の外側に描画するか、コンテンツをコンテンツの境界に切り取り、コンテンツの境界の外まで延長するぼかしカーネルの最も近いエッジをサンプリングすることが必要になります。(I6b4b7、b/166927547)- Compose デスクトップに RenderEffect のサポートを追加しました。コンポジション階層の一部にぼかしの視覚効果を取り入れる簡単な方法として、OffsetEffect と blur 修飾子を導入しました。(I0f6aa、b/166927547)
- レイヤ自体のコンテンツを変更するために
Modifier.graphicsLayer
で必要に応じて構成できる RenderEffect API を導入しました。この API を使用して、コンポジション階層内のコンポーザブルと子コンポーザブルのコンテンツをぼかすことができます。(I47c4d、b/166927547) - AwaitPointerEventScope に withTimeout() と withTimeoutOrNull() が追加されました。(I507f0、b/179239764、b/182397793)
- ユーザー補助機能を保証するため、セマンティクスとポインタ入力で使用する最小タップ ターゲット サイズを ViewConfiguration に追加しました。(Ie861c)
- ぼかしベースの RenderEffects に対するエッジ動作の定義に役立つ、TileMode.Decal のサポートを追加しました。(I7e8ed、b/166927547)
performScrollToIndex
、performScrollToKey
、hasScrollToIndexAction
、hasScrollToKeyAction
が安定版 API になりました。(I142ae、b/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 がマウスボタン状態とキーボード修飾子状態の読み取りをサポートするようになりました。(I6310c、b/180075467)
- 挿入されたジェスチャーが、時刻について信頼できる情報源として MainTestClock の時刻を使用するようになりました。
performGesture
での挿入されたイベントの現在の時刻は、MainTestClock の現在の時刻に初期化されます。(Ifb364、b/192064452) DpRect(DpOffset, DpSize)
コンストラクタを追加しました。(I2cf16、b/194219828)- DpSize クラスを追加しました。(I7abb1、b/194219828)
バグの修正
- VectorDrawable の root color tint プロパティとして ColorStateLists をサポートするよう、ベクター グラフィック XML の解析を更新しました。(I86915、b/195668138)
バージョン 1.1.0-alpha01
2021 年 8 月 4 日
androidx.compose.ui:ui-*:1.1.0-alpha01
がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
RelocationRequester.bringIntoView
が長方形をパラメータとして受け入れ、コンポーザブルの一部を表示できるようになりました。(Ice2c5、b/194330245)AnimatedImageVector
と関連する API が新しいandroidx.compose.animation:animation-graphics
モジュールに追加されました。(I60873)- 再配置リクエストを処理する試験運用版の修飾子を追加しました。(I65a97、b/178211874)
ColorPainter と同様に、Painter 内でも任意 Brush の描画をサポートするよう、BrushPainter API を導入しました。
Brush API を更新し、BrushPainter 内でクエリされる固有のサイズのパラメータを追加しました。(Ia2752、b/189466433)
オプションの FilterQuality パラメータも使用するよう、ソースとデスティネーションの長方形を使用する DrawScope#drawImage メソッドを更新しました。これは、ピクセルベースのアートに合わせてスケールアップする際にピクセル化されるピクセルアートに対して有用です。オプションの FilterQuality パラメータも使用するよう、BitmapPainter と Image コンポーザブルを更新しました。(Ie4fb0、b/180311607)
GestureScope.advanceEventTime
メソッドを追加し、ジェスチャーでのイベントのタイミングを細かく制御できるようになりました。(Ibf3e2)
バグの修正
- draw 修飾子のチェーンを適切にサポートするため、Modifier.paint 実装が drawsContent を確実に呼び出すようにしました。
以前は、Modifier.paint は修飾子のチェーンではリーフノードとなりましたが、こうすると、コンポーザブル コンテナ(ボックスなど)上で構成したり、
Modifier.paint().border()
などの上にデコレーションを追加したりできなくなります。指定されたペインタのコンテンツの描画後に Modifier.paint が drawContent を呼び出すようにすることで、修飾子パターンとの動作上の整合性を向上させました。(Ibb2a7、b/178201337、b/186213275) - ダイアログがプラットフォームのサイズ調整動作に従うようになりました。この動作をオーバーライドするには、
usePlatformDefaultWidth
を false に設定します。(Iffaed、b/192682388) InfiniteAnimationPolicy
を :compose:ui に移動しました。(I5eb09、b/160602714)- 遅延リストと通常のスクロール コンポーネントに対するセマンティクス アクションによるスクロールがアニメーション化されるようになりました。(Id9066、b/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 と AGP7.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 に設定します。(Iffaed、b/192682388)
バージョン 1.0.0-rc01
2021 年 7 月 1 日
androidx.compose.ui:ui-*:1.0.0-rc01
がリリースされました。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください。
新機能
- ui-tooling モジュールを
ui-tooling
とui-tooling-preview
に分割しました。(Iefa28、b/190649014)
API の変更
- 非推奨になった試験運用版の
FocusManager#moveFocusIn
とFocusManager#moveFocusOut
を削除しました。(I227d7、b/170154986、b/186567354、b/168510304) - Canvas がユーザー補助用の contentDescription パラメータをサポートするようになりました。(Ib547c)
PopupProperties
のuseDefaultMaxWidth
の名前をusePlatformDefaultWidth
に変更しました。(I05710)- ダイアログが画面の幅全体を使用できるようになりました。(I83929、b/190810877)
- 試験運用版の HSV / HSL カラー表現サポートを追加しました。(Id7cf8、b/180731008)
動作の変更
- Compose
@Preview
がLocalActivityResultRegistryOwner
を提供し、既存のオーナーに依存するrememberLauncherForActivityResult()
のような API を使用するコンポーザブルをプレビューできるようになりました。(Ib13d1、b/185693006) - Compose
@Preview
がLocalOnBackPressedDispatcherOwner
を提供し、既存のオーナーに依存するBackHandler
のような API を使用するコンポーザブルをプレビューできるようになりました。(Ia1c05、b/185693006)
バグの修正
androidx.compose.ui:ui
にInfiniteAnimationPolicy
を移動しました。(I5eb09、b/160602714)- モジュール構造を変更するため、AnimatedImageVector を一時的に削除しました。(I41906、b/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>
には、このメソッドに「ホット」、「起動」、または「起動後」のフラグを付ける場合にそれぞれ文字H
、S
、P
(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
列挙型がインライン クラスに置き換えられました。(Ie321b、b/187055290)FocusManager.clearFocus(forcedClear = true)
の名前をFocusManager.clearFocus(force = true)
に変更しました。(Ia0c41)- 列挙型の使用をインライン クラスにリファクタリングして、新しい列挙値の追加時に網羅的な when ステートメントの問題を回避できるようにしました。(I2b5eb)
PopupProperties
から@ExperimentalComposeUiApi
を削除しました。(I01fa6)PointerType
が列挙型からインライン クラスに変更されました。(If5058)- ContentDescription と Text のセマンティクス プロパティが、単一の値ではなくリストになり、連結ではなくそのまま結合できるようになりました。また、これらの変更を活用できるように改善されたテスト API も提供されています。(Ica6bf、b/184825850)
Modifier.focusModifier()
が非推奨となり、Modifier.focusTarget()
に置き換えられました。(I6c860)Modifier.onSizeChanged()
とModifier.onGloballyPositioned()
がインライン関数ではなくなりました。(I727f6、b/186109675)KeyboardType
列挙型がインライン クラスに置き換えられました。(I73045、b/187055290)FocusState
列挙型がFocusState
インターフェースに置き換えられました。(Iccc1a、b/187055290)- ImeAction 列挙型がインライン クラスに置き換えられました。(I18be5、b/187055290)
PlaceholderVerticalAlign
がインライン クラスに変換されました。(If6290)- TextUnitType がインライン クラスになりました。(I4cba9)
AnnotatedString.withAnnotation
関数が ExperimentalComposeApi ではなく ExperimentalTextApi になりました。(I0cd0a)- TextUnitType が指定された TextUnit コンストラクタが、ExperimentalComposeApi ではなく ExperimentalTextApi になりました。
バグの修正
- スクロール後に LazyColumn / Row アイテムが部分的に表示される、beta07 のバグを修正しました。(I8c9ac、b/188566058)
detectDragGesures
、detectVerticalGestures
、detectHorizontalGestures
が位置変更を自動的に使用するようになり、onDrag コールバックで change.consumePositionChange を呼び出す必要がなくなりました(I42fc4、b/185096350、b/187320697)- 整列ラインを提供する LayoutModifiers を修正しました。子の整列ラインが変更されたときに親が再測定されないバグを修正しました。(I4401f、b/174315652)
Modifier.onGloballyPositioned()
は、すべての修飾子を適用した後のレイアウト座標ではなく、修飾子チェーン内のこの修飾子の座標を報告するように変更されました。これにより、報告される座標が、修飾子の順序の影響を受けるようになりました。(Ieb67d、b/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 列挙型がインライン クラスに置き換えられました。(Id670a、b/187055290)
FocusDirection
列挙型がインライン クラスに置き換えられました。(Ib6d03、b/187055290、b/184086802)- SubcomposeLayout の状態をホイスティングする機能を導入しました。これにより、必要な slotId にコンテンツを事前コンポーズできるようになり、コンポジションが次に必要なくなったときに指定された slotId でサブコンポーズしようとする際の次回の測定パスが速くなります。(I42580、b/184940225)
- クリップ選択ハンドルを追加しました。(Iff80d、b/183408447)
- LayoutInspector のサポートに関連する不要な API を削除しました。(I2ac78)
バグの修正
- LazyColumn/Row は、スクロールされて画面から消えたときでも、前に表示されていたアクティブな(破棄されていない)アイテムを最大 2 つまで維持するようになりました。これにより、スクロールのパフォーマンスを改善する新しいアイテムをコンポーズする必要がある場合に、コンポーネントがアクティブなサブコンポジションを再利用することが可能になります。(Ie5555)
AnnotatedString
のTextGeomerticTransform
とTextDecoration
が指定どおり適用されるようになりました。(I61900、b/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 を追加しました。(Id54ef、b/180479017)
- インデックス登録されたアイテムのリストを特定のインデックスを付加されたアイテムにスクロールする
SemanticsActions.ScrollToIndex
と、キーを持つアイテムを使用してリスト内のアイテムのインデックスを取得するSemanticsProperties.IndexForKey
を追加しました。どちらのアクションも LazyList によって実装されます。- 指定されたインデックスにリストをスクロールする
SemanticsNodeInteraction.performScrollToIndex
と、指定されたキーを持つアイテムにリストをスクロールするSemanticsNodeInteraction.performScrollToKey
を追加しました。(I4fe63、b/178483889、b/161584524)
- 指定されたインデックスにリストをスクロールする
- ownerViewId を GraphicLayerInfo に追加しました。(I19f62)
- アセット、File、FileDescriptor からフォントを読み込むための Font() オーバーロードを追加しました。(I5d382)
- 無効な入力を含むノードをマークできるユーザー補助 API
error
を追加しました。(I12997、b/180584804、b/182142737) - アセット、File、FileDescriptor からフォントを読み込むための
Font()
オーバーロードを追加しました。(I43007) TextFieldValue.Saver
に AnnotatedString 保存サポートを追加しました。AnnotatedString.Builder
にaddTtsAnnotation
と withAnnotation ユーティリティ関数を追加しました。(I8cbdc、b/178446304)- TextUnit コンストラクタ関数
TextUnit(value: Float, type: TextUnitType)
を追加しました。(I7ecce、b/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)
を追加しました。(Ic5534、b/183746743) - 試験運用版の
performTextInputSelection
API を追加しました。(I2dcbb、b/178510628) InputEventCallback
インターフェースは非推奨になりました。このインターフェースは、どの公開 API でも使用できなかったため、コードでは使用されませんでした。(I34a02、b/184003208)TextLayoutResult/createTextLayoutResult
関数は非推奨になりました。これは、テスト用に追加された未使用のパブリック関数です。この関数は、Compose テキスト API に使用可能なことは何も行いません。この関数は非推奨になり、今後削除される予定です。(I80413)
バグの修正
ACTION_SCROLL_FORWARD
、ACTION_SCROLL_BACKWARD
、accessibilityActionScrollLeft
、accessibilityActionScrollUp
、accessibilityActionScrollRight
、accessibilityActionScrollDown
のユーザー補助のスクロール操作を修正しました。スクロール可能な範囲の終わりまでスクロールされる代わりに、特定の方向に 1 画面ずつスクロールされるようになりました。(Ieccb0)- ui-test-manifest と ui-tooling-data の AndroidManifest ファイルに、Android 12 との互換性が備わりました。(I6f9de、b/184718994)
バージョン 1.0.0-beta04
2021 年 4 月 7 日
androidx.compose.ui:ui-*:1.0.0-beta04
がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください。
API の変更
SoftwareKeyboardController
のhideSoftwareKeyboard
とshowSoftwareKeyboard
の名前を、それぞれhide()
とshow()
に変更しました。- 完全な CompositionLocal インターフェースを提供して、LocalSoftwareKeyboardController を設定できるようにしました(特にテストに役立ちます)。(I579a6)
- LiveRegion ユーザー補助 API が追加されました。ノードがライブ リージョンとマークされている場合に、ユーザー補助サービスがユーザーにその変更を自動的に知らせます。(Idcf6f、b/172590946)
- TextOverflow.Visible が導入されました。(Ic8f89)
バグの修正
- エッジの
LazyColumn
/LazyRow
のアイテムが高速フリングの後に正しく配置されない問題を修正しました。(Ie4d13、b/183877420) AndroidViewBinding
が Compose 階層から削除されたときに、FragmentContainerView
を介してインフレートされるフラグメントをAndroidViewBinding
が適切に削除するようになりました。(Ib0248、b/179915946)ComposeView
がFragment
内にある場合に、FragmentContainerView
を介してインフレートされるフラグメントをAndroidViewBinding
が正しくネストするようになり、これらのフラグメントの状態の保存と復元に関する問題が修正されました。(I70eb0、b/179915946)- Compose ViewBinding が Fragment
1.3.2
に依存するようになり、構成の変更後にFragmentContainerView
を介してインフレートされるフラグメントの表示が整合するようになりました。(I0743d、b/179915946)
バージョン 1.0.0-beta03
2021 年 3 月 24 日
androidx.compose.ui:ui-*:1.0.0-beta03
がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください。
API の変更
- ComposeView の ViewTree 依存関係のチェックを延期しました。(I8dbbf、b/182466548)
GestureScope
のswipeUp
/swipeDown
/swipeLeft
/swipeRight
関数にオプションのstartX
/endX
とstartY
/endY
を追加しました。(I49e2d、b/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 を追加しました。(I5951e、b/168778053) - TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい
LocalSoftwareKeyboardController
コンポジション ローカル API を追加しました。(I84472、b/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 の一般使用に対する制限を適用します。(I6aa29、b/174531520)
androidx.compose.ui:ui
が AppCompat や Fragment に依存しなくなりました。アプリで ComposeView を使用しているときに、Fragment または AppCompat を使用している場合は、AppCompat 1.3 以降または Fragment 1.3 以降を使用していることを確認してください。ComposeView に必要なライフサイクルと保存済み状態のオーナーを正しく設定するには、これらのバージョンが必要です。(I1d6fa、b/161814404)- navigation-compose のデスティネーション内で使用すると
rememberSaveable { mutableStateOf(0) }
が壊れる問題を修正しました。(I1312b、b/180042685、b/180701630) - TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい
LocalSoftwareKeyboardController
コンポジション ローカル API を追加しました。(I658b6、b/168778053) ComposeRootRegistry
のtearDownRegistry()
で低頻度で発生する 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
に追加しました(I67269、b/179995594) - 組み込み関数に合わせてサイズ変更するための修飾子が試験運用版ではなくなりました。(I15744)
- MeasureBlocks の名前が MeasurePolicy に変更され、機能的なインターフェースになりました。Layout API を、MeasurePolicy を使用するように更新または簡素化しました。(Icab48、b/167662468、b/156751158)
InteractionState
を[Mutable]InteractionSource
に置き換えました。- インターフェースは、操作イベントを送受信する役割を担います。
interactionState = remember { InteractionState() }
をButton
やModifier.clickable()
などのコンポーネントに渡す代わりに、interactionSource = remember { MutableInteractionSource() }
を使用します。Interaction.Pressed in interactionState
ではなく、InteractionSource で拡張関数(InteractionSource.collectIsPressedAsState() など)を使用する必要があります。- 複雑なユースケースの場合は、InteractionSource.interactions を使用して操作フローを確認できます。詳しくは、InteractionSource のドキュメントとサンプルをご覧ください。
- (I85965、b/152525426、b/171913923、b/171710801、b/174852378)
- CompositionLocals に AccessibilityMananger インターフェースと LocalAccessibilityMananger を追加しました。(I53520)
- 非推奨の LayoutCoordinates メソッドを削除しました。positionInParent と boundsInParent のプロパティの代わりに、関数を使用してください(I580ed、b/169874631、b/175142755)。
- 型エイリアスが、基になる型に置き換えられました。
ColorStop
がPair<Float, Color>
に変更されました。SpanStyleRange
が `AnnotatedString.Rangeに変更されました。 ParagraphStyleRange
がAnnotatedString.Range<ParagraphStyle>
に変更されました。StringAnnotation
がAnnotatedString.Range<String>
に変更されました。- (I8dd1a)
- 低レベルのテキスト コンポーネント(CoreTextField など)からの入力セッション用に、新しい TextInputSession を作成しました。(I8817f、b/177662148)
- Placeable は、子レイアウトが実際に測定したサイズを表す measuredSize を公開するようになりました。このサイズは測定の制約を考慮しない場合があります。(Ib2729、b/172560206、b/172338608)
- selectionGroup 修飾子を追加し、ユーザー補助機能を提供するためにタブやラジオボタンのコレクションをマークできるようにしました。(Ie5c29)
compositionLocalOf
とstaticCompositionLocalOf
のdefaultFactory
は、オプションではなく必須になりました。この変更により、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(...) }
を使用してください。(I266ed、b/175294473)一部の消費をポインタ入力システムから削除しました。消費を部分的に調整する場合は、Modifier.nestedScroll を使用することをおすすめします。(Ie9c9b)
Orientation を foundation パッケージに移動しました。VelocirtTracker を ui.gesture から ui.input.pointer に移動しました。(Iff4a8、b/175294473)
imageResource と vectorResource が、それぞれ ImageBitmap コンパニオンと ImageVector コンパニオンの拡張関数になりました。
load{Image,Vector,Font}Resource
関数を削除しました。(I89130)AnimationClockObservable とサブクラスを削除しました。AnimatedFloat を削除しました。(Icde52、b/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 のファイルクラス セマンティクスにより、バイナリとの互換性は損なわれますがソースコードとの互換性は維持されるので、多くのユーザーにとって問題にはなりません。
- (I99b7d、b/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 クラスの代わりにスクロール可能なインターフェースを使用するようになりました。(I4f5a5、b/174485541、b/175294473)
PointerInputModifier の CustomEvens サポートを削除しました。(I02707、b/175294473)
SnapshotStateObserver が試験運用版ではなくなりました。(Id2e6a)
これまでに非推奨となった API をいくつか削除しました。(Ice5da、b/178633932)
longPressGestureFilter と doubleClickGestureFilter を削除しました。Modifier.pointerInput と、detectTapGestures などのヘルパー関数を使用してください。(I2fedf、b/175294473)
さまざまな toString メソッドでの String.format API のリファクタリング使用を削除し、内部で String.format を利用しないようにしました。(Id1290)
dp アサーションを削除しました。(I798d2)
androidx.compose.runtime:runtime-dispatch を削除しました。(I55feb)
テキスト アクションでフォーカスを自動的に確認するようになりました。(I13777、b/179648629)
runBlockingWithManualClock
を削除しました(I15cdc、b/179664814)Modifier.verticalScroll() / horizontalScroll() のスクロール位置が Ints で表されるようになりました。(I81298)
FlingConfig の名前を FlingBehavior に変更し、事前定義された Decay ではなく一時停止アニメーションをカスタマイズできるようにしました。(I02b86、b/175294473)
すべての ImeAction コールバックで同じアクションを設定するのに役立つヘルパー関数を追加しました。(I63447、b/179226323)
すべてのテキスト フィールドから SoftwareKeyboardController コールバックが削除され、まもなく新しい API に置き換えられます。(Iae869、b/168778053)
FontSpan と FontWeigthStyleSpan は使用されなくなり、削除しました。(Ie5b56、b/177423444)
以下の Material API 変更を加えました。
- Top / BottomAppBar に contentPadding パラメータを追加し、デフォルトのパディングをカスタマイズできるようにしました。
- API ガイドラインに沿って必須のパラメータがオプションのパラメータの前になるよう、BackdropScaffold 内のパラメータの順序を変更しました。
- BottomNavigationItem の
icon
パラメータをselected
とonClick
の後ろになるよう移動しました。 - BottomNavigationItem の
alwaysShowLabels
パラメータの名前をalwaysShowLabel
に変更しました。 - 一部のコンポーネントの
bodyContent
パラメータの名前をcontent
のみに変更しました。 ButtonDefaults.buttonColors()
のパラメータの順序を変更しました。パラメータの型は変更されないため、これによりコードでエラーは発生しません。名前付きパラメータを使用するか、順序を手動で更新してください。そうしないと、コードは以前と同じように動作しません。darkColors()
にsecondaryVariant
パラメータを追加しました。通常、このカラーはダークテーマのsecondary
と同じですが、整合性とカスタマイズ性向上のために追加しました。- ElevationDefaults と animateElevation() はあまり使用されず、役に立っていないため、公開 API のサーフェスから削除しました。
Slider
のonValueChangeEnd
の名前をonValueChangeFinished
に変更し、null 可能にしました。- 整合性のため、
Snackbar
のtext
パラメータの名前をcontent
に変更しました。 DropdownMenuItem
にcontentPadding
パラメータを追加してデフォルトのパディングをカスタマイズできるようにし、content
をRowScope
の拡張にしました。ModalDrawerLayout
の名前をModalDrawer
に変更しました。BottomDrawerLayout
の名前をBottomDrawer
に変更しました。- (I1cc66)
バグの修正
- Compose で AnimatedVectorDrawable リソースを使用するための API を追加しました。animatedVectorResource を使用して
<animated-vector>
XML を AnimatedImageVector として読み込み、painterFor でアニメーション化します。(I8ea91) - TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I658b6、b/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 と名前を揃えました。(Iba381、b/174565889)
- 部分文字列を引数として使用する部分文字列のテスト API を改善しました(Icbe78)
- ラムダを指定せずにカスタム フォーカス順序で FocusRequest を受け入れる
Modifier.focusOrder()
を追加しました。これは、参照を指定するだけでよい、コンポーザブルのカスタム フォーカス順序を必要としない場合に役立ちます(I4f52a、b/179180978) - ComponentActivity.setContent を androidx.activity:activity-compose モジュールの androidx.activity.compose.setContent に移動しました。(Icf416)
- destructuring と copy() メソッドを、これらをほとんど使用しないクラスから削除しました。(I26702、b/178659281)
- ポップアップをプラットフォーム固有のものにしました。AndroidPopupProperties の名前を PopupProperties に変更し、
isFocusable
をPopupProperties
のfocusable
パラメータに移動しました(Ieeea5) - ダイアログをプラットフォーム固有のものにしました。AndroidDialogProperties の名前を DialogProperties に変更しました。(I4ef69、b/179138130)
- LayoutNode を内部関数に変更しました(I8a7b1、b/175103944)
- Constraints.enforce を Constraints.constrain に置き換えました。(I8b8ea)
- loadFontResource が非推奨になりました。代わりに fontResource を使用してください。imageResource、loadImageResource、vectorResource、loadVectorResource が非推奨になりました。代わりに painterResource を使用してください。(I6b809)
- パフォーマンス上の理由から、ScrollAxisRange セマンティクスは、浮動小数点値を直接使用するのではなく、浮動小数点数を返すラムダを使用するようになりました。(If4a35、b/178657186)
- ユーザー補助機能のために、テキスト フィールドの編集可能な入力をマークする EditableText セマンティクスを追加し、そのセマンティクスを確認するための対応するテストメソッドを追加しました。(I8e07a)
- OwnerLayer/OwnerScope/OwnerSnapshotObserver を内部関数に変更しました(I4ffaf、b/175103944)
- toIntPx() の名前を roundToPx() に変更しました(I9b7e4、b/173502290)
- IntBounds の名前を IntRect に変更し、API を改善しました。(I1f6ff)
- Snapshot API を API ガイドラインとの整合性を高め、内部実装クラスを公開 API から非表示にするように更新しました。(Id9e32)
- 展開と折りたたみのセマンティクス アクションを追加しました。ModalBottomSheetState に expand と halfExpand を追加しました(Ib5064)
- Modifier.dragGestureFilter が非推奨になりました。代わりに
Modifier.pointerInput { detectDragGestures (...)}
を使用してください。または、単軸のドラッグには Modifier.draggable を使用します(I0ba93、b/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)) }
のようになります(Ib4c26、b/177338004) - ユーザー補助機能のためのパスワード セマンティクスを追加しました(I231ce)
- ユーザー補助機能のために不確定形式の進捗状況バーをマークする ProgressBarRangeInfo.Indeterminate を追加しました(I6fe05)
emptyContent()
および(@Composable () -> Unit).orEmpty()
ユーティリティが非推奨になりました(パフォーマンス上の効果や価値がなくなったため)。(I0484d)snapshotFlow
とwithMutableSnapshot
は試験運用版ではなくなりました(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.* クラスはデータクラスではなくなりました(I4879e、b/178001427)
- 置き換えずに
view.captureToImage()
を削除しました。(I7fcd2) - ソース コンテンツの Refactored ColorFilter API の RGB 値を interface に変更して、PathEffect の実装と一致させるための ColorMatrix API を導入しました。(Ica1e8)
- ShapeDirection パラメータを Shape の createOutline に追加します。これにより、レイアウト方向に対応した形状を作成できるようになります。(I57c20、b/152756983)
- onImeActionPerformed が非推奨になりました。代わりに KeyboardActions を使用してください。(If0bbd、b/179071523)
- 無限アニメーションに適用される
InfiniteAnimationPolicy
コルーチン コンテキスト要素を導入しました。ComposeTestRule
を使用してテストを実行する場合を除き、デフォルトではポリシーはインストールされません。(I50ec4、b/151940543) - canDrag を Modifier.scrollable から削除しました。(Id66e7、b/175294473)
- 新しい parentCoordinates プロパティを使用できるように、LayoutCoordinates.parentCoordinates の名前を LayoutCoordinates.parentLayoutCoordinates に変更しました。parentCoordinates プロパティは、親修飾子の LayoutCoordinte を提供するようになりました。onSizeChanged() と onGloballyPositioned() により完全なユースケースを提供できるようになります(Idfbfd、b/177926591)
- tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter、pressIndicaitonGestureFilter が非推奨になりました。代わりに、Modifier.clickable または Modifier.pointerInput を detectTapGestures 関数とともに使用してください。(I6baf9、b/175294473)
- SaveableStateRegistry の unregisterProvider を削除しました。代わりに、registerProvider() が SaveableStateRegistry.Entry オブジェクトを返すようになりました。このオブジェクトを使用して登録を解除できます(Ic4274、b/178583739)
- rememberSavedInstanceState() の名前を rememberSaveable() に変更して androidx.compose.runtime.saveable パッケージに移動しました。(I1366e、b/177338004)
- CoreText と CoreTextField を公開 API から削除しました。
- 非推奨となった SelectionContainer オーバーロードを削除しました
- (I99c19)
- WindowManager に直接追加または削除されている階層で Compose を使用するテストがより安定するようになりました。(Ie81ed、b/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 を削除しました。(Ib9bf4、b/177420019)
- CompositionData.asTree() と関連 API を ui-tooling-data モジュールに移動し、試験運用版としてマークしました(Ic95b8)
- RounderCornerShape、CutCornerShape、CornerBasedShape のパラメータの名前を left/right から start/end に変更して、RTL 方向におけるその形状の自動ミラーリングをサポートするようにしました。自動ミラーリングが不要なときのために、AbsoluteRounderCornerShape と AbsoluteCutCornerShape を導入しました。(I61040、b/152756983)
Compose コンパイラ プラグインの対象となる API は、具象クラスではなくインターフェースを使用するようにリファクタリングされました。また、それらのインターフェースは、タイプ パラメータを使用しなくなりました。
この内部変更はソースコードの互換性には影響を与えませんが、バイナリの互換性を破る変更になります。(I3b922、b/169406779)
意図せずに公開されていた StringBuilder.deleteAt 関数を削除しました(Id6ed9)
バグの修正
- ビュー階層に配置された ComposeView は別のコンポジションの子であり、その祖先の子コンポジションをホストするようになりました(I92883)
- ImageBitmap オブジェクトを読み込む際にリソース ドローアブル キャッシュを再利用できるように、Compose の imageFromResource API を更新しました。(If3627、b/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 に移動されました。(I9420b、b/173387208)
- Key.DPadUp を非推奨としました。代わりに Key.DirectionUp を使用してください。(Iab335、b/177954892)
- オーナー インターフェースを内部化しました。(If8e35)
- プログラムでフォーカスを移動する FocusManager.moveFocus() API を追加しました。(I045cb、b/177681839)
- グローバル座標ではなくウィンドウ相対座標を使用するように、PopupPositionProvider を変更しました。parentGlobalBounds の名前を anchorBounds に変更し、windowGlobalBounds を windowSize: IntSize に変更しました。(I2994a)
- Duration と Uptime を Long ミリ秒に置き換えます。これにより、これらのクラスに対するポインタ入力の依存関係が削除されます。(Ia33b2、b/175142755、b/177420019)
- 既存の AmbientLifecycleOwner、AmbientViewModelStoreOwner と同様に、AmbientSavedStateRegistryOwner を追加しました。(I9a3e8、b/176756365)
- ベクター グラフィックのルートに適用される色合いの解析をサポートするように、ベクター グラフィック API を更新しました。(Id9d53、b/177210509)
- デバイスを区別するために、toolType を PointerInputChange に追加しました。(Iac787、b/175142755)
- AmbientWindowManager の名前を AmbientWindowInfo に変更しました。(I2686a、b/177084714、b/177084983)
- グローバル座標メソッドを非推奨とし、ウィンドウに基づく座標メソッドを新たに作成しました。(Iee284)
- 検査が有効にされた場合にグラフィック レイヤの修飾子を追加する、Modifier.toolingGraphicsLayer を追加しました。(I315df)
- FocusRequester.createRefs は、変更の可能性があるため、試験運用版とマークするようになりました。(I2d898、b/177000821)
- SemanticsPropertyReceiver.hidden が hiddenToUser という名前に変更され、@ExperimentalComposeUiApi とマークされました。AccessibilityRangeInfo が ProgressBarRangeInfo という名前に変更されました。 stateDescriptionRange が progressBarRangeInfo という名前に変更されました。AccessibilityScrollState が ScrollAxisRange という名前に変更されました。 horizontalAccessibilityScrollState が horizontalScrollAxisRange という名前に変更されました。 VerticalAccessibilityScrollState が verticalScrollAxisRange という名前に変更されました。(Id3148)
- PointerInputData を削除し、PointerInputData のフィールドをすべて利用できるように PointerInputChange を変更しました。PointerInputEvent と PointerInputEventData は公開 API で使用されることがないため、内部化しました。(Ifff97、b/175142755)
- Density を実装して dp から生ピクセルへの変換をサポートするように、GraphicsLayerScope を更新しました。(Ied528、b/176819695)
- 行優先順に従うよう Matrix API を更新しました。また、SkMatrix と Matrix4 の間のフレームワーク変換ロジックを内部的に一致させるために、異なる行列表現間の変換を支援するインデックス定数を提供しました。(I432e6)
- 試験運用版の monotonicFrameAnimationClockOf メソッドを削除しました。(Ib753f、b/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
を拡張してsetContent
(ComposeTestRule
から削除済み)を定義するものです。ComposeTestRule
を返しアクティビティを自動的に起動しないファクトリ メソッドcreateEmptyComposeRule()
を追加しました。これは、たとえばActivityScenario.launch
などを使用してテスト中にアクティビティを起動するときに使用します。(I9d782、b/174472899)animateAsState が animateFooAsState になりました。ここで Foo はアニメーション化される変数の型です(Float、Dp、Offset など)。(Ie7e25)
画像とアイコンにコンテンツ説明パラメータを追加しました。これは、ユーザー補助サービスに説明を提供するために使用されます。(I2ac4c)
displaySize は使用しないほうがよいため、削除しました。通常は、onRoot() のサイズまたはウィンドウ サイズ以上を使用することをおすすめします。(I62db4)
OnSizeChanged は、レイアウトのコンテンツのサイズを報告していました。これが、修飾子チェーン内の位置でのサイズを報告するようになりました。(I36b78、b/177562900)
emit() API とすべてのオーバーロードを非推奨とし、名前を ComposeNode に変更しました。API 自体は同じものです。単に、Compose の命名規則に従うように名前を変更しました。(I4137b)
TextFieldValue が AnnotatedString を受け入れるようになりました。ただし、これは API のみの変更であり、マルチスタイル テキストの編集はまだ実装されていません。
- EditingBuffer コンストラクタ パラメータから
initial
を削除しました。(I326d5)
- EditingBuffer コンストラクタ パラメータから
invalidate と compositionReference() が非推奨になり、それぞれ currentRecomposeScope と rememberCompositionReference に置き換えられました。(I583a8)
kotlin.CharSequence から拡張するように、AnnotatedString を変更しました。そのため、length と subSequence がインスタンス関数になり、拡張関数は削除されました。(Iaf429)
RememberObserver が CompositionLifecycleObserver に置き換わり、CompositionLifecycleObserver が非推奨になりました。
RememberObserver
をCompositionLifecycleObserver
に置き換えました。セマンティクスを変更し、メソッドの名前を変更しました。新しい API への変更は、1 回だけ記憶されているオブジェクトに対しては機械的に行うことができます(引き続き、これがおすすめの方法です)。ただし、参照がコンポジション内で複数回記憶されている場合は、onEnter
が 1 回だけ呼び出される参照ごとにonRemembered
が呼び出されます。オブジェクトがWithConstraints
やScaffold
などのサブコンポジションで使用されていた場合、onEnter
が複数回呼び出されることで単一のonEnter
呼び出しの保証の信頼性が損なわれていましたが、RememberObserver
では削除されました。RememberObserver
は、remember
に渡されたコールバックからRememberObserver
インスタンスが返された場合に呼び出されるonAbandoned
を追加しますが、コンポジションの状態には記憶されないため、onRemembered
が呼び出されることはありません。これは、例外によってコンポジションが完了前に終了する場合や、コンポジションの生成状態が最新でなくなった、あるいは不要になったためにコンポジションが破棄された場合などに発生することがあります。上記の単一参照の推奨事項に沿ったRememberObserver
のインスタンスが外部リソースを追跡している場合、onForgotten
とonAbandoned
の両方が、リソースが不要になったことを示します。オブジェクトが、開始された処理またはonRemembered
に割り当てられたリソースを追跡する場合、onRemembered
が呼び出されてもonAbandoned
は呼び出されないため、onAbandoned は無視できます。(I02c36)複数の TextUnit 間の算術演算が非推奨になりました。Int.sp や Int.em などの拡張関数を優先するため、TextUnit.Sp 関数と TextUnit.Em 関数が非推奨になりました。(I48369)
明示的に宣言されたパブリック リソースを持たないライブラリ内のリソース(public.xml 経由など)が、デフォルトで非公開になりました。(Ia1dcc、b/170882230)
ScrollableColumn と ScrollableRow が非推奨になりました。スクロールが必要な大きいコンテンツの場合、ScrollableColumn は LazyColumn よりも効率性が劣ります。これは、LazyColumn で行えることが表示要素の構成、測定、描画のみであるためです。ユーザーの効率を考慮して、ScrollableColumn と ScrollableRow のサポートを終了し、代わりに LazyColumn と LazyRow の使用を奨励することにしました。この場合でも、ユーザーが遅延動作を不要と判断した場合は次のような修飾子を直接使用できます。Column(Modifier.verticalScroll(rememberScrollState()))(Ib976b、b/170468083)
LazyColumn / LazyRow / LazyVerticalGrid のスコープのための新しい
items(count: Int)
ファクトリ メソッド。items(items: List)
とitemsIndexed(items: List)
が拡張関数になりました。そのため、使用するときは手動でインポートする必要があります。Arrays の新しい拡張オーバーロードはitems(items: Array)
とitemsIndexed(Array)
です。(I803fc、b/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() を追加しました。(I90cf5、b/175899543、b/170155556、b/170155429)
- 非推奨の focusObserve を削除しました。代わりに onFocusChanged または onFocusEvent を使用してください。(I3ecb9、b/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
に変更しました。(Ia4502、b/171464963) - Color.useOrElse() の名前を Color.takeOrElse() に変更しました。(Ifdcf5)
- 使用されていない DpInverse、DpSquared、DpCubed の各クラスを削除しました。(I4d62b)
- Constraints#satisfiedBy の名前を isSatisfiedBy に変更しました。(I9cf5c)
- layoutnode 境界が変更されたときに、オーナーに通知するコールバックを追加します。(I72fd1)
- Unspecified 定数を持つインライン クラスに isSpecified、isUnspecified、useOrElse を追加しました。(I93f7b、b/174310811)
[Abstract]ComposeView API を拡張することにより、コンポジションを破棄後に再作成して、Compose ベースのビューをリサイクルできるようにしました。子コンポジションを作成するためのウィンドウ スコープの Recomposer と ComposerReference をインストールおよび検出するための API を追加します。
[Abstract]ComposeViews のコンポジション破棄戦略を設定するための ViewCompositionStrategy を追加します。デフォルトでは、ウィンドウのデタッチ時に破棄されます。(I860ab)
Any.identityHashCode() 公開 API を削除しました。(I025d7)
toStringAsFixed API を削除し、String.format を直接使用するようにしました。(Iaba6b)
foundation の Strings.kt に切り替えを追加しました。(I4a5b7、b/172366489)
nativeClass を ui モジュールに移動し、内部化しました。equals 実装での nativeClass の使用を更新して、代わりに「is MyClass」を使用するようにしました。(I4f734)
Modifier.focus() と Modifier.focusRequester() を非推奨としました。代わりに Modifier.focusModifier() と Modifier.focusReference() を使用してください。(I75a48、b/175160751、b/175160532、b/175077829)
Selectable の更新を SelectionManager に通知するために SelectionRegistrar.notifySelectableChange を導入しました。(I6ff30、b/173215242)
さまざまなアウトライン実装の境界四角形を取得できる Outline.bounds プロパティを導入しました。(I16e74、b/175093504)
TestUiDispatcher を非推奨としました。代わりに Dispatchers.Main を使用してください。(Ic171f、b/175385255)
ImeOptions と KeyboardOptions がデータクラスではなくなりました(I3c898、b/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 でアクセスできるようになりました。(I87c57、b/173086397)
animate()
がanimateAsState()
に置き換えられました。T
ではなくState<T>
を返します。これにより、State 値が読み取られる範囲に無効化スコープを絞り込めるため、パフォーマンスが向上します。(Ib179e)- Semantics ロール API を追加し、クリック可能、選択可能、切り替え可能な SemanticsModifier にパラメータとして Role を追加しました。また、それを Slider が使用できるように Modifier.progressSemantics を変更しました。(I216cd)
- 新しいコルーチン ベースの API
Animatable
が、アニメーション間の相互排他的性を保証します。- 新しい DecayAnimationSpec で多次元の消滅アニメーションをサポートしました。
- (I820f2、b/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 を使用してください。(Idbf1b、b/175156384)
- Modifier.focusObserver が非推奨になりました。代わりに Modifier.onFocusChanged または Modifier.onFocusEvent を使用してください。(I30f17、b/168511863、b/168511484)
- 一時停止ポインタ入力 API について、HandlePointerInputScope の名前を AwaitPointerEventScope に変更し、handlePointerInput() の名前を awaitPointerEventScope() に変更しました。(Idf0a1、b/175142755)
- Autofill API が試験運用版 API になり、オプトインが必要になりました。(I0a1ec)
- FocuSRequester インスタンスを作成するための非構造化宣言を追加しました(I35d84、b/174817008)
- accessibilityLabel の名前を contentDescription に変更し、accessibilityValue の名前を stateDescription に変更しました。(I250f2)
- カスタム イベントが一時停止ポインタ入力 API から削除されました(Ia54d5、b/175142755)
- SelectionRegistrar にいくつかの新しい関数を導入しました。また、onPositionChange の名前を notifyPositionChange に変更しました。(Ifbaf7)
- 「内部」としてマークした LayoutNode のメンバーを増やしました(I443c6)
- LayoutInfo が導入され、ツールとテストで使用できるようになりました(I9b190)
- AndroidOwner が内部に隠蔽されました。(Ibcad0、b/170296980)
- ExperimentalPointerInput アノテーションを削除しました(Ia7a24)
- ネストされたスクロール システムを追加しました。詳細については、Modifier.nestedScroll をご覧ください(I36e15、b/162408885)
- subcomposeInto(LayoutNode) が内部に隠蔽されました。(Id724a)
Applier
インターフェースが変更され、トップダウンではなくボトムアップでツリーのビルドが簡素化されました。insert()
メソッドの名前がinsertTopDown()
に変更されました。新しいメソッド
insertBottomUp()
が追加されました。Applier は、編集対象のツリーにノードを挿入する際に、
insertTopDown()
またはinsertBottomUp()
のうちパフォーマンスが優れているほうを使用します。LayoutNode
やView
などの一部のツリーは、トップダウンよりボトムアップのほうが効率的にビルドできます。この変更の前は、ボトムアップを実装するために大量の挿入が必要でした。パフォーマンスを向上させるためにボトムアップの構築を必要とするすべての Applier にボトムアップをコピーする必要があったためです。この変更により、Applier
はinsertBottomUp()
とinsertTopDown()
をオーバーライドし、それぞれボトムアップとトップダウンでツリーをビルドするようになりました。(Icbdc2)dismissOnBackPress プロパティと dismissOnClickOutside プロパティを AndroidDialogProperties に追加しました。これにより、ダイアログの onDismissRequest ラムダが呼び出されるタイミングを設定できます。(If5e17)
ラスター化されたアセット形式(PNG など)または VectorDrawable からの Painter オブジェクトの不透明な読み込みを処理できるように、painterResource API を追加しました。コンシューマは事前にアセットのタイプを判別する必要がなくなり、このメソッドを呼び出して Image コンポーザブルまたは Painter 修飾子で使用する Painter オブジェクトを取得できます。(I2c703、b/173818471)
子孫のセマンティクスをクリアして新しいセマンティクスを設定できるように、Modifier.clearAndSetSemantics を追加しました。(I277ca)
ContentDrawScope を DrawScope と同じく ui-graphics モジュールに移動しました。(Iee043、b/173832789)
ストロークが適用されるシェイプにさまざまなパターンを提供する PathEffect Graphics API を導入しました。NativePathEffect の使用が非推奨になり、代わりに PathEffect の Expect / Actual 実装を導入しました。(I5e976、b/171072166)
Espresso のアイドル状態リソースの Compose がサポートするバリアントとして、IdlingResource インターフェースを Compose に追加しました。これらのインターフェースは ComposeTestRule により登録と登録解除ができます。(I433f3)
ComposeIdlingResource のグローバルな登録および登録解除と、ComposeIdlingResource へのクロックのグローバルな登録および登録解除を削除しました。(I32660)
バグの修正
- オフセット修飾子のラムダが Float ではなく IntOffset を返すようになりました。(Ic9ee5、b/174137212、b/174146755)
SlotTable、SlotReader、SlotWriter を公開 API から削除しました。これらは、以前 InternalComposeAPI としてマークされていました。現在は Compose モジュールの内部にあります。
コンポジション情報の抽出に使用するため、CompositionData と CompositionGroup が UI-Tooling API に代わって追加されました。これらは公開されていますが、UI-Tooling API が解釈する未加工の情報を提供するので、UI-Tooling API の外部での使用は想定されていません。(I31a9c)
ShaderBrush をリファクタリングして、描画環境のサイズ設定情報を利用できる場合にシェーダー インスタンスを遅延作成できるようにしました。これを利用すると、カスタムの DrawModifier を実装しなくても、コンポーズ時にコンポーザブルの描画境界全体を占有するグラデーションを定義できます。
グラデーション関数コンストラクタ API を非推奨とし、代わりに Gradient オブジェクトのファクトリ メソッドを導入しました。(I511fc、b/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 ファイルを作成しました。(Id6044、b/173834241)
- Modifier.drawLayer の名前を Modifier.graphicsLayer に変更しました。また、API のフィードバックに従って、関連するクラスを GraphicsLayer に更新しました。(I0bd29、b/173834241)
- 新しいメソッド placeable.placeWithLayer() および placeable.placeRelativeWithLayer() が追加されました。これにより、カスタム レイアウトとレイアウト修飾子で、描画用のグラフィック レイヤを導入して子を配置できるようになります。まず、再描画を最適化できるので、子を移動する必要があるときにコンテンツを再描画せずに済みます。次に、子に描画変換を適用できます。(Ibd8f6、b/170296989、b/171493718、b/173030831)
- SubcomposeLayout 宣言から
<T>
が削除されました。現在は、タイプを指定せずにこれを使用できます。(Ib60c8) - Modifier.scale API / Modifier.rotate API を drawLayer 用のコンビニエンス API として追加しました。
Modifier.drawOpacity
の名前をModifier.alpha
に変更しました。Modifier.drawShadow
の名前をModifier.shadow
に変更しました(I264ca、b/173208140)
- PointerInputData の uptime フィールドと position フィールドを null 値非許容にしました。(Id468a)
- MaterialTheme は、選択ハンドルと選択背景に正しい色を設定するようになりました。非マテリアル アプリでは、AmbientTextSelectionColors を手動で使用して、選択用の色をカスタマイズできます。(I1e6f4、b/139320372、b/139320907)
- ホスト ウィンドウがフォーカスされているかどうかをチェックする WindowManager.isWindowFocused と、onWindowFocusChanged コールバックを提供する WindowFocusObserver を追加しました。(I53b2a、b/170932874)
- TransformOrigin API を更新し、
pivotFractionX
およびpivotFractionY
をcomponent1
およびcomponent2
として返す非構造化構文を追加しました(If43c4、b/173586560) - Compose のガイドラインとの整合性を確認するため、コンポーズ可能なラムダ パラメータの名前と位置に対する lint チェックを追加しました。また、lint チェックおよびガイダンスに従って、後置ラムダの名前として
children
を使用する一部の API をcontent
に移行しました。(Iec48e) - キーイベントがディスパッチされたときに Alt、Ctrl、Meta、Shift のいずれかの修飾キーが押されたかどうかをチェックする API を追加しました。(I50ed9)
- 新しい
Modifier.drawLayer()
オーバーロードを追加しました。これは、新しい GraphicsLayerScope でラムダブロックを受け取ります。そこでは、状態の変化が生じたときに再コンポジションと再レイアウトをスキップできるようにレイヤ パラメータを定義します。DrawLayerModifier は、そのロジックを LayoutModifier の placeable.placeWithLayer() メソッドに移動するための準備として、内部に隠蔽されました(I15e9f、b/173030831) Ambient
という接尾辞を持つ Ambient が非推奨になり、その他の Ambient と Compose API のガイドラインに沿って、Ambient という接頭辞を持つ新しいプロパティに置き換えられました。(I33440)androidx.compose.ui.text.Typeface
をandroidx.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 を設定できるようになりました(I711f7、b/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 を使用してください。(Ie9d02、b/172562222)
- Alignment インターフェースが更新され、機能するようになりました。(I46a07、b/172311734)
- 新しい一時停止ポインタ入力を使用する、タップ、ダブルタップ、長押し、プレス操作のジェスチャー検出器が追加されました。ユーティリティもいくつか追加されたので、デベロッパーは独自のジェスチャー検出器を簡単に作成できます。(I00807)
LayoutIdParentData
用のid
の名前がlayoutId
に変更されました。Measurable.id
の名前がMeasurable.layoutId
に変更されました。(Iadbcb、b/172449643)- 回転、ズーム、パンを検出するためのヘルパーを含む新しいマルチタッチ ジェスチャー検出器が追加されました。(Ic459d)
- SweepGradientShader API と SweepGradientBrush API を導入しました。(Ia22c1)
- テストの時間制御(TestAnimationClock とその使用方法)が試験運用版になりました(I6ef86、b/171378521)
コルーチン ベースのスクロール API を追加しました。
LazyListState.snapToItem および LazyListState.smoothScrollBy とともに、スクロール制御用の低レベル API を追加しました。これらの API は、スクロールが終了するまで待機してから戻るスクロールを制御するための一次停止インターフェースを提供します。(Ie5642)
Modifier.focusable が foundation に追加されました。これを使用して、適切なセマンティクスとユーザー補助機能を備えたフォーカス可能な動作をコンポーネントに追加できます。(I41eb9、b/152525426、b/162865824)
clock
に委任できる AnimationClockTestRule のメソッドとプロパティのデフォルト実装を提供しました(I7ea3d、b/173399709)AndroidComposeTestRule がカスタム アクティビティ ランチャーを受け入れられるようになりました(Ib8288、b/153623653、b/154135019)
TextLayoutResult.getLineVisibleEnd が非推奨になりました。その代わりとして、TextLayoutResult.getLineEnd に新しいパラメータ visibleEnd が導入されました。(I73282)
TextFieldValue API の更新
- TextFieldValue.composition を読み取り専用にしました
- 無効な選択範囲に対してスローされる例外を削除しました(I4a675、b/172239032)
テキスト読み上げエンジン用に TtsAnnotation のサポートを追加しました。(I54cc6)
コルーチンでアニメーションを実行するための新しい API を追加しました(Ied662)
バグの修正
- Box のアライメント パラメータの名前が contentAlignment に変更されました。(I2c957)
- offsetPx 修飾子の名前が offset に変更されました。現在は、State ではなくラムダ パラメータを取得します。(Ic3021、b/173594846)
- TextInputService#onStateUpdated に resetInput パラメータを追加しました(I3e8f5、b/172239032、b/171860947)
- コンポーズ可能な関数に Modifier パラメータの lint チェックを追加しました。この lint チェックでは、パラメータの名前、戻り値の型、デフォルト値、順序が Compose のガイドラインに従っているかどうかが確認されます。(If493b)
- TestAnimationClock が MonotonicFrameClock によって作動するようにするオプションを一時的に追加しました。(I1403b、b/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 パラメータを計算する演算子メソッドを追加しました。
- (Ic96a6、b/172291582)
- Alignment を作成するための BiasAlignment ファクトリと BiasAbsoluteAlignment ファクトリが追加されました。(Iac836、b/169406772)
- デベロッパーがフォーカスを強制的にクリアできるようにしました。(I90372)
- Compose 内のビューにエレベーションが描画されないバグが修正されました。(If7782)
- 命名規則が Modifier.drawBehind と一致するように、ContentDrawScope 内に onDrawBehind API を作成しました。(I4fc3a、b/171955269)
- レイヤ API での 3D 変換 rotationX / rotationY を補完するように、カメラ距離のサポートを追加しました。(I40213、b/171492100)
- コールバックなしの SelectionContainer を追加しました(Ibfadb)
- ExperimentalSubcomposeLayoutApi アノテーションを削除しました。@OptIn を追加せずに SubcomposeLayout を使用できるようになりました(I708ad)
- FirstBaseline と LastBaseline を androidx.compose.ui.layout パッケージに移動しました(Ied2e7)
- わかりにくかったため、drawShadow() 修飾子から不透明度を削除しました。(I82c62、b/171624638)
- MeasureResult を MeasureScope の外に移動しました。(Ibf96d、b/171184002)
- いくつかのレイアウト関連シンボルを androidx.compose.ui から androidx.compose.layout.ui に移動しました。(I0fa98、b/170475424)
- 非推奨の FocusState2 を削除しました(I686cb、b/168686446)
- ZIndexModifier が内部用になりました(I1808b、b/171493718)
- 非 null の Size を返して不要なボックス化を回避するように、Size パラメータにおける lerp メソッドの戻り値の型を更新しました。(Ib0044)
- kotlinx-coroutines-test の runBlockingTest を使用してコンポジション フレーム イベントを待機するために Compose の MonotonicFrameClock に依存するコードをテストするための、TestMonotonicFrameClock を追加しました(I4402f)
- GestureScope.localToGlobal を削除しました(I15299、b/171462785)
onAllNodesWithSubstring
ファインダーを追加しました(I81dd7、b/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 が追加されました。アンビエント値がまだ提供されていない場合にのみ設定されるアンビエント値を指定するために使用できます。(Id6635、b/171024925)
- BaseTextField が非推奨になりました。代わりに BasicTextField を使用してください。(I896eb)
- ui-test-junit4 モジュールを導入しました(Ib91f8)
relativePaddingFrom
の名前がpaddingFrom
に変更されました。レイアウト境界からテキスト ベースラインまでの距離を指定する際に便利なように、paddingFromBaseline
修飾子が追加されました。(I0440a、b/170633813)- SideEffect API と DisposableEffect API との整合性を持たせるために、LaunchedTask の名前が LaunchedEffect に変更されました。ベスト プラクティスを促進するために、サブジェクト パラメータのない LaunchedEffect は許可されません。(Ifd3d4)
- 構成が更新されたときに再コンポーズするリソース コンポーザブルを導入しました。(I6387c、b/167352819)
- Recomposer は、作成時に CoroutineContext が必要になりました(Ic4610)
- 複数の
Modifier.zIndex()
を適用する場合はzIndex
値を合計します。以前は最初のものが優先されていました。(Ic514c、b/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 をインターフェースにしました。(I1a087、b/170461665)
- AlignmentLine のマージ関数を非表示にしました。(I9da1a、b/170612900、b/170611568)
- コンポーズされた修飾子でインスペクタ情報を指定する機能を追加しました(Idee08、b/163494569)
- SelectAll オプションを選択メニューに追加しました(Ief02b)
- ドキュメントに合わせて、デフォルト ピボット パラメータである center を取るように DrawTransform.rotate を更新しました。
- 他の変換メソッドに合わせて、ピボット ポイントのオフセットを使用するように DrawScope.rotateRad を更新しました。
- ピボットの x 座標と y 座標に浮動小数点数を使用する DrawScope.rotateRad オーバーロードが非推奨になりました。
- (Iffcbb、b/170434992)
バグの修正
- MissingGetterMatchingBuilder の API lint チェックが androidx で有効になりました(I4bbea、b/138602561)
- テストを追加しました。(I6b8ae)
- ComposeTestRule で遷移が有効になりました。ComposeTestRule から、カーソルの点滅を有効にするオプションを削除しました。(If0de3)
- KeyboardCapitalization IME オプションを追加しました(I8ac38)
- 単一行のキーボード オプションを CoreTextField に追加しました(I72e6d)
- SimpleContainer を PopupTestUtils.kt に移動しました(I65c3e)
- Compose 全体での使用方法をわかりやすく表現するために、Radius API の名前を CornerRadius に変更しました。負のコーナー半径が 0 に固定されることを示すようにドキュメントを更新しました。(I130c7、b/168762961)
ACTION_DOWN
を除くすべてのアクションで、onTouchEvent について false を返す子 Android ビューに MotionEvents を継続的に送信することで、Android の相互運用性を改善しました(I94c5a、b/170320973)- Box がインライン関数になりました。(Ibce0c、b/155056091)
外部からの協力
AnnotatedString.capitalize
とAnnotatedString.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 を継承するようになりました。また、これを明示的に設定するためのオプションが追加されました。(I64966、b/143778148、b/143778149)
消費データが変更可能になりました。また、消費を行う拡張関数の呼び出しが、新しい PointerInputChange を返さないようになり、その代わりに指定された PointerInputChange を変更できるようになりました
これは、ユーザーコードで他のポインタデータを編集できないよう PointerEvent データを変更可能にする 2 段階プロセスの最初のステップです。2 つ目のステップで、
PointerInputFilter.onPointerEvent(...)
からの戻り値の型List<PointerInputChange>
を削除します(Id067e)Text での選択と、デモが無効になりました(Ie7e97)
onGloballyPositioned がインライン関数になりました(I15830)
OnPositionedModifier が OnGloballyPositionedModifier という名前に、onPositioned() が onGloballyPositioned() という名前に変更されました(I587e8、b/169083903)
hasPendingMeasureOrLayout プロパティが Owner に追加され、Owner に保留中のレイアウト作業があるかどうかを伝えられるようになりました(I3d9f8、b/169038599)
プログラムでフォーカスをクリアするために API を追加しました(Ie1dc2、b/161487952)
PointerInputFilter.onPointerInput(...)
が削除されました。代わりにPointerInputFilter.onPointerEvent(...)
を使用してください(I6f04a)Size の変更
- Size.getFlipped が削除されました
- Size.rem が削除されました
- Size.truncDiv が削除されました(Ief44d、b/169790720)
インライン クラス向け標識値の標準化の一環として、他のインライン クラスと整合するよう Color.Unset が Color.Unspecified という名前に変更されました(I97611、b/169797763)
TextOverflow.None が導入されました。オーバーフローが None の場合、Text はそれ以上オーバーフローを処理せず、実際のサイズを LayoutNode に報告するようになりました(I175c9、b/158830170)
API の一貫性を確保するため AnnotatedString.Builder.addStringAnnotation 内の scope パラメータが tag という名前に変更されました(I7c8cb)
バグの修正
- LazyColumn/Row のスクロール パフォーマンスが、スクロールごとのサブコンポジションでの作業を軽減することで改善されました。Composition クラス用の新しい hasInvalidations() メソッドが追加されました。Recomposer の hasPendingChanges() メソッドは hasInvalidations() という名前に変更されました(Ib2f32、b/168293643、b/167972292、b/165028371)
- Float.POSITIVE_INFINITY ではなく Float.NaN になるよう Size.Unspecified パラメータが更新されました。無制限の Sizes だけでなく Size.Unspecified もチェックするよう Painter の実装が更新されました(I95a7e)
- カスタム Layouts での place() 呼び出しの順序で、子の描画順序を定義できるようになりました(Ibc9f6)
- ユーザー補助のために AnnotatedString から SpannableString への変換がサポートされるようになりました(Ief907)
- 可能な限りリフレクションの使用を回避するため、古いプラットフォームにある android クラス向けのスタブが追加されました(Ia1790)
- バグの修正: ソフトウェア キーボードの表示によってアプリが翻訳された場合に、ポインタ入力の座標が不正確になります(Ic4cec、b/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() を追加しました。(I657cf、b/154108792)
- 長いクリック セマンティクス アクションを追加しました。(I6281b、b/156468846)
- FocusManager を非公開にしました。(I7872f)
実装を更新して、DrawModifier にオプションのプロパティを追加せずに専用の DrawCacheModifier 実装を作成するようにしました。
各種メソッドのドキュメントを更新しました。(Ibd166)
オブジェクト作成を回避するために、TextRange をインライン化しました。(Id034b)
PlacementScope#parentWidth と PlacementScope#parentLayoutDirection を、カスタム レイアウトのプレースメント ブロックから読み取ることができなくなります。(Icc1ae、b/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 拡張関数をプロパティに移行しました。
- (I8f5c7、b/168762961)
- foundation.Box は非推奨になりました。代わりに foundation.layout.Box を使用してください。(Ie5950、b/167680279)
- Stack が Box に名前変更されました。compose.foundation.layout にある新しい Box を優先して、既存の Box は非推奨になります。Box の子が複数ある場合、新しい Box は子を互いに重ね合わせるように動作します。これは、Column と同じように動作していた以前の Box とは異なります。(I94893、b/167680279)
- Box 装飾パラメータが非推奨になりました。Box に装飾やパディングを付ける場合は、代わりに修飾子を使用します。(Modifier.background、Modifier.border、Modifier.padding)(Ibae92、b/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 を非推奨としました。
- (If086a、b/167737376)
- rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled、textInputServiceFactory を @VisibleForTesting でアノテーションし、内部 API 化して kdoc を非表示にしました。(I554eb、b/168308412)
- デフォルトの選択を無効にし、予期しない動作を回避するために、SelectionContainer を Top から削除しました。代わりに SelectionContainer を使用することで、選択する必要があるコンテンツをラップできます。(I8dfe0、b/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
が無効化を処理します。(Ica72b、b/162061312)Offset パラメータを使用する Size API の演算子メソッドを削除しました。これらのオペレーションの結果は不明確であり、結果の型は予期しないものです。例: size - offset は相違のあるオフセットまたはサイズ結果を返すか?
また、Size クラスの非推奨になったメソッドを削除しました。(Iec902、b/166514214)
バグの修正
- LazyColumn のアイテムが誤って描画される問題を修正しました。この問題は、条件によってはクラッシュも伴っていました。(Ibcf17、b/163066980、b/165921895)
- DpConstraints とそれを使用する API が非推奨になりました。(I90cdb、b/167389835)
createAndroidComposeRule
とAndroidInputDispatcher
をandroidx.ui.test.android
からandroidx.ui.test
に移動しました(Idef08、b/164060572)- レイアウト API の gravity の用法で、名前が align または alignment に一貫して変更されました。(I2421a、b/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 境界が変更されたときに、コールバックを削除してオーナーに通知します。(If654e、b/166106882)
- evenOdd または NonZero パスの塗りつぶし規則に従ったシェイプのカットアウトをサポートするために、ベクター グラフィック パスでの filltype パラメータのサポートを追加しました。(I43dd2)
- Uptime と Velocity がインライン クラスになりました(I48f4a)
- Duration がインライン クラスになりました(I565eb)
- layoutnode 境界が変更されたときに、オーナーに通知するコールバックを追加します。(Ic40b3)
オフセットと半径を指定した Rect 関数コンストラクタによって、左、上、右、下ではなく、左、右、上、下の順序で Rect が作成される問題を修正しました。
Rect で非推奨のコンパニオン メソッドを削除し、関数コンストラクタに置き換えました。
Rect.kt にメソッドを確認するテストを追加しました。(I08460、b/165822356)
バグの修正
- MutableRect(変更可能な長方形)を追加しました。(I71bd2、b/160140398)
- Matrix4 が Matrix に変更されました。vectormas パッケージの他のすべての部分が削除されました。(Ibd665、b/160140398)
コンポーズ可能な関数の呼び出し規則が変更されました。これは互換性を破るバイナリの変更です。このバージョンの Compose コンパイラ プラグインで動作するには、すべてのライブラリを再コンパイルする必要があります。
変更された API は明示的なオプトインがあるコンパイラ API だけであるため、ソースレベルで互換性を破る変更はありません。(I7afd2、b/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 を使用してコンポーズされる場合は除きます。(I29b1e、b/163871221)FocusState2
が非推奨になり、FocusState
に置き換えられました。(Ia8b79、b/160822876、b/160923332)- 非推奨になった AndroidView のオーバーロードが削除されました。(I946b9、b/163802393)
- カスタム出力では、1 つ以上のセッターをスキップし、その出力とは関係なく再コンポーズできることを宣言できるようになりました。(Ibbd13)
ベクタークラスが変更され、データクラスではなくなりました。同じオブジェクト インスタンスがコンポジションに使用されるためです。
ベクターの内容が変わる場合に条件付きで再描画できるように、VectorPainter の mutableStateOf フラグが追加されました。
VectorComponent インスタンスがリファクタリングされて VectorPainter の一部となり、コンポジション全体で再利用されるようになりました。
GroupComponent と PathComponent が更新されて、名前フィールドが変更可能になりました。(Ieae45、b/151378808)
onChildPositioned
とOnChildPositionedModifier
が削除されました。 代わりに子レイアウトでonPositioned
とOnPositionedModifier
を使用する必要があります。(I4522e、b/162109766)オフセットがインライン クラスになりました。(Iaec70)
SelectionContainer に修飾子パラメータを追加しました。(I4aada、b/161487952)
非推奨になった FocusModifier を削除しました。(I0b4ba、b/160922116、b/160821157、b/162441435、b/160822875、b/160921940)
SemanticsPropertyKey
にmergePolicy
ラムダを追加しました。これを使用して、mergeAllDescendants セマンティクスのマージに関するカスタム ポリシーを定義できます。デフォルトのポリシーでは、すでに存在する場合は親の値が使用され、それ以外の場合は子の値が使用されます。(Iaf6c4、b/161979921)Constraints がインライン クラスになりました。(I88736)
一般的なフォーカス ロジックを AndroidComposeView から移動させる FocusManager を追加しました。(I528ef、b/161487952、b/162206799)
アルファ版リリースの PointerEventPass の名前を更新しました。(Ifda6f)
IntOffset がインライン クラスになりました。(Iac0bf)
IntSize がインライン クラスになりました。(I2bf42)
PlacementScope.placeAbsolute()
の名前がPlacementScope.place()
に変更され、以前のPlacementScope.place()
の名前がPlacementScope.placeRelative()
に変更されました。その結果、PlacementScope.place()
メソッドは、右から左(RTL)へのコンテキストで、自動的に位置をミラーリングしなくなります。必要な場合は、代わりにPlacementScope.placeRelative()
を使用してください。(I873ac、b/162916675)AlertDialog はボタンに FlowRow を使用するようになりました。(I00ec1、b/161809319、b/143682374)
一部のテスト ユーティリティは、所属している場所にないため、非公開になりました。今後一般公開される予定です。(I32ab1)
ポインタ入力コードの編成をリファクタリングしました。(Ie3f45)
PxBounds が非推奨になり、Rect に置き換えられました。PxBounds のすべての使用を更新して Rect に置き換え、移行に役立つ適切な非推奨およびアノテーションへの置き換えを追加しました。(I37038、b/162627058)
非推奨の KeyEvent2 を削除しました。代わりに KeyEvent を使用してください。(Ied2d0、b/162097587)
KeyEvent に unicode プロパティが追加されました。このプロパティを使用すると、指定したキーとメタキーの状態の組み合わせにより生成される Unicode 文字を取得できます。(If3afc)
DelayUp カスタム イベントと関連クラスは、変更される可能性が高いため、オプトイン API になりました。(I56d6f)
不要になった 2 つの PointerEventPass が削除されました。(I3dd9d)
Paragraph.paint にパラメータ color、shadow、TextDecoration を追加しました。この関数を使用すると、不要な Paragraph の再作成を回避できます。(I81689)
バグの修正
- TextField から onFocusChanged コールバックを削除しました。代わりに Modifier.focusObserver を使用してください。(I51089、b/161297615)
- Modifier.drawBorder が非推奨になりました。代わりに Modifier.border を使用してください。Border データクラスは BorderStroke に置き換えられました。(I4257d、b/158160576)
非推奨となった FrameManager の呼び出しを削除しました。
内部コンポーズ API が変更され、
mutableStateof()
などの状態オブジェクトを追跡するオーバーヘッドが減りました。(I80ba6)VerticalScroller と HorizontalScroller が削除されました。代わりに、ScrollableColumn/Row を使用してください。Modifier.drawBackground を削除しました。Modifier.background を使用してください。(I73b0d、b/163019183)
状態を保存する何かが for ループ内で使用されたときにクラッシュする問題が修正されました。savedInstanceState() で同じキーを使用できるようになり、これに合わせて UiSavedStateRegistry の API が調整されました。(I4ab76、b/160042650、b/156853976、b/159026663、b/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 を子で使用してください。(I87f95、b/162109766)
- setViewContent が非推奨になりました。代わりに setContent を使用してください。(I7e497、b/160335130)
- ViewBinding に基づいてレイアウト リソースをインフレート、コンポーズするための AndroidViewBinding API を追加しました。(I081c6)
- KeyEvent2 が KeyEvent に置き換えられました。(I2d770、b/162097585)
- Alt ハードウェア キーのサポートを追加しました。(I9036b)
- FocusManager が非推奨になりました。代わりに Modifier.focus()、Modifier.focusObserver()、Modifier.focusRequester() を使用してください。(I74ae4、b/162211322)
- loadVectorResource は trimPath 属性をサポートします。(I808fe)
- ダイアログを UI に移動しました。(I47fa6)
- 不要になった 2 つの PointerEventPass が削除されました。(I33ca7)
- PointerInteropModifier を実装しました。この機能を使用すると、MotionEvents を受け取り、Android View を実装しているかのように Compose とやり取りできるようになります。(Ieb08c)
- 非推奨のタグ修飾子を削除しました。代わりに layoutId を使用してください。(Idaa05、b/162023919)
- 右から左(RTL)をサポートする API が更新されました。レイアウト方向の読み取りと変更に使用できる LayoutDirectionAmbient が追加されました。Modifier.rtl と Modifier.ltr が削除されました。(I080b3)
- ベクター グラフィックでのパスのトリミングをサポートします。(Ie16c9、b/158188351)
- 必要に応じてカスタム レイアウト修飾子を作成できる Modifier.layout() を追加しました。(I73b69、b/161355194)
- 新しい AndroidView API を追加し、既存の API を非推奨にしました。(I5bcfd)
- Modifier.plus が非推奨になりました。代わりに Modifier.then を使用してください。then により、順序が明確化され、
Modifier.padding().background() + anotherModifier
と書いてチェーンを分断し可読性を下げることが防止されます。(Iedd58、b/161529964) - View 階層内で Compose コンテンツをホストするための [Abstract]ComposeView View サブクラスを追加しました。(I46357)
Row
とColumn
をインライン関数にしました。これにより、使用する際のオーバーヘッドが大幅に削減されます。(I75c10)- SubcomposeLayout を追加しました。これは、測定中に後にならないと使用できない値を使用してサブツリーをコンポーズする場合に、子をコンポーズできるようにする低レベル プリミティブです。たとえば、WithConstraints は SubcomposeLayout を使用せずに実装されています。(I25cc8)
- Compose 階層のルートを基準とする SemanticsNode の相対位置を取得する
SemanticsNode.positionInRoot
を追加しました。(Icdf26、b/161336532) - MotionEvents は、Android から Compose に渡されて、Android に再び返されるようになりました。(I14be8、b/158034713)
- dropdownPopup を削除しました。(I00430)
- カットアウト ディスプレイにおけるポップアップ位置を修正しました。(Idd7dd)
- TextLayoutResult を取得するユーザー補助アクションを追加しました。(I9d6e6)
- RemeasurementModifier を追加しました。レイアウトを同期的に再測定できるようになります。通常、再測定 / 再レイアウトは自動的に行われるため、この機能は必要ではありませんが、スクロール中に LazyColumnItems 内で使用できます。(I5f331、b/160791058)
- getLineEllipsisOffset / getLineEllipsisCount を削除しました。代わりに getLineVisibleEnd / getLineEnd / isLineEllipsized を使用してください。(I85aa2)
- 推奨する方法を示すためにマークとアノテーションを追加しました。(I66b20)
- TextLayoutResult でより多くの行の API が公開されます。(I79bd2)
- 組み込みの単位を変換するための組み込みのベクター コンバーターに Foo.VectorConverter を介してアクセスできるようになりました。例: Dp.VectorConverter、Color.VectorConverter、Float.VectorConverter など。(I3e273)
バグの修正
- 広範な API の修正に対応しました。(I077bc)
- 未使用の OffsetBase インターフェースを削除しました。
- 一貫性のある API サーフェスを持つように Offset クラスと IntOffset クラスを調整しました。
- Offset API に合わせて、IntOffset.Origin を IntOffset.Zero に名前変更しました。
- ユーザーが独自の Canvas インスタンスを作成できるように、Canvas インターフェースから nativeCanvas メソッドを削除しました。
- lateinit の代わりに非 null パラメータとなり、フィールドの非 null 可能性が確保されるように DrawScope をリファクタリングするため、スタブ EmptyCanvas クラスを作成しました。
- ClipOp 列挙型の名前をパスカルケースに変更しました。
- FilterQuality 列挙型の名前をパスカルケースに変更しました。
- StrokeJoin 列挙型の名前をパスカルケースに変更しました。
- PointMode 列挙型の名前をパスカルケースに変更しました。
- PaintingStyle 列挙型の名前をパスカルケースに変更しました。
- PathFillType 列挙型の名前をパスカルケースに変更しました。
- StrokeCap 列挙型の名前をパスカルケースに変更しました。
- DrawCache の実装が更新され、lateinit パラメータを使用しなくなりました。
- DrawScope が更新され、fillPaint および strokePaint 内部パラメータの遅延委任を使用しなくなりました。
- オーバーヘッドを削減するため、Box の使用を回避するように Image composable を更新しました。
- Outline クラスを更新して @Immutable アノテーションを追加しました。
- PathNode を更新して、各パス手順に @Immutable アノテーションを追加しました。
- Vector サブコンポジションを更新し、等価性に関する冗長な条件付きチェックを削除しました。Compose はすでにこの処理に対応しているためです。
- Rect コンパニオン コンストラクタ メソッドが非推奨になり、関数コンストラクタに置き換えられました。
- Brush のクラスと関数コンストラクタを @Immutable および @Stable API で更新しました。
- PascalCase となるように VertexMode 列挙型を更新しました。
- DrawScope selectPaint メソッドを更新し、ペイントでストローク パラメータが変更されている場合は、条件付きで上書きできるようにしました。
- Size を更新して API の分解を追加し、UnspecifiedSize を Unspecified に名前変更して、未使用のメソッドを削除しました。
- API レベルに応じて Android フレームワークの BlendMode と PorterDuff モードを適切にマッピングするように Compose BlendMode API の使用方法を更新しました。BlendMode#isSupported API を導入しました。この API は可能性クエリとして機能し、使用する前にデバイスで BlendMode がサポートされているかどうかを判断できます。(I0ef42)
- Lazy リストの itemContent パラメータとして LazyItemScope が追加されました。これにより、親の最大サイズを塗りつぶすための修飾子が提供されます。アイテムでビューポートを塗りつぶす必要があるが、アイテムが制約なしで測定されるため通常の Modifier.fillMaxSize() が機能しない事例を解決できます。(Ibd3b2、b/162248854)
SemanticsNodeInteraction.performPartialGesture
を削除しました。代わりにSemanticsNodeInteraction.performGesture
を使用してください(Id9b62)LazyColumnItems
の名前がLazyColumnFor
に変更されました。LazyRowItems
の名前がLazyRowFor
に変更されました。(I84f84)foundation.shape.corner
パッケージがfoundation.share
にフラット化されました。(I46491、b/161887429)AndroidComposeTestRule
の名前をcreateAndroidComposeRule
に変更しました。(I70aaf)TextLayoutResult
にさらに API を追加しました。(Id7e04)- material の
FilledTextField
がTextField
に、foundation のTextField
がBaseTextField
に名前変更されたため、最もシンプルで望ましい API を簡単に見つけて使用できるようになりました。(Ia6242、b/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 に置き換えられました。(I46919、b/160822875、b/160922136)
- フォーカス状態の変化を監視するための修飾子を追加しました。(I05866、b/160924455、b/160923326)
- フォーカスの変更をリクエストするための修飾子を追加しました。(I8dd73、b/161182057、b/160924778)
- ツールバー メニューを調整して、コピー、切り取り、貼り付けが適切に表示されるようにしました。(Id3955)
- 単一値のセマンティクス プロパティで呼び出しスタイルが使用されるようになりました。たとえば、「semantics { hidden = true }」は、現在は
semantics { hidden() }
として記述されます。(Ic1afd、b/145951226、b/145955412) - FocusModifier に代えて Modifier.focus を追加しました。(Ib852a、b/160924778)
- TextField の選択用に FloatingToolbar を追加しました。(Ie8b07)
- キー入力関連 API に試験運用版 API アノテーションを追加しました。(I53c0a)
- すべてのフォーカス関連の API に試験運用版 API アノテーションを追加しました。(I53b24、b/160903352)
- FocusDetailedState に代わるものとして FocusState2 を追加しました。(I0a3ba、b/160822595)
- Focus API 用の @OptIn アノテーションである ExperimentalFocus を追加しました。(I1544b、b/160820961)
- レイアウトからの整数ピクセル境界を表す IntBounds ユニットクラスが追加されました。PopupPositionProvider の API が更新され、これを使用するようになりました。(I0d8d0、b/159596546)
- Applier には、コンポジションを破棄するための clear() メソッドが必要になりました。(Ibe697)
- KeyEvent が非推奨になり、KeyEvent2 に置き換えられました。(I68730)
- 新しいオプションのフラグ useUnmergedTree がテスト ファインダーに追加されました。(I2ce48)
- LayoutNode API が試験運用版になりました。(I4f2e9)
以下のさまざまなインライン クラスタイプにコピーメソッドを追加しました。
- Offset
- Size
- Radius
- Motion
TransformOrigin
Size.copy コンパニオン オブジェクト メソッドが非推奨になり、インスタンス コピーメソッドに置き換えました。(Ife290、b/159905651)
ポップアップ、ダイアログ、メニューがコンテキストに応じた MaterialTheme を継承するようになりました。(Ia3665、b/156527485)
TextDirection の名前が ResolvedTextDirection に変更されました。(I3ff38)
Layout() 関数の測定ブロックからレイアウト方向のパラメータを削除しました。ただし、測定スコープ オブジェクトを介してコールバック内でレイアウト方向を使用できます。(Ic7d9d)
再利用するため、SelectionHandles をリファクタリングしました。(I420e0)
Clickable が削除されました。Modifier.clickable を使用してください。(I84bdf)
TestTag と Semantics が削除されました。代わりに Modifier.testTag と Modifier.semantics を使用してください。(I15ff0、b/158841414)
この変更が行われる前、compose コンパイラ プラグインは、スコープ内の解決された「composer」に「emit 演算子」メソッドが見つかった場合、@Composable 関数内のコンストラクタの呼び出しに対して自明でないインターセプトを実行していました。(I5205a、b/158123804)
Modifier.testTag との混同を避けるため、Modifier.tag の名前が Modifier.layoutId に変更されました。(I995f0)
Placeable#get(AlignmentLine) から返されるアライメント ラインの Int 位置が非 null になりました。クエリされたアライメント ラインが見つからなかった場合は、AlignmentLine.Unspecified が返されます。(I896c5、b/158134875)
AndroidView composable に修飾子パラメータが追加されました。(I48a88、b/158746303)
Semantics() が非推奨になりました。代わりに Modifier.semantics() を使用してください。(I72407、b/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 を使用してください。(If5110、b/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 を設定するのと同じであるため、削除されました。(I7ef11、b/155075735)
キャンバスを公開するハイレベルの Compose API を更新して、代わりに CanvasScope を公開するようにしました。これにより、ユーザーが独自の Paint オブジェクトを維持管理する必要がなくなります。引き続きキャンバスの利用が必要なユーザーは、drawCanvas 拡張メソッドを使用できます。このメソッドにより、対象のキャンバスに対して Draw コマンドを実行するコールバックが行われます。(I80afd)
WithConstraints 後置ラムダ API が変更されました。2 つのパラメータに代わってレシーバ スコープが設けられ、constraints と layoutDirection に加えて、Dp 単位で指定する minWidth、maxWidth、minHeight、maxHeight プロパティが用意されました。(I91b9a、b/149979702)
LayoutModifier2 の名前が LayoutModifier に変更されました。(Id29f3)
非推奨の LayoutModifier インターフェースが削除されました。(I2a9d6)
Layout と LayoutModifier2 の組み込み測定関数に IntrinsicMeasureScope レシーバを追加しました。これにより、暗黙的に伝播されるレイアウト方向を持つ組み込みクエリ API が提供されます。(Id9945)
Layout と LayoutModifier の子を異なるレイアウト方向で測定できるようになりました。(Ibd731)
同じ親レイアウト内の子の描画順序を制御するため、新しい Modifier.zIndex() が追加されました。DrawLayerModifier の elevation プロパティは名前が shadowElevation に変更され、描画順序を制御しなくなりました。DrawShadow のパラメータの順序が変更され、最初のパラメータは elevation、2 番目のパラメータは shape(デフォルトは RectangleShape)になりました。(I20150、b/152417501)
Owner の onSizeChange と onPositionChange を削除しました。(I5c718)
Constraints2 を追加しました。これは、IntPx ではなく Int 制約値のみをサポートする Constraints のコピーです。今後 IntPx は削除され、すべての整数型の制約が Android のようにピクセルと見なされるようになります。
- また、将来的に IntPxSize に代わるものとして、IntSize を追加しました。(I4b43a)
Alignment を任意の値でインスタンス化できるようになりました。1D Alignment を追加しました。(Ia0c05)
alignToSiblings が Placeable ではなく Measured を受け入れるようになりました。(I5788d)
-
- 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() メソッドを追加しました。(Ibaced、b/152919067)
LayoutCoordinates に positionInParent と boundsInParent を追加しました。(Icacdd、b/152735784)
DrawLayerModifier と drawLayer() で、clipToBounds と clipToOutline のデフォルト値が false になりました。(I0eb8b、b/152810850)
LayoutResult の名前を MeasureResult に変更しました。(Id8c68)
レイアウト修飾子を定義する新しい API として LayoutModifier2 を追加し、LayoutModifier を非推奨にしました。(If32ac)
修飾子と演算子を工場出荷時の拡張機能に置き換えました。(I225e4)
特定のレイヤに対する描画コマンドの表示リストをオフセットできるように、translationX/Y プロパティを追加しました。これは、アニメーションやタッチイベントに応答してコンテンツを移動する場合に便利です。(I8641c)
レイヤ上の特定のポイントを中心とする回転とスケーリングをサポートするため、pivotX パラメータと pivotY パラメータをレイヤ API に追加しました。(Icf7c3)
コンポーズ可能な関数 OnPositioned および OnChildPositioned に代えて、OnPositionedModifier と OnChildPositionedModifier を追加しました。(I2ec8f)
レイアウトに RenderNode を追加できる修飾子 LayerModifier を追加しました。クリッピング、不透明度、回転、スケーリング、シャドウを設定できます。これにより、RepaintBoundary が置き換えられます。(I7100d、b/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.* に移動しました。(Ia74d5、b/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 を作成しました。(I9af9a、b/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 を使用して、ソフトウェア キーボードの表示 / 非表示を切り替えられるようになりました。(I8dc44、b/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 にパディング、枠線、シェイプ、背景のパラメータを追加しました。(I05027、b/148147281)
バグの修正
- テキスト フィールド内の onFocusChange コールバックの名前を onFocusChanged に変更しました。(Ida4a1)
- VerticalScroller と HoriziontalScroller が非推奨になりました。Column / Row の動作とパラメータの組み込みエクスペリエンスをサポートするには、ScrollableColumn と ScrollableRow を使用するか、独自の要素で Modifier.verticalScroll と Modifier.horizontalScroll を使用してください。同様に、ScrollerPosition が非推奨になり、ScrollState に置き換えられました。(I400ce、b/157225838、b/149460415、b/154105299)
runOnIdleCompose
の名前がrunOnIdle
に変更されました。(I83607)- いくつかのテスト API の名前がより直感的にわかりやすいものになりました。findXYZ API という名前はすべて onNodeXYZ に変更されました。doXYZ API という名前はすべて performXYZ に変更されました。(I7f164)
- 新しいコンポジションなしでも ViewGroup 内で Compose UI をコンポーズできるようになりました。例については、ViewInteropDemo をご覧ください。(I9ab0b、b/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 を使用してください。(I4066d、b/155211005)
ディスパッチ中にサブコンポジションを介して PointerInputFilters が削除されると、ポインタ入力ディスパッチがクラッシュを引き起こす問題を解決しました。この問題は解決済みです。(I1f48b、b/157998762)
ディスパッチ中にサブコンポジションを介して PointerInputFilters が削除されると、ポインタ入力ディスパッチがクラッシュを引き起こす問題を解決しました。この問題は解決済みです。(Iab398、b/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. コンパイル時に「静的」と判定されたパラメータは実行時に比較または保存されなくなる。その結果、比較処理が減ってスロット テーブルのサイズが小さくなる。 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 が更新され、コンパイル時パラメータが追加されました。(I60756、b/143464846)非推奨となった LayoutAlign 修飾子を削除しました。(I10877)
RepaintBoundary を削除して DrawLayerModifier に置き換えました。(I00aa4)
Button、FloatingActionButton、Clickable に個別の
enabled
パラメータを追加しました。Button の一部のパラメータの名前と順序を変更しました。(I54b5a)ButtonStyle を別の関数に置き換え、テキスト(文字列)オーバーロードを削除しました。使用方法については、更新済みのサンプルをご覧ください。(If63ab、b/146478620、b/146482131)
アンビエント API を大幅に変更しました。詳細については、ログと
Ambient<T>
のドキュメントをご覧ください(I4c7ee、b/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)