Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(すべての compose パッケージについては、API リファレンス ドキュメントをご覧ください)
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2024 年 11 月 13 日 | 1.7.5 | - | - | 1.8.0-alpha06 |
構造
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.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.8
バージョン 1.8.0-alpha06
2024 年 11 月 13 日
androidx.compose.foundation:foundation-*:1.8.0-alpha06
がリリースされました。バージョン 1.8.0-alpha06 に含まれる commit はこちらをご覧ください。
API の変更
stylusHoverIcon
修飾子を追加します。(Iff20a、b/331289114)AnchoredDraggableState
のconfirmValueChange
を非推奨にしました。状態の変更を拒否するのではなく、許可されていないアンカーをアクティブなアンカーセットに含めず、OverscrollEffect
を使用して、リクエストされたアクションが使用できないことを示します。(Ia717f)- 自動入力マネージャーをインターフェースに変更しました。(I84914、b/376080755)
OverscrollEffect#withoutDrawing
API とOverscrollEffect#withoutEventHandling
API を追加しました。これらの API は、イベントを描画または処理しない、指定されたオーバースクロール効果のラップでインスタンスを作成します。これにより、イベントをディスパッチするコンポーネントとは別のコンポーネントでオーバースクロールをレンダリングできます。たとえば、遅延リスト内のオーバースクロールの描画を無効にして、オーバースクロールを別途上部または他の場所に描画します。(Idbb3d、b/266550551、b/204650733、b/255554340、b/229537244)- テキスト ツールバーに自動入力のサポートを追加しました。(Ie6a4c)
OverscrollConfiguration
とLocalOverscrollConfiguration
のサポートが終了し、rememberPlatformOverscrollFactory
が追加されました。これにより、デフォルトのオーバースクロール実装のインスタンスを作成したり、パラメータをカスタマイズしたりできるようになりました。オーバースクロールを無効にするには、LocalOverscrollConfiguration provides null
ではなくLocalOverscrollFactory provides null
を使用します。グローの色やパディングを変更するには、LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
ではなくLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
を使用します。(Ie71f9、b/255554340、b/234451516)- 他の API と整合性を保つため、
OverscrollEffect
のeffectModifier
プロパティをnode: DelegatableNode
に変更しました。(Ic0b46、b/255554340) - 試験運用版の
GlobalAssertions
API を削除しました。本来の用途はアクセシビリティ チェックの実行ですが、その目的の場合はenableAccessibilityChecks()
をご覧ください。(I59322)
バージョン 1.8.0-alpha05
2024 年 10 月 30 日
androidx.compose.foundation:foundation-*:1.8.0-alpha05
がリリースされました。バージョン 1.8.0-alpha05 には、これらの commit が含まれています。
新機能
- テキストの自動サイズ調整をサポート。
AutoSize
インスタンス(AutoSize.StepBased
など)をお気に入りのテキスト コンポーザブル(BasicText
など)に渡すと、テキストサイズが利用可能なスペースに適応します。(Ice7e0、b/139320827) OverscrollFactory
API とLocalOverscrollFactory
API を追加し、階層内でのオーバースクロールを構成できるようにしました。LocalOverscrollFactory
で指定された値は、デフォルトでOverscrollEffect
の作成に使用されます。指定された現在のファクトリーからエフェクトを作成して記憶するには、rememberOverscrollEffect()
を使用します。(I51ca4、b/255554340)
API の変更
- 自動入力の入力成功ハイライトの色相を変更するために使用できる
CompositionLocal
を導入。(I32092) ScrollableDefaults.overscrollEffect
を削除しました。代わりにrememberOverscrollEffect
を使用してください。これにより、LocalOverscrollFactory
で提供されている現在のオーバースクロール実装のインスタンスが作成されます。(I1651a、b/255554340)、(b/234451516)- ユーザーの自動入力フローを微調整できる新しい
AutofillManager
インターフェースと、この新しいバージョンの自動入力を有効にするisSemanticAutofillEnabled
フラグを導入しました。(I9d484) CombinedClickableNode
を削除します。この試験運用版 API は、パフォーマンス作業をブロックしないように一時的に公開されていましたが、現在は必要ありません。代わりに、他の修飾子 API と同様にModifier.combinedClickable
を直接使用する必要があります。(I4b658)horizontalScroll
、verticalScroll
、LazyColumn
、LazyRow
、LazyHorizontalGrid
、LazyVerticalGrid
、LazyHorizontalStaggeredGrid
、LazyVerticalStaggeredGrid
、HorizontalPager
、VerticalPager
にオーバーロードを追加し、カスタムOverscrollEffect
の指定をサポートしました。指定されたOverscrollEffect
はイベントを受信し、これらのコンポーネントの境界内にレンダリングされます。同じOverscrollEffect
を 2 回描画することはサポートされていません。したがって、これらのコンポーネントのいずれかに指定した同じOverscrollEffect
をModifier.overscroll
で別々に描画することはできません。これらのコンポーネントの境界外にオーバースクロールを描画するユースケースについては、今後別途対応する予定です。(I2dc42、b/266550551、b/234274772、b/224572538、b/353805117)
バージョン 1.8.0-alpha04
2024 年 10 月 16 日
androidx.compose.foundation:foundation-*:1.8.0-alpha04
がリリースされました。バージョン 1.8.0-alpha04 には、これらの commit が含まれています。
API の変更
DelegatableNode#onDensityChange
コールバックとDelegatableNode#onLayoutDirectionChange
コールバックを追加し、これらの変更時にノードの状態を更新できるようにしました。(I04f3e、b/340662451)- 段落と
ParagraphIntrinsics
は、AnnotatedString
に適用されているすべてのアノテーションのリストを受け取るようになりました。以前は、SpanStyles
のリストのみを受け取っていました。(I12f80) PointerInputModifierNode#touchBoundsExpansion
を導入しました。これにより、単一のポインタ入力修飾子のタップ境界を拡大できます。(Iccf02、b/335339283)
バグの修正
- 一部のシナリオで、
AnchoredDraggableDefaults.flingBehavior
に渡された位置のしきい値が正しく考慮されないバグを修正しました。(Ifdf0d、b/367660226) - フリングの進行中にノードツリーから削除されるネストされたスクロール可能な要素の修正を導入しました。これで、これらのノードはフリングをキャンセルし、残りの速度で
onPostFling
イベントを正しく送信します。また、リグレッションが発生した場合の動作を制御するフラグNewNestedScrollFlingDispatchingEnabled
も導入します。このフラグはベータ版の前に削除されます。(I05c37、b/371168883) Modifier.anchoredDraggable
に渡されたOverscrollEffects
が 1D ではなく 2D デルタを受け取るバグを修正しました。(Ie52c0)
バージョン 1.8.0-alpha03
2024 年 10 月 2 日
androidx.compose.foundation:foundation-*:1.8.0-alpha03
がリリースされました。バージョン 1.8.0-alpha03 には、これらの commit が含まれています。
API の変更
- Kotlin バージョンを 1.9 に更新(I1a14c)
- フラグ
DraggableAddDownEventFixEnabled
を導入しました(I848d5) - ユーザー補助サービス向けのページャーのリスト動作をエミュレートする、Carousel という新しいセマンティクス ロールを導入しました。(Id354b、b/354109776、b/239672673)
BasicText
コンポーザブルから暗黙的なgraphicsLayer
修飾子を削除しました。以前の動作に戻せるように、試験運用版のComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
フラグを追加しました。(Ie478d)Modifier.recalculateWindowInsets()
を追加し、親がconsumeWindowInsets()
なしで子要素を配置した場合でも、階層内の子要素がinsetsPadding
を使用できるようにしました。(I7f9e4)
バグの修正
detectDragGestures
、ドラッグ可能要素、スクロール可能要素でジェスチャーの取得を実装。子ドラッグ可能要素がジェスチャーを放棄した場合、親がそれを引き継ぐことができます。これにより、より継続的で統合されたジェスチャー処理が可能になります。(Ic88fe)- スクロール可能な項目のフリング キャンセル動作を更新しました。スクロール可能な要素がフリングして境界に達した場合、フリングを継続するのではなく、フリング速度をチェーン内の次のスクロール可能な要素に正しく渡します。(I9326a)
バージョン 1.8.0-alpha02
2024 年 9 月 18 日
androidx.compose.foundation:foundation-*:1.8.0-alpha02
がリリースされました。バージョン 1.8.0-alpha02 には、これらの commit が含まれています。
API の変更
TextOverflow.StartEllipsis
とTextOverflow.MiddleEllipsis
が使用可能になり、1 行テキストの行の最初または中央に省略記号を配置できるようになりました。(I38913、b/185418980)
バージョン 1.8.0-alpha01
2024 年 9 月 4 日
androidx.compose.foundation:foundation-*:1.8.0-alpha01
がリリースされました。バージョン 1.8.0-alpha01 には、これらの commit が含まれています。
バージョン 1.7
バージョン 1.7.5
2024 年 10 月 30 日
androidx.compose.foundation:foundation-*:1.7.5
がリリースされました。バージョン 1.7.5 には、これらの commit が含まれています。
バグの修正
- 固定されたアイテムがコンテンツのパディング領域で 2 回サブコンポーズされていないことを確認します。(Ic6224)
バージョン 1.7.4
2024 年 10 月 16 日
androidx.compose.foundation:foundation-*:1.7.4
がリリースされました。バージョン 1.7.4 には、これらの commit が含まれています。
バグの修正
- テキスト フィールドでまれにクラッシュするバグを修正しました。(I475c6、b/313010266)
- 遅延レイアウト アイテムのルートにある
ReusableContentHost
を削除しました。これは、「無効なノードで呼び出された測定」クラッシュの潜在的な根本原因でした。(Id6e60)
バージョン 1.7.3
2024 年 10 月 2 日
androidx.compose.foundation:foundation-*:1.7.3
がリリースされました。バージョン 1.7.3 には、これらの commit が含まれています。
バグの修正
- minLines がデフォルト以外の値に設定されている場合の
BasicText
のメモリリークを修正しました。
バージョン 1.7.2
2024 年 9 月 18 日
androidx.compose.foundation:foundation-*:1.7.2
がリリースされました。バージョン 1.7.2 には、これらの commit が含まれています。
バグの修正
- ドラッグ可能な要素でダウンイベントが欠落していたため、フリンジが通常より遅く見える問題を修正しました。
バージョン 1.7.1
2024 年 9 月 10 日
- Android アーティファクトに変更はありません。
-desktop
アーティファクトが削除され、-jvmStubs
アーティファクトと-linuxx64Stubs
アーティファクトが追加されました。これらのターゲットはいずれも使用されることを想定しておらず、Jetbrains Compose の開発を支援するためのプレースホルダです。
バージョン 1.7.0
2024 年 9 月 4 日
androidx.compose.foundation:foundation-*:1.7.0
がリリースされました。バージョン 1.7.0 に含まれる commit は次のとおりです。
1.6.0 以降の重要な変更
Modifier.clickable
、Modifier.focusable
、Modifier.indication
、Modifier.scrollable
、Modifier.draggable
のパフォーマンスが大幅に改善されました。この取り組みの一環として、内部変更に加えて、次の API の変更が行われました。- 新しい Indication API である
IndicationNodeFactory
を追加しました。これにより、以前の(現在は非推奨の)rememberUpdatedInstance
API と比較して、パフォーマンスの高いインジケーションの実装が可能になります。移行に関する情報については、developer.android.com をご覧ください。 clickable
/combinedClickable
/selectable
/toggleable
で、null が許容されるMutableInteractionSource
パラメータが使用できるようになりました。null で、指定されたインジケーションがIndicationNodeFactory
の場合、インジケーションは必要に応じてのみ遅延作成されるため、パフォーマンスが向上します。ホイスティングせずにMutableInteractionSource
を使用している場合は、remember { MutableInteractionSource() }
ではなく null を渡すことをおすすめします。Indication#rememberUpdatedInstance
が非推奨になりました。パフォーマンスへの影響は避けられず、他の最適化を妨げます。代わりに、新しいIndicationNodeFactory
API を使用してください。
- 新しい Indication API である
TextFieldState
を使用するBasicTextField
は安定しており、すべての呼び出しサイトでBasicTextField(value, onValueChange)
からBasicTextField(TextFieldState)
への移行を開始することをおすすめします。ClickableText
のサポートを終了しました。クリック可能なリンクをテキストに追加するには、AnnotatedString
で新しいLinkAnnotation
アノテーションを使用してBasicText
を使用します。LinkAnnotation
を使用すると、リンクの状態(フォーカス、ホバーなど)に基づいてカスタム スタイルを設定できます。MaxLines
とOverflow
にContextualFlowRow
とEnhanced FlowRow/Column
を導入しました。試験運用版のFlowRow
とFlowColumn
が強化され、maxLines
とオーバーフローのサポートが追加されました。また、ContextualFlowRow
とContextualFlowColumn
も新たに導入されました。この更新は、パフォーマンスに最適なコンポーネントを提供するように設計されています。ContextualFlow*
は、小さな maxLines 構成と動的 +N 表示ボタンを使用して多数のアイテムを表示する場合に最適です。FlowRow
とFlowColumn
は、100 個未満のアイテムを表示する場合に最適です。重要:FlowRow
またはFlowColumn
の既存の動作(すべてのアイテムが、クロス軸の最大値に収まるかどうかに関係なく合成される)を維持するには、初期化時にオーバーフローをFlowRowOverflow.Visible
またはFlowColumnOverflow.Visible
に設定します。ContextualFlowRowSample
とFlowRowSample
で、これらの新機能の使用例を確認してください。(Ib9135、b/293577082)- アイテムの表示と非表示のアニメーションのサポートを
LazyColumn
とLazyRow
に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするためにModifier.animateItemPlacement()
修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem()
という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(I2d7f7、b/150812265) - 公式の Android API(
ScrollCaptureCallback
)を使用して、Compose スクロール コンテナでの長いスクリーンショットの試験運用版サポートを実装しました。 NestedScroll
ソースのドラッグとフリングは、アニメーション(副作用)とマウスホイールおよびキーボード(UserInput
)が含まれるようにソースの定義が拡張されたため、UserInput
とSideEffect
に置き換えられます。LazyLayout
プリフェッチ リクエストを緊急としてマークできるようになりました。これは、このアイテムが次のフレームで必要になると予想され、フレーム バジェットを無視して、事前により多くの処理を行うことを意味します(Id513f)- Android U 以降のデバイスでタッチペンの手書き入力機能をサポート。(I002e4)
- さまざまな API が安定版に昇格しました
- ページャー、スナップ、ウィンドウ インセット
バージョン 1.7.0-rc01
2024 年 8 月 21 日
androidx.compose.foundation:foundation-*:1.7.0-rc01
がリリースされました。バージョン 1.7.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
- フォーカス可能(またはクリック可能)で無効になっている親要素内で任意の要素がフォーカスされたときにクラッシュが発生するリグレッションを修正しました。(b/317561689)
バージョン 1.7.0-beta07
2024 年 8 月 7 日
androidx.compose.foundation:foundation-*:1.7.0-beta07
がリリースされました。バージョン 1.7.0-beta07 に含まれる commit はこちらをご覧ください。
バグの修正
- テキスト入力に関連する
SemanticsNodeInteraction
関数performTextReplacement
、performTextInput
、performTextClearance
は、読み取り専用のTextFields
で呼び出されると、アサーション エラーをスローするようになりました。(I4ae8f) - ハイパーリンクの視覚的な不具合を修正しました。(I23311)
- 一部の IME で
contentReceiver
修飾子が機能しない問題を修正しました。 - 速度の生成: Compose UI と Foundation で NaN 値の伝播を防ぎます。
バージョン 1.7.0-beta06
2024 年 7 月 24 日
androidx.compose.foundation:foundation-*:1.7.0-beta06
がリリースされました。バージョン 1.7.0-beta06 に含まれる commit はこちらをご覧ください。
バージョン 1.7.0-beta05
2024 年 7 月 10 日
androidx.compose.foundation:foundation-*:1.7.0-beta05
がリリースされました。バージョン 1.7.0-beta05 に含まれる commit はこちらをご覧ください。
バグの修正
SnapFlingBehavior
と Pager で Nan 値の処理を修正。
バージョン 1.7.0-beta04
2024 年 6 月 26 日
androidx.compose.foundation:foundation-*:1.7.0-beta04
がリリースされました。バージョン 1.7.0-beta04 に含まれる commit はこちらをご覧ください。
バグの修正
- 非常に長いテキスト行(1 万文字など)の測定時にクラッシュしないようにしました。(8157ab)
- 新しい
BasicTextField
でクラッシュを引き起こす非常に大きなテキストの測定を修正しました。(6b7575) - 特定のシナリオでテキストの使用を中断する行/列の測定の動作変更を元に戻しました。(69e8ba)
バージョン 1.7.0-beta03
2024 年 6 月 12 日
androidx.compose.foundation:foundation-*:1.7.0-beta03
がリリースされました。バージョン 1.7.0-beta03 に含まれる commit はこちらをご覧ください。
バージョン 1.7.0-beta02
2024 年 5 月 29 日
androidx.compose.foundation:foundation-*:1.7.0-beta02
がリリースされました。バージョン 1.7.0-beta02 に含まれる commit はこちらをご覧ください。
API の変更
LazyLists
の既存の試験運用版 API と同様に、LazyGrids
のプリフェッチ動作を構成するための試験運用版 API を追加しました。これには、ネストされたLazyGrids
内のアイテムのプリフェッチのサポートが含まれます。LazyListPrefetchStrategy
と同様に、実装のデフォルトでは、各グリッドの最初の 2 つのネストされたアイテムがプリフェッチされますが、これは新しいLazyGridPrefetchStrategy(nestedPrefetchItemCount)
API とLazyListPrefetchStrategy#onNestedPrefetch
API で構成できます。(I591c4)SemanticsProperties.Editable
の名前をIsEditable
に変更し、SemanticsPropertyReceiver.editable
を valisEditable
に変更しました。このプロパティはブール値になり、常にテキスト フィールドで指定されます。(I8acd8)basicMarquee
のデフォルト値をMarqueeDefaults
オブジェクトに移動しました。(I12ff6)basicMarquee
delayMillis
パラメータの名前をrepeatDelayMillis
に変更しました。(I12ff6)- リンクのスタイル設定用の API を更新しました。
TextLinkStyles
をTextStyle
に移動し、マテリアルからTextDefaults
を削除しました。(I5477b)
バグの修正
LayoutCoordinates.introducesFrameOfReference
の名前をLayoutCoordinates.introducesMotionFrameOfReference
に変更し、目的をより明確にしました。そのフラグに基づいて座標を計算する関連関数の名前を変更しました。(I3a330)MarqueeDefaults
プロパティから「デフォルト」を削除しました。(I1d8a0)MarqueeDefaults
プロパティから「Marquee」を削除しました。(Iad4f4)TextStyle
クラスからTextLinkStyles
を削除しました。代わりに、TextLinkStyles
はLinkAnntation
コンストラクタとAnnotatedString.fromHtml
メソッドの一部になっています(I90b2b)- 境界に到達した状態で境界に向かってスワイプすると、Pager がスナップするバグを修正しました。(I9f373、b/339171222)
- BTF2 で、マウスの選択ジェスチャーが正しく動作するようになりました。(Ibe8c6)
外部からの協力
- 「プリフェッチに基づいてコンテンツ タイプを計算して、コンポーズ時間と測定時間を正確に計算できるようにする」を再送信(Iea622)
- プリフェッチに基づいてコンテンツ タイプに基づくコンポーズ/測定時間の計算を行い、精度を改善(Ibccb1)
WindowInsetsPadding
修飾子を共通ソースセットから利用できるようにしました。(I070b2)
バージョン 1.7.0-beta01
2024 年 5 月 14 日
androidx.compose.foundation:foundation-*:1.7.0-beta01
がリリースされました。バージョン 1.7.0-beta01 には、これらの commit が含まれています。
API の変更
- バイナリ互換性のために非推奨の非公開として
KeyboardOptions.shouldShowKeyboardOnFocus
プロパティを追加しました。(I15cfe) Modifier.anchoredDraggable
で、RTL レイアウトで使用される水平方向のコンポーネントのデフォルトのドラッグ デルタが反転されるようになりました。(I3c6d9)AnnotatedString.hasEqualsAnnotations
をhasEqualAnnotations
に変更(I685c0)- テキスト内のマテリアル テーマのリンクを取得する API を更新しました。具体的には、テーマ設定された
LinkAnnotations
の作成と、テーマ設定されたリンクを含む HTML の解析を行うメソッドをTextDefaults
から削除しました。代わりに、Text コンポーザブルにパラメータとしてリンクのスタイルを設定できるTextLinkStyles
クラスを追加しました。(I31b93) onDragStarted
とonDragStopped
を非停止コールバックに置き換えました。(I59de8)
バグの修正
contentPadding
が受信制約よりも大きい場合に Pager がクラッシュするバグを修正しました。Pager は、PageSize
から返された負の値を 0 に強制変換するようになりました。(Iba5d8、b/314008560)
バージョン 1.7.0-alpha08
2024 年 5 月 1 日
androidx.compose.foundation:foundation-*:1.7.0-alpha08
がリリースされました。バージョン 1.7.0-alpha08 には、これらの commit が含まれています。
新機能
BasicTextField
とSelectionContainer
に右クリック コンテキスト メニューを追加し、切り取り、コピー、貼り付け、すべて選択のアクションの項目を追加しました。(If8c93、Ia2b49、I6f268)
API の変更
LazyLayout
プリフェッチ リクエストを緊急としてマークできるようになりました。これは、このアイテムが次のフレームで必要になると予想され、フレーム バジェットを無視して、事前により多くの処理を行うことを意味します(Id513f)isPositionedByParentWithDirectManipulation
の名前をintroducesFrameOfReference
に変更しましたただし、このプロパティの効果は逆になりました。つまり、デフォルトではほとんどのLayoutCoordinates
が参照フレームを導入し、直接操作された場合にのみ false になります。参照フレームを導入する位置のみをクエリするには、positionInLocalFrameOfReference(...)
を使用します。またはLookaheadScope
からpositionInLocalLookaheadFrameOfReference
を減算します。(Ifc5f7)LinkInteractionListener
内でonClicked
の名前をonClick
に変更しました(Iaa35c)- API 評議会のフィードバックに基づいて、
getScrollViewportLength
のアクション ラムダを変更。(Ibc74a) - タッチペン手書き委任 API の名前を変更しました。(Ica45f、b/327271923)
TextInclusionStrategy.isInside
をisIncluded
に変更しました。Paragraph/MultiParagraph#getRangeForRect()
の戻り値の型を null 値を許容しない型にします。(I51f26)
バグの修正
SelectionContainer
のすべてのテキスト コンテキスト メニューに [すべて選択] を追加しました。(Ib750e、b/240143283)reverseScrolling=true
でスクロール コンテナの長いスクリーンショットのキャプチャを修正しました。(I7c59c)- 状態の境界に近づくと
AnchoredDraggableState
のcurrentValue
が変更される問題を修正しました。(Iea30b、b/333846848)
外部からの協力
- 責任をより明確に反映するため、
PrefetchExecutor
をPrefetchScheduler
に変更しました。(Ib9154) - ネストされた
LazyLists
内のアイテム(ネストされたLazyRows
をレンダリングするLazyColumn
など)のプリフェッチのサポートが追加されました。この変更により、これらのLazyLists
のスクロール中のフレーム ドロップが軽減されることが期待されます。実装のデフォルトは、最初の 2 つのネストされたアイテムをプリフェッチすることですが、この動作は新しいLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
API とLazyListPrefetchStrategy#onNestedPrefetch
API で制御できます。(I51952)
バージョン 1.7.0-alpha07
2024 年 4 月 17 日
androidx.compose.foundation:foundation-*:1.7.0-alpha07
がリリースされました。バージョン 1.7.0-alpha07 に含まれる commit はこちらをご覧ください。
新機能
LinkAnnotation
を構築し、リンクにMaterialTheme
を適用する HTML タグ付き文字列を解析するメソッドを含むTextDefaults
オブジェクトを追加しました。(I98532、b/139312671)- アイテムの表示と非表示のアニメーションのサポートを
LazyVerticalGrid
とLazyHorizontalGrid
に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするためにModifier.animateItemPlacement()
修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem()
という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(Ib7d12、b/330510929) - アイテムの表示と非表示のアニメーションのサポートを
LazyVerticalStaggeredGrid
とLazyHorizontalStaggeredGrid
に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするためにModifier.animateItemPlacement()
修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem()
という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(I69bc9、b/330511290)
API の変更
ContextMenuColors
と関連するLocalContextMenuTheme
ProvidableCompositionLocal
を追加します。テキスト フィールドと選択可能なテキストのコンテキスト メニューの色は、コンポジション ローカルを指定して変更できます。(Ifa154)- テキストリンクに、通常のスタイル設定、ホバー状態、フォーカス状態に加えて、押下状態のスタイル設定オプションが追加されました。(I5f864、b/139312671)
- 手書きジェスチャーの
ViewConfiguration.HandwritingGestureLineMargin
を導入。BasicTextField
の手書きジェスチャーをサポート。(Ie6e13、b/325660505) - 関連する API サーフェスの残りの部分を安定させる時間がないため、1.7 リリースで
DelegatableNode.scrollIntoView
を削除しました。この機能は 1.8 で再導入されます。(I6cf61、b/333421581、b/332900232) - レイアウト座標をクエリするときに、
excludeDirectManipulationOffset
引数を使用して、Placeable.PlacementScope.withDirectManipulationPlacement
を使用して子を配置した親レイアウトによって設定されたオフセットを除外できるようになりました。同様に、子の位置を頻繁に変更するレイアウトは、withDirectManipulationPlacement
(デフォルトで実装されているスクロールなど)を使用して配置できるようになりました。これにより、approachLayout
ベースのアニメーションをより直感的に作成できるようになります。アニメーション化するオフセットと、アニメーション化する際に直接適用する内容を区別できるようになりました。(I60ec7) LazyStaggeredGrid
にrequestScrollToItem
を導入。測定パスごとに、クライアントはrequestScrollToItem
を呼び出して、キーに基づくインデックスの維持をオプトアウトできるようになりました。requestScrollToItem
が呼び出されない限り、既存の動作は変更されません。(I63983)- Pager に
requestScrollToPage
を導入しました。測定パスごとに、クライアントはrequestScrollToPage
を呼び出して、キーに基づくインデックスの維持をオプトアウトできるようになりました。requestScrollToPage
が呼び出されない限り、既存の動作は変更されません。(Ic4213) LazyGrids
用にrequestScrollToItem
を導入しました。測定パスごとに、クライアントはrequestScrollToItem
を呼び出して、キーに基づくインデックスの維持をオプトアウトできるようになりました。requestScrollToItem
が呼び出されない限り、既存の動作は変更されません。(I0a7a0)ClickableText
は非推奨とみなされています。テキストにリンクを追加するには、リンクに対応するLinkAnnotation
を使用してAnnotatedString
を作成し、このAnnotatedString
をText
コンポーザブルに渡します。(I34d4b、b/323346994)UrlAnnotation
は非推奨です。代わりにLinkAnnotation.Url
を使用してください。マテリアル テーマ設定を使用している場合は、TextDefaults
オブジェクトを使用して、マテリアル テーマ設定が適用されたアノテーションを作成します。(I8d180、b/323346545)String.parseAsHtml
の名前がAnnotatedString.Companion.fromHtml
に変更されました。(I43dcd)- スタイル設定引数(
linkStyle
、focusedLinkStyle
、hoveredLinkStyle
)とリンク操作リスナーをparseAsHtml
メソッドに追加しました。<a>
タグを含む HTML タグ付き文字列を解析すると、このメソッドはそのようなタグごとにLinkAnnotation.Url
を構築し、スタイリング オブジェクトとリンク インタラクション リスナーを各アノテーションに渡します。(I7c977) LinkAnnotation
が、状態ベースのスタイル設定引数とLinkInteractionListener
を受け取るようになりました。このアノテーションをAnnotatedString
に追加してハイパーリンクを取得します。focusedState
やhoveredState
を渡すことで、リンクがフォーカスされているときやホバーされているときのリンクの視覚的な構成を定義できます。(I81ce4、b/139312671)- 長いスクリーンショットの機能フラグが削除されました。(I28648、b/329128246)
LazyColumn
で、長いスクリーンショットで固定ヘッダーが正しくレンダリングされるようになりました。(I8d239、b/329296635)- 新しい
BasicTextField
で導入された残りの試験運用版 API の大部分を安定化しました。(I714e2) - コンテンツの難読化に使用する文字を制御する
textObfuscationCharacter
パラメータをBasicSecureTextField
に追加しました。(I0588b) NestedScroll
ソースのドラッグとフリングの定義が拡張され、アニメーション(副作用)、マウスホイール、キーボード(UserInput
)が含まれるようになったため、これらのソースの定義を変更し、UserInput
とSideEffect
に置き換えました。(I40579)LocalBringIntoViewSpec
を導入しました。これは、Scrollable 修飾子レイヤで適用される、プラットフォーム依存のフォーカス スクロール動作です。(I27aa5、b/317453911)TextFieldCharSequence
を削除しました。TextFieldBuffer.originalValues
はTextFieldBuffer.originalText
とTextFieldBuffer.originalSelection
に置き換えられます。(I2c7d6)ImeOptions.hintLocales
は null 許容ではなくなりました。空の言語 / 地域リストを渡す場合は、LocaleList.Empty
を使用します。(Ic5bc4)getOffsetFractionForPage
の名前をgetOffsetDistanceInPages
に変更しました(Ia05e2)
バグの修正
InputTransformations
がnext
と結合された場合、新しいKeyboardOptions.merge
メソッドを使用して、個々のオプションでKeyboardOptions
が適切に統合されるようになりました。(Ie5304、b/295951492)AnchoredDraggableState
のtargetValue
で、位置情報のしきい値が考慮されなくなりました。暗黙的なしきい値が 50% になりました。つまり、targetValue
は 2 つのアンカーの中間点で変化します。(I82c2c)
外部からの協力
- 2 つのスクロール API の名前を変更しました。(I56a75)
バージョン 1.7.0-alpha06
2024 年 4 月 3 日
androidx.compose.foundation:foundation-*:1.7.0-alpha06
がリリースされました。バージョン 1.7.0-alpha06 に含まれる commit はこちらをご覧ください。
新機能
- アイテムの表示と非表示のアニメーションのサポートを
LazyColumn
とLazyRow
に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするためにModifier.animateItemPlacement()
修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem()
という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(I2d7f7、b/150812265) LazyColumn/LazyRow
のクライアントは、非停止のLazyListState.requestToScroll
を呼び出して、今後の測定パスのキーに基づくインデックスの維持をオプトアウトできるようになりました。(I98036、b/209652366)- スタイル設定された文字列の
parseAsHtml
メソッドを追加しました。これにより、HTML タグでマークされた文字列をAnnotatedString
に変換できます。なお、サポートされているタグは一部です。たとえば、箇条書きリストはまだ表示できません。(I84d3d) - 公式の Android API(
ScrollCaptureCallback
)を使用して、Compose スクロール コンテナ内の長いスクリーンショットの試験運用版サポートを実装しました。この機能は試験運用版であり、現在はすべてのケースを正しく処理できない場合があります。そのため、現在はデフォルトで無効になっています。オプトインするには、ComposeFeatureFlag_LongScreenshotsEnabled
フラグを true に設定します。このフラグは 1.7 ベータ版より前に削除されます。(I2b055、b/329296471) - 新しい
GraphicsLayer
API を導入し、GraphicsLayer
インスタンスの配置とレンダリングをより柔軟に行うことができます。また、Composable 実装と調整してGraphicsLayer
修飾子インスタンスを指定しなくても、組み込みレンダリング機能をサポートできます。
API の変更
- すべての
KeyboardOptions
パラメータのデフォルト値が未指定になりました。KeyboardOptions.merge
メソッドを追加しました。 KeyboardOptions.autoCorrect
の名前をautoCorrectEnabled
に変更し、null 可能にしました。null は値が指定されていないことを示します。(Ia8ba0、b/295951492)outOfBoundsPageCount
の名前をbeyondViewportPageCount
に変更しました(I129c6)fun ClipEntry.getMetadata()
がval ClipEntry.clipMetadata
に変更されました。(I50155)TextFieldState.valueAsFlow()
を削除しました。snapshotFlow { state.text }
またはsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
を使用することを推奨(I7d629)InputTransformation.transformInput
パラメータを再編成しました。originalValue: TextFieldCharSequence
を削除しました。代わりに、TextFieldBuffer
が同じ名前のこの値を保持するようになりました。また、valueWithChanges: TextFieldBuffer
パラメータが不要になりました。TextFieldBuffer
が関数のレシーバ スコープになりました。(I919cc)BasicTextField(state)
バリアントとBasicSecureTextField
で、ソフトウェア キーボードで実行されたアクションを処理するためにKeyboardActions
ではなくKeyboardActionHandler
が使用されるようになりました。(I58dda)- タッチペン手書き入力委任 API: 「偽の」テキスト入力フィールドでのタッチペン手書き入力をサポートします。(I9c09c、b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
の名前をshowKeyboardOnFocus
に変更しました(Ib4b7a、b/295951492)Modifier.contentReceiver
からhintMediaTypes
パラメータを削除しました。デベロッパーは、受信したTransferableContent
のメディアタイプが、構成されたhintMediaTypes
と互換性がない可能性があるため、そのチェックをすでに推奨されていました。(I82f99)BasicSecureTextField
のパラメータの順序を変更しました。keyboardType
パラメータとimeAction
パラメータを削除し、KeyboardOptions
クラス全体を採用しました。BasicSecureTextField
に適したデフォルトはそのままにします。また、scrollState
パラメータが不要になりました。(Ibbfa9)TextFieldState.text
の型はTextFieldCharSequence
からCharSequence
に変更されました。そのため、TextFieldState.selection: TextRange
とTextFieldState.composition: TextRange?
を追加して、現在の選択と合成の値を状態オブジェクトから直接読み取るようにしました。TextFieldState.forEachTextValue
を削除しました。(Idb2a2)ClipboardManager.getClipMetadata
関数とClipboardManager.hasClip
関数を削除しました。clipEntry.getMetadata()
を使用して、現在のクリップ エントリのメタデータを読み取ってください。また、クリップボードに現在のクリップがあるかどうかを確認するために、ClipboardManager.getClip
の結果が null かどうかも確認します。(I50498)ClipboardManager.setClip
が null を受け入れるようになり、クリップボードを消去できるようになりました。(I7d2e9)ReceiveContentListener
が関数インターフェースに変換されました。また、ReceiveContentListener
が関数インターフェースになったため、ラムダを受け取るModifier.receiveContent
オーバーロードも削除されました。Modifier.receiveContent
の名前がModifier.contentReceiver
に変更されました。(I1e6af)TransferableContent.consumeEach
の名前をTransferableContent.consume
に変更しました(I1e462)rememberTextFieldState
が安定版 API に移行しました。(I37999)
バグの修正
BasicTextField(state)
バリエーションが CJK(入力に基づく)キーボードで機能しないバグを修正しました。(I54425)Modifier.Node
の再利用で、特定のシナリオでModifier.dragAndDropTarget()
が古いデータを参照するバグを修正しました。(I05bb1)AnchoredDraggableState#anchoredDrag
呼び出しがanchoredDrag
オペレーションの終了時にスナップされるという、最近の契約変更を元に戻しました。(I95715)
バージョン 1.7.0-alpha05
2024 年 3 月 20 日
androidx.compose.foundation:foundation-*:1.7.0-alpha05
がリリースされました。バージョン 1.7.0-alpha05 に含まれる commit はこちらをご覧ください。
API の変更
- ハイパーリンクのスタイル設定用の試験運用版の
LocalTextLinkStyle
コンポジション ローカルを削除しました。(Iebfa7) onLinkClicked
引数によるBasicText
の試験運用版のオーバーライドを削除しました。ハイパーリンクのサポートに代わる API は、今後提供される予定です。(I107d5)TextFieldState
とTextFieldBuffer
の Codepoints 関連のメソッドとプロパティを削除しました。また、残りの選択と合成に関連する API からinChars
接尾辞を削除しました。(Ief7ce)- アンカーポイントを通過するときに、
AnchoredDraggable
のcurrentValue
が更新されるようになりました。settledValue
を使用して以前のcurrentValue
セマンティクスを受け取ります。更新はアンカーで停止したときにのみ行われます。進行状況は、プロパティではなく関数として公開されるようになりました(開始点と終了点が必要です)。(Ibe6e8、b/318707189、b/298271489、b/294991954) BasicTextField(state)
、TextFieldState
、InputTransformation
、OutputTransformation
、TextFieldLineLimits
、TextFieldDecorator
が安定版に移行されました。(I9582b)- 低レベルの IME 関連テストやその他の低レベルの IME ユースケースの作成に役立つ
InterceptPlatformTextInput
を導入しました。PlatformTextInputTestOverride
は非推奨になりました。(I862ed、b/322680547) restrictedConstraints()
をfitPrioritizingWidth()
とfitPrioritizingHeight()
の 2 つのメソッドに分割しました。(I6d7fd)
外部からの協力
- 2 つの新しい API
isLastScrollForward
/isLastScrollBackward
を追加しました。最新のスクロール アクションのスクロール方向をチェックし、スクロール アクションがまだない場合は false を返します。(I63a0e)
バージョン 1.7.0-alpha04
2024 年 3 月 6 日
androidx.compose.foundation:foundation-*:1.7.0-alpha04
がリリースされました。バージョン 1.7.0-alpha04 に含まれる commit はこちらをご覧ください。
API の変更
- Android U 以降のデバイスでタッチペンの手書き入力機能をサポート。(I002e4)
KeyboardOptions
にhintLocales
を追加し、TextFields
に特定のロケールを使用して IME にヒントを提供して、優先言語をプリセットする機能を追加しました。(Id18c2)value: String
パラメータとonValueChange: () -> String
パラメータを受け入れる試験運用版のBasicTextField2
とBasicSecureTextField
のオーバーロードを削除しました。(I568b4)InputTransformation
にオプションのapplySemantics
関数を追加して、適用されるBasicTextField2
のセマンティクスに影響を与えます。(I74a2f、b/170648072)- この CL では、
GetScrollViewportLength
セマンティック アクションを追加して、Compose でスクロールされるコンポーネントに関する情報を a11y システムにパイプアップできるようにします。この CL では、Foundation のスクロール可能なリストでもこのプロパティを使用できるようにします。(Ic5fa2) BasicTextField2
の名前がBasicTextField
に変更されました。(Ie5713)FocusRequester.createRefs
が安定版になりました。(I4d92c、b/261436820)- 修飾子ノードが
scrollIntoView
リクエストを直接実行できるようにDelegatableNode.scrollIntoView()
を導入しました。(I2b3b7、b/299939840) DelegatableNode.requireView()
を導入し、修飾子ノードがコンポジション ローカルを読み取らずに現在の AndroidView
を取得できるようにしました。(I40768)- コンテキスト フロー行スコープとコンテキスト フロー列スコープ内にコンテキスト レイアウト情報を導入しました。行番号、位置、指定された位置に留まるための最大幅と高さの制約が含まれます。最大幅または最大高さを超えるアイテムは、オーバーフロー設定に基づいて次の行に流れ込むか、省略される場合があります。(Id13f8、b/292114798)
バグの修正
- 特定の状況で
TextField
のenabled
属性またはreadOnly
属性を切り替えるとクラッシュが発生するバグを修正しました。(Iae17b)
バージョン 1.7.0-alpha03
2024 年 2 月 21 日
androidx.compose.foundation:foundation-*:1.7.0-alpha03
がリリースされました。バージョン 1.7.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
onPlaced
をオーバーライドして座標をプロパティに保存しなくても、Modifier.Node
の現在のLayoutCoordinates
を取得する方法としてDelegatableNode.requireLayoutCoordinates()
を導入しました。(Ia8657)onPlaced
をオーバーライドして座標をプロパティに保存しなくても、Modifier.Node
の現在のLayoutCoordinates
を取得する方法としてDelegatableNode.currentLayoutCoordinates
を導入しました。(Iaebaa)AnchoredDraggable
で使用されるDraggableAnchors
のパフォーマンスの最適化。(I89cff)androidx.compose.foundation.text2
パッケージのBasicTextField2
と関連 API がandroidx.compose.foundation.text
に移動されました。(I9f635)BasicTextField2
はCodepointTransformation
パラメータを受け入れなくなりました。BasicSecureTextField
またはOutputTransformation
を使用します。(Id34ff)- 2 つの
AnnotatedStrings
のアノテーションのみを比較するメソッドを追加しました。(I32659) MaxLines
とOverflow
でContextualFlowRow
と拡張FlowRow
/Column
を導入しました。試験運用版のFlowRow
とFlowColumn
が強化され、maxLines
とオーバーフローのサポートが追加されました。また、ContextualFlowRow
とContextualFlowColumn
も新たに導入されました。この更新は、パフォーマンスに最適なコンポーネントを提供するように設計されています。ContextualFlow*
は、小さなmaxLines
構成と動的 +N 表示ボタンを使用して多数のアイテムを表示する場合に最適です。FlowRow
とFlowColumn
は、100 個未満のアイテムを表示する場合に最適です。重要:FlowRow
またはFlowColumn
の既存の動作(すべてのアイテムが、クロス軸の最大値に収まるかどうかに関係なく合成される)を維持するには、初期化時にoverflow
をFlowRowOverflow.Visible
またはFlowColumnOverflow.Visible
に設定します。ContextualFlowRowSample
とFlowRowSample
で、これらの新機能の使用例を確認してください。(Ib9135、b/293577082)
バグの修正
- カーソル アニメーションで、オンとオフの状態の間でフレームがリクエストされなくなりました。(Ia2253)
KeyboardOptions
の非推奨のコピー コンストラクタが、すべてのプロパティを正しくコピーするようになりました。(If12de)
バージョン 1.7.0-alpha02
2024 年 2 月 7 日
androidx.compose.foundation:foundation-*:1.7.0-alpha02
がリリースされました。バージョン 1.7.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
HorizontalPager
、VerticalPager
、PagerState
が安定版に昇格しました。(I67660、b/316966909)- アプリ全体の Text 内のリンクのスタイルを変更できる
LocalTextLinkStyle
コンポジション ローカルを追加しました。アプリで独自のテーマを使用している場合は、テーマ設定に応じてこのコンポジション ローカルを設定する必要があります。マテリアル テーマを使用する場合、リンクの色はデフォルトでマテリアルのプライマリ カラーに設定されます。(I7eb10) - Jetpack Compose でリッチ コンテンツを受信する方法として、
receiveContent
修飾子を導入しました。 receiveContent
はBasicTextField2
と統合され、ソフトウェア キーボードまたはクリップボードの貼り付けアクションから提供されるリッチ コンテンツを受け入れます。(I81b72)- この変更では、他のユースケースを可能にし、柔軟性を高めるために、ページャーで
SnapFlingBehavior
をTargetedFlingBehavior
に置き換えます。(I762ea) - この変更により、Snapping API が安定版になりました。また、一部のテストコードをクリーンアップし、スナップ機能にサンプルを追加しました。(Id8da9)
TargetedFlingBehavior
を導入します。これは、進行中のアニメーションの状態とそのターゲット スクロール オフセットに関する情報を伝播できるFlingBehavior
です。(I6a207)
バグの修正
BasicTextField2
で、カーソルがスクロールしてビューの外に移動した場合や、入力によってビューの外に移動する場合でも、入力中にカーソルがビュー内に保持されるようになりました。(Ieb856、b/237190748)
外部からの協力
- LazyList のプリフェッチ動作を構成するための試験運用版 API を追加しました。(I022a4)
バージョン 1.7.0-alpha01
2024 年 1 月 24 日
androidx.compose.foundation:foundation-*:1.7.0-alpha01
がリリースされました。バージョン 1.7.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- 新しい
Indication API
IndicationNodeFactory
を追加しました。これにより、以前の(現在は非推奨の)rememberUpdatedInstance
API と比較して、よりパフォーマンスの高いIndication
実装が可能になります。移行に関する情報については、developer.android.com をご覧ください。 clickable / combinedClickable / selectable / toggleable
が null 許容のMutableInteractionSource
パラメータを受け入れるようになりました。null で、指定されたIndication
がIndicationNodeFactory
の場合、Indication
は必要に応じてのみ遅延作成されるため、パフォーマンスが向上します。ホイスティングせずにMutableInteractionSource
を使用する場合は、null を渡すことをおすすめします。
API の変更
AnchoredDraggable
にDecayAnimation
を導入しました。この変更により、AnchoredDraggable
にdecayAnimationSpec
パラメータが追加され、いずれかのアンカーに落ち着くときに減衰アニメーションを使用できるようになりました。また、各仕様のユースケースを理解しやすくするため、既存のanimationSpec
の名前をsnapAnimationSpec
に変更しました。BasicTextField2
は試験運用版で使用できます。BasicTextField
とほぼ同等の機能を備え、本番環境で使用できる動作になっている必要があります。ただし、現時点では API は試験運用版のままです。安定化する前に、名前がBasicTextField
に変更され、同じパッケージに移動されます。BasicTextField2
のOutputTransformation
API の最初のドラフトを導入しました。この API は、古いBasicTextField
のVisualTransformation
のユースケースのほとんどに代わるものです。ただし、まだ完成しておらず、一部の機能が正しく動作しない場合があります。ユースケースでの API の使い勝手について、フィードバックをお寄せいただければ幸いです。(aosp/2708848)- テキストにリンクやクリック可能な要素を追加できる
LinkAnnotation
を導入しました。リンク機能はまだ完成しておらず、今後も API の変更が予定されています。 - Jetpack Compose でリッチ コンテンツを受信する方法として、
receiveContent
修飾子を導入しました。 receiveContent
はBasicTextField2
と統合されており、ソフトウェア キーボードから提供されるリッチ コンテンツや、クリップボードからの貼り付けを受け入れます。KeyboardOptions.shouldShowKeyboardOnFocus
を使用すると、フォーカス時にソフトウェア キーボードをリクエストするBasicTextField
のデフォルトの動作を無効にできます。TextInputService
とLocalTextInputService
のサポートは終了しました。代わりに、PlatformTextInputModifierNode
を使用してプラットフォームの IME API と直接統合します。(aosp/2862698)Indication#rememberUpdatedInstance
が非推奨になりました。パフォーマンスへの影響は避けられず、他の最適化を妨げます。代わりに、新しいIndicationNodeFactory
API を使用してください。
バグの修正
VisualTransformation
が渡された場合、BasicTextField
は、選択したオフセット マッピングを事前に検証するようになりました。これにより、後続の測定パスまたは描画パスで回復不能な例外が発生する一般的なコーディング エラーを検出できます。コンポーズ中にスローすることで、デベロッパーは開発中にこれらのエラーを検出しやすくなり、本番環境でのクラッシュを回避できます。(I0fd42)- 無効なインデックスに対して無効なインデックスを返しても、
VisualTransformation
はスローされなくなりました。(b/316401857 )
バージョン 1.6
バージョン 1.6.8
2024 年 6 月 12 日
androidx.compose.foundation:foundation-*:1.6.8
がリリースされました。バージョン 1.6.8 には、これらの commit が含まれています。
バージョン 1.6.7
2024 年 5 月 1 日
androidx.compose.foundation:foundation-*:1.6.7
がリリースされました。バージョン 1.6.7 には、これらの commit が含まれています。
バージョン 1.6.6
2024 年 4 月 17 日
androidx.compose.foundation:foundation-*:1.6.6
がリリースされました。バージョン 1.6.6 には、これらの commit が含まれています。
バグの修正
- 特定の状況で
TextField
のenabled
属性またはreadOnly
属性を切り替えるとクラッシュが発生するバグを修正しました。(Iae17b)
バージョン 1.6.5
2024 年 4 月 3 日
androidx.compose.foundation:foundation-*:1.6.5
がリリースされました。バージョン 1.6.5 には、これらの commit が含まれています。
バグの修正
- 行/列で再現しにくいバグにデバッグログを追加しました。(b/300280216、b/297974033)
バージョン 1.6.4
2024 年 3 月 20 日
androidx.compose.foundation:foundation-*:1.6.4
がリリースされました。バージョン 1.6.4 には、これらの commit が含まれています。
バグの修正
- 長押ししてからドラッグする選択ジェスチャーで、ドラッグの最初のフレームでテキストのレイアウト境界外に移動しても、クラッシュしなくなりました。(Icdf90、b/325307463)
バージョン 1.6.3
2024 年 3 月 6 日
androidx.compose.foundation:foundation-*:1.6.3
がリリースされました。バージョン 1.6.3 には、これらの commit が含まれています。
バージョン 1.6.2
2024 年 2 月 21 日
androidx.compose.foundation:foundation-*:1.6.2
がリリースされました。バージョン 1.6.2 に含まれる commit については、こちらをご覧ください。
バグの修正
AnimateContentSize
が正しくリセットされない問題を修正。(I07051)- 特定の状況でテキストの
intrinsicHeight
が過剰にキャッシュに保存される問題を修正しました。(3cd398、b/217910352)
バージョン 1.6.1
2024 年 2 月 7 日
androidx.compose.foundation:foundation-*:1.6.1
がリリースされました。バージョン 1.6.1 に含まれる commit については、こちらをご覧ください。
バグの修正
- 上限を超えてスクロールしたときに、グリッドのずれた測定値を修正しました。(bffc39)
- サイズの大きいレイアウトのチェックを追加。(e74af5)
- ずらしグリッドの先頭にサイズ 0 のアイテムを配置する問題を修正。(785f94)
- onRelease コールバックは、onForgotten と同じ順序で呼び出します。(31ce3b)
バージョン 1.6.0
2024 年 1 月 24 日
androidx.compose.foundation:foundation-*:1.6.0
がリリースされました。バージョン 1.6.0 に含まれる commit については、こちらをご覧ください。
1.5.0 以降の重要な変更
- 事前定義されたアンカーセット間でドラッグしてアニメーション化できる新しい修飾子
Modifier.anchoredDraggable
。この修飾子は、Modifier.swipeable
の代わりとなることを意図しています。使用方法とModifier.swipeable
からの移行方法については、移行ガイドをご覧ください。 - アプリとコンポーネント間でのドラッグ&ドロップ機能が追加されました。
DragAndDropTarget
、Modifier.dragAndDropSource
などの API を参照して、使用を開始する Modifier.draggable2D
は、2D ドラッグを簡単にサポートできる新しい修飾子です。サンプルをご覧ください。- コンポーズでサーフェスドリブン コンポーネントを簡単に追加できるように、
AndroidExternalSurface
とAndroidEmbeddedExternalSurface
を追加しました Pager
とsnapFlingBehaviour
のさまざまな API の変更と改善- フォーカス、テキスト、インセットのさまざまな API が安定版 API に昇格しました
バージョン 1.6.0-rc01
2024 年 1 月 10 日
androidx.compose.foundation:foundation-*:1.6.0-rc01
がリリースされました。バージョン 1.6.0-rc01 に含まれる commit については、こちらをご覧ください。
API の変更
DragAndDropTarget()
拡張機能のコンストラクタが削除されました。object: DragAndDropTarget {}
を使用して新しいインスタンスを作成します。(I32318)
バージョン 1.6.0-beta03
2023 年 12 月 13 日
androidx.compose.foundation:foundation-*:1.6.0-beta03
がリリースされました。バージョン 1.6.0-beta03 に含まれる commit については、こちらをご覧ください。
バグの修正
- 無限の制約で測定された非常に大きなテキストに影響するクラッシュを修正しました。(I1a7df、b/312294386)
PlatformImeOptions
はインターフェースではなく具象クラスになりました。(If40a4)
バージョン 1.6.0-beta02
2023 年 11 月 29 日
androidx.compose.foundation:foundation-*:1.6.0-beta02
がリリースされました。バージョン 1.6.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
- 再レイアウトのみのスクロールで
canScroll
が更新されない問題を修正。(I60a86) - 小さなスクロール後の
Modifier.animateItemPlacement()
とLookaheadScope
の問題を修正。(I3a2b7)
バージョン 1.6.0-beta01
2023 年 11 月 15 日
androidx.compose.foundation:foundation-*:1.6.0-beta01
がリリースされました。バージョン 1.6.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
DragAndDropTarget
修飾子は、受信側のDragAndDropTarget
を明示的に受け取るようになり、ドラッグ&ドロップ セッションを有効にするラムダが追加されました。これで、DragAndDropModifierNode
に 2 つのファクトリ関数があります。1 つは転送の受信用、もう 1 つはデータ転送用(I69481)maximumFlingVelocity
を Float として表すように更新しました。maximumFlingVelocity
の統一について明確にするため、ドキュメントを更新しました。(I8adc7)DragAndDropModifierNode
ファクトリ内のonDragAndDropStart
の名前がacceptDragAndDropTransfer
に変更されました。ドラッグ&ドロップ セッションから受け入れられるように、
dragAndDropTarget
Modifier
にacceptsDragAndDropTransfer
が追加されました。このラムダは、ドラッグ&ドロップ セッションに関心がある場合に、有効なDragAndDropTarget
を返します。ドラッグ イベントを処理する他のラムダは、これに置き換えられています。ドラッグ&ドロップ セッションから受け取る
DragAndDropTarget
ファクトリ関数が追加されました。(Iebf3a)AnchoredDraggable
でstartDragImmediately
を公開すると、使用時にドラッグ ジェスチャーを検出するためのコントロールが提供されます。ウィジェットがターゲット アンカーにアニメーション化するときに設定すると便利です。サンプルをご覧ください。(Ie6d13、b/285139987)Foundation Tooltip API が
@ExperimentalFoundationApi
になりました。(I30b0b)DragAndDropInfo
を削除しました。DragAndDropModifierNode.drag
は、transferData
、装飾サイズ、ドラッグ装飾のDrawScope
ラムダのパラメータを受け取るようになりましたDragAndDropTarget
は単一の抽象メソッドではなく、特定のドラッグ&ドロップ イベントのメソッドを備えていますDragAndDropModifierNode
のファクトリ関数のonDragAndDropEvent
の名前がonDragAndDropStart
に変更されました。これは、指定されたドラッグ&ドロップ セッションでのみ有効なDragAndDropTarget
であることを明確にするためです。DragAndDropEventType
を削除しました。(I645b1)PlatformTextInputModifierNode.runTextInputSession
の名前をestablishTextInputSession
に変更しました(I03cd0)OriginalText
をTextSubstitution
に置き換えます。(Ifa5a8)PlatformTextInputModifierNode.textInputSession
の名前をrunTextInputSession
に変更しました(Ie9c6b)SubcomposeLayout
の子(およびそれに基づくLazyColumn
などのレイアウト)は、今後再利用するために保持されますが、無効と見なされます。このようなノードをテストするための新しいassertIsDeactivated()
テスト API が導入されました。他のテスト API は、デフォルトで無効なノードを除外します。(I2ef84、b/187188981)Modifier.magnifier
のclippingEnabled
パラメータの名前がclip
に変更されました。Modifier.magnifier
のmagnifierCenter
パラメータは、同じデフォルトの動作を維持しながら null 可能になりました。(I6aa66)マテリアル
SwipeToReveal
API(カードとチップ用)は、データクラスベースのインスタンスの代わりに、スロットベースの API(Compose で推奨)を使用してスロットを作成するようになりました。これは互換性を破る変更です。新しい API の使用方法については、デモとサンプルコードをご覧ください。(Ia8943)
バグの修正
PageSize.Fixed
の equals とハッシュコードを実装します。(Ie3ede、b/300134276)minWidth
が変更され、minWidth
が初期測定制約maxWidth
より小さい場合に、BasicText
レイアウトが縮小されないバグを修正しました。(Idb19c)ArcLine
でスイープ グラデーションのレンダラ サポートを追加。(I4d5bb)- ウィンドウの枠線の変更によるバイナリ互換性の問題を修正(Iee695)
- マイクロベンチマークで、マテリアル コアレイヤを削除した場合のパフォーマンスが優れていることが判明したため、マテリアル 3 チップ/ボタンのマテリアル コアレイヤを削除しました。(I55555)
バージョン 1.6.0-alpha08
2023 年 10 月 18 日
androidx.compose.foundation:foundation-*:1.6.0-alpha08
がリリースされました。バージョン 1.6.0-alpha08 に含まれる commit については、こちらをご覧ください。
新機能
Modifier.draggable2D
は、2D ドラッグを簡単にサポートできる新しい修飾子です。サンプルをご覧ください(Id95f5、b/214412658)
API の変更
Modifier.dragAndDrawSource
のonDrawDragShadow
ラムダの名前がdrawDragDecoration
に変更され、DragAndDropInfo
のサイズ パラメータの名前がdragDecorationSize
に変更されました。(Id0e30、b/303904810)BasicTextField2
のdecorationBox
パラメータの名前をdecorator
に変更しました。その型も、同等の fun インターフェースTextFieldDecorator
に変更されています。(I23c1c)
バグの修正
onValueChange
の要件に関するBasicTextField
のドキュメントを改善しました。(I90fc9、b/160257648)
バージョン 1.6.0-alpha07
2023 年 10 月 4 日
androidx.compose.foundation:foundation-*:1.6.0-alpha07
がリリースされました。バージョン 1.6.0-alpha07 に含まれる commit については、こちらをご覧ください。
API の変更
- カスタム テキスト エディタのテスト作成用の
PlatformTextInputMethodTestOverride
を導入しました。(Id159b) GraphicsSurface
の名前をAndroidExternalSurface
に変更しました。(I11680)- 非線形フォント スケーリングを無効にするための一時的なフラグ
DisableNonLinearFontScalingInCompose
を追加しました。クリーンアップに時間がかかる場合、テストにDisableNonLinearFontScalingInCompose = true
を設定します。このフラグは Compose 1.6.0-beta01 で削除されます。(Ic9486) - 割り当てを回避する
ColorList
コレクションとColorSet
コレクションを追加しました。(I744bd) - この変更により、
SnapLayoutInfoProvider
の実装の詳細に変更されたshortSnapVelocityThreshold
が削除されます。(I65f6d) - ドラッグ&ドロップ セッションを開始するための
dragAndDropSource
修飾子と、ドラッグ&ドロップ セッションからの受信用dragAndDropTarget
修飾子を追加しました。(Ib7828、b/286038936) SnapPositionInLayout
のドキュメントと位置情報の取得方法を更新しました。SnapPositionInLayout
の位置メソッドにコンテンツのパッディングを導入しました。(Id7938、b/300116110)TextFieldState
にUndoState
を追加し、ユーザーが行った変更を元に戻す/やり直す機能を追加しました。(Icc024)
バグの修正
- 速度の変更後に
basicMarquee
がアニメーション化されない問題を修正しました。(Id2e77、b/297974036)
バージョン 1.6.0-alpha06
2023 年 9 月 20 日
androidx.compose.foundation:foundation-*:1.6.0-alpha06
がリリースされました。バージョン 1.6.0-alpha06 に含まれる commit については、こちらをご覧ください。
新機能
SurfaceView
、TextureView: GraphicsSurface()
、EmbeddedGraphicsSurface()
の新しいコンポーザブル ラッパー。これは試験運用版の API であり、変更や修正を受ける可能性があります。(I9ddb2)Modifier.magnifier()
が安定版 API になりました。これには、MagnifierStyle
を削除し、修飾子自体にインライン パラメータを追加することが含まれます。(I83bec、b/298381260、b/262367109、b/261438887)
API の変更
ScrollScope
にupdateCurrentPage
とupdateTargetPage
を導入しました。これらは、PagerState.scroll
でアニメーション スクロールをカスタマイズするために必要な最後の要素です。(I9cad5、b/267744105、b/243786897)SnapFlingBehavior
から密度を削除しました。SnapLayoutInfoProvider
のすべての実装にはすでに密度にアクセスする方法が用意されているため、レシーバ スコープを削除できます。これにより、SnapFlingBehavior
とSnapLayoutInfoProviders
の両方の実装が複雑さを軽減できます。(I153c3)- 安定しているものとしてマークされた修飾子がさらに増えました。(I56af1、b/298046462)
SnapStepSize
をSnapLayoutInfoProvider
から削除しました。計算は、アプローチまたはスナップ オフセットで提供されるレイアウト情報を使用して行います。(If320c)
動作の変更
- Compose で非線形フォント スケーリングが使用されるようになり、読みやすさとアクセシビリティが向上しました。システム設定でフォント スケールが 100% より大きい場合、小さいテキストは通常どおり大きくなりますが、すでに大きいテキストは少し大きくなるのみです。また、SP で定義された行の高さは、意図した 100% スケールの高さに比例するように自動的に調整されます。詳しくは、フォント スケーリングのベスト プラクティスをご覧ください(I11518)。
バグの修正
- ツールチップで
rememberSaveable
の使用を削除しました。(Icc131、b/299500338)
バージョン 1.6.0-alpha05
2023 年 9 月 6 日
androidx.compose.foundation:foundation-*:1.6.0-alpha05
がリリースされました。バージョン 1.6.0-alpha05 に含まれる commit については、こちらをご覧ください。
API の変更
- 現在の
BasicTextField
API と同様に、不変の値とその値を変更するコールバックを受け入れるBasicSecureTextField
のオーバーロードを追加します。(Ia4882) Modifier.preferKeepClear()
を追加して、API 33 以降でフローティング ウィンドウを避けることを優先するコンポーザブルとしてマークします。(Ib51d5、b/297260115)ScrollView
やRecyclerView
などの View コンポーネントのフリング速度はViewConfiguration.ScaledMaximumFlingVelocity
に制限されます。Compose に独自のバージョンのmaximumFlingVelocity
が含まれるようになり、Draggable
に適用されるようになりました。(Ibf974)- 非推奨の
Pager
とPagerState
のオーバーロードを削除しました。(Iea07e) BasicTooltipBox
をcompose.foundation
に追加し、PlainTooltipBox
とRichTooltipBox
を更新して、新しいPlainTooltip
とRichTooltip
コンポーザブルでTooltipBox
を使用できるようにしました。(I79e1d)
バージョン 1.6.0-alpha04
2023 年 8 月 23 日
androidx.compose.foundation:foundation-*:1.6.0-alpha04
がリリースされました。バージョン 1.6.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
- サブコンポジションのライフサイクルと再利用を管理する
ReusableComposition
インターフェースを追加しました(I812d1、b/252846775)。 Modifier.focusGroup
が安定版 API に昇格しました。(I7ffa3)- 現在の
BasicTextField
API と同様に、不変の値とその値を変更するコールバックを受け入れるBasicTextField2
のオーバーロードを追加します。(I3f2b8) GridItemSpan::currentLineSpan
が安定版 API になりました。(Icc29c)contentDescription
を受け取る Canvas が安定版 API になりました。(Ib3d29)ScrollState
にviewportSize
を導入しました。これは、測定後にScrollState
を使用するコンポーネントのviewPort
サイズを確認する方法です。(I8b85a、b/283102682)- Pager でのプリフェッチがビューの動作と一致しない問題を修正しました。(I93352、b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
が安定版になりました。Deprecated Modifier.consumedWindowInsets
API は削除されました。代わりにModifier.consumeWindowInsets
を使用してください。(Id72bb)
バージョン 1.6.0-alpha03
2023 年 8 月 9 日
androidx.compose.foundation:foundation-*:1.6.0-alpha03
がリリースされました。バージョン 1.6.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
LazyLayout
のオーバーロードを追加しました。これはこれまでのプレーンなオブジェクではなく、LazyLayoutItemProvider
のラムダに対応しています。これまでのオーバーロードは非推奨になっています(I42a5a)。privateImeOptions
の構成のサポートを追加しました。(Idb772)
バグの修正
readOnly
が true の場合にテキスト フィールドがキーボードを表示し、編集可能になる問題を修正しました。また、フォーカスされているときにreadOnly
が true から false に変更されたときにキーボードが表示されない問題も修正しました。(I34a19、b/246909589)
バージョン 1.6.0-alpha02
2023 年 7 月 26 日
androidx.compose.foundation:foundation-*:1.6.0-alpha02
がリリースされました。バージョン 1.6.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
Pager
で測定パス後に収集された情報を含むPagerLayoutInfo
を導入しました。また、Pager
に、1 つの測定されたページに関する情報であるPageInfo
を導入しました。(Iad003、b/283098900)- コンポーザブルに許可される入力を指定する追加のアノテーション(I51109)
- テストでフォーカスをリクエストするより便利で見つけやすい方法として、
SemanticsNodeInteraction.requestFocus
を追加しました。(Ie8722) PlatformTextInput*
API を完全に再設計しました。(I6c93a、b/274661182、b/267235947、b/277380808)SoftwareKeyboardController
とLocalSoftwareKeyboardController
は試験運用版ではなくなりました。LocalSoftwareKeyboardController
も適切なCompositionLocal
になりました。(I4c364)Modifier.transformable
でcanPan
パラメータにパンのデルタが提供されるようになりました。これにより、パンの方向を決定してパンを許可または禁止できます。(I692aa、b/266829800)- 修飾子
consumeWindowInsets
を更新して、スーパークラスAbstractComposeView
を拡張しました。(Iacd74、b/269479941)
バージョン 1.6.0-alpha01
2023 年 6 月 21 日
androidx.compose.foundation:foundation-*:1.6.0-alpha01
がリリースされました。バージョン 1.6.0-alpha01 に含まれる commit については、こちらをご覧ください。
新機能
- Foundation に新しい
AnchoredDraggable
API を導入しました。モダル ボトムシートなど、個別の状態間でドラッグできるコンポーネントを作成できます。この API は、マテリアルのSwipeable
API に代わるものです。(I4a2ed)
API の変更
InputConnection#requestCursorUpdates
をサポートしました(I0c69b)- カスタム アニメーション仕様を可能にする
scrollAnimationSpec
を導入しました。BringIntoViewCalculator
をBringIntoViewScroller
に更新しました。(Idb741) - ビットマップ アセットの読み込み時にスローされたスローアブルをラップし、読み込みに失敗したアセットパスの説明を追加するために、
ResourceResolutionException
タイプを追加しました。(I19f44、b/230166331、b/278424788) - テキスト翻訳をサポートするセマンティクス プロパティとアクションを追加しました。(I4a6bc)
Scrollable
などのコンポーネントがbringIntoView
リクエストに応答する方法をカスタマイズするために使用できるBringIntoViewCalculator
API を導入しました。scrollable のオーバーロードを変更し、必要に応じてBringIntoViewCalculator
のインスタンスを受け入れるようにしました。(Iaf5af)
バグの修正
- 変更可能な状態 /
Animatable
の作成に関する lint チェックと同様に、コンポジションでMutableInteractionSource
を作成して記憶していない場合に警告する lint チェックを追加しました。(I5daae) - マウスによる選択のサポートを追加しました。タップベースの選択では、単語単位で選択範囲が拡張され、文字単位で選択範囲が縮小されます。(Ic0c6c、b/180639271)
- カスタム
FocusTarget
の作成に使用できるFocusTargetModifierNode
インターフェースを追加しました。(I9790e)
バージョン 1.5
バージョン 1.5.4
2023 年 10 月 18 日
androidx.compose.foundation:foundation-*:1.5.4
がリリースされました。バージョン 1.5.4 に含まれる commit については、こちらをご覧ください。
バージョン 1.5.3
2023 年 10 月 4 日
androidx.compose.foundation:foundation-*:1.5.3
がリリースされました。このバージョンに変更はありません。
バージョン 1.5.2
2023 年 9 月 27 日
androidx.compose.foundation:foundation-*:1.5.2
がリリースされました。バージョン 1.5.2 に含まれる commit については、こちらをご覧ください。
バグの修正
- セマンティクスが無効化された場合に特定の状況でクラッシュが発生するテキストのバグを修正しました。
バージョン 1.5.1
2023 年 9 月 6 日
androidx.compose.foundation:foundation-*:1.5.1
がリリースされました。バージョン 1.5.1 に含まれる commit については、こちらをご覧ください。
バグの修正
readOnly
が true の場合にテキスト フィールドがキーボードを表示し、編集可能になる問題を修正しました。また、フォーカスされているときにreadOnly
が true から false に変更されたときにキーボードが表示されない問題も修正しました。(I34a19、b/246909589)
バージョン 1.5.0
2023 年 8 月 9 日
androidx.compose.foundation:foundation-*:1.5.0
がリリースされました。バージョン 1.5.0 に含まれる commit については、こちらをご覧ください。
1.4.0 以降の重要な変更
Modifier.clickable
、Modifier.draggable
、Modifier.scrollable
、レイアウト修飾子など、多くの基本的な修飾子がModifier.Node
API に移行され、初期コンポジションのオーバーヘッドが軽減されました。- ページャーの安定性を改善しました。多くのバグが修正されました。
pageCount
パラメータが Pager 自体ではなくPagerState
に格納されるようになりました
バージョン 1.5.0-rc01
2023 年 7 月 26 日
androidx.compose.foundation:foundation-*:1.5.0-rc01
がリリースされました。バージョン 1.5.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
mutableStateOf()
呼び出しをプリミティブの対応する特殊化された型に移行することを推奨するオプションの検査を利用できます。lint ID はAutoboxingStateCreation
です。以前は、この検査はすべてのプロジェクトでデフォルトで有効になっていましたが、Android Studio のエディタとプロジェクトの lint 出力にこの警告を表示するには、モジュールのbuild.gradle
またはbuild.gradle.kts
構成内でwarning "AutoboxingStateCreation"
を宣言して、重大度を情報から警告(またはそれ以上)に変更します(I34f7e)。android { lint { warning "AutoboxingStateCreation" } ... }
バージョン 1.5.0-beta03
2023 年 6 月 28 日
androidx.compose.foundation:foundation-*:1.5.0-beta03
がリリースされました。バージョン 1.5.0-beta03 に含まれる commit については、こちらをご覧ください。
バージョン 1.5.0-beta02
2023 年 6 月 7 日
androidx.compose.foundation:foundation-*:1.5.0-beta02
がリリースされました。バージョン 1.5.0-beta02 に含まれる commit については、こちらをご覧ください。
バージョン 1.5.0-beta01
2023 年 5 月 24 日
androidx.compose.foundation:foundation-*:1.5.0-beta01
がリリースされました。バージョン 1.5.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
PlatformDataProvider
を実装して、心拍数と 1 日の歩数を提供します。SensorGateway
インターフェースが公開 API から削除されました。(I55b84)
バグの修正
- 遅延リストやグリッドなどの測定中の割り当てを削減(Iaf9e2)
- スナップショットの適用時の割り当てを削減(I65c09)
- スプリング アニメーションから割り当てを削除しました。(Ie9431)
TextLayout
から割り当てを削除しました。(I0fd11)- ポインタの速度トラッキングでの複数の割り当てを削除しました(I26bae)
バージョン 1.5.0-alpha04
2023 年 5 月 10 日
androidx.compose.foundation:foundation:1.5.0-alpha04
と androidx.compose.foundation:foundation-layout:1.5.0-alpha04
がリリースされました。バージョン 1.5.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
- 完全なパラメータリストを含む最適化された
TextStyle.merge(...)
を追加しました。(Iad234、b/246961787) LazyGridState
で使用できるSnapLayoutInfoProvider
を導入しました。(I92134、b/269237141、b/260914964)- 遅延スクロールのグリッドアイテム スコープに試験運用版の
Modifier.animateItemPlacement()
が追加されました。アイテムに適用して、自動化された位置変更/並べ替えアニメーションを実現できます。(I4b62d、b/257034719) GridCells.FixedSize
を安定版に昇格しました。FixedSize
は、各セルが交差軸で正確なサイズを取り、残りのスペースが交差軸の配置によって分散されるLazyGrid
を定義します。(I8542f)- Pager の受信スコープ
PagerScope
と、特定のページ オフセットを計算するユーティリティ関数を導入しました。(If2577) - スナップ フリング動作を作成するときに
snapPositionalThreshold
を導入します。このパラメータを使用して、Pager での短いスナップへの位置しきい値を指定します。(If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
がcalculateSnappingOffset
に変更されました。この新しい方法では、スナップする次のオフセットをリクエストするだけです。境界の計算は実装レベルで行う必要があります。これは、スナップ方法によって異なる可能性があるためです。(I923a4)LazyStaggeredGrid
API が安定版に昇格しました。(I633a5)Horizontal/VerticalPager
からpageCount
を削除しました。これは状態の作成時に指定する必要があります。pageCount
を受け入れるようにPagerState
とrememberPagerState
を更新しました。(Ieb52d、b/266965072)Horizontal/VerticalPager
からpageCount
を削除しました。これは状態の作成時に指定する必要があります。pageCount
を受け入れるようにPagerState
とrememberPagerState
を更新しました。(Ifa3cb、b/266965072)- Pager の
SnapFlingBehavior
にshortSnapVelocityThreshold
を導入します。(I7379e、b/275579012) FlowRowScope
とFlowColumnScope
を追加します。(I54fe2)
バグの修正
- 制約に
minWidth
とminHeight
がある場合に Text のセマンティクスを取得する呼び出しがクラッシュしなくなりました。(Ibd072) Dialog
コンポーザブルによって作成されていないダイアログ内のテキスト フィールドにキーボードが表示されない回帰を修正しました。(I82551、b/262140644)
バージョン 1.5.0-alpha03
2023 年 4 月 19 日
androidx.compose.foundation:foundation:1.5.0-alpha03
と androidx.compose.foundation:foundation-layout:1.5.0-alpha03
がリリースされました。バージョン 1.5.0-alpha03 に含まれる commit については、こちらをご覧ください。
このリリースでは、Compose の新しいテキスト レンダリング スタックを有効にします。新しいスタックはパフォーマンスが最適化されているため、目に見える変化はありません。
レンダリングされたテキストに変更が見られる場合、NewTextRendering1_5 = false
を設定して動作の違いを確認することでデバッグできます。これを設定すると、強制的に再コンポーズされます。動作の違いはバグとして報告してください。
デバッグフラグは 1.5 beta01 リリース前に削除されます。(Iada23、b/246960758)
API の変更
FlowColumn/FlowRow
をインラインにしました。(Idab37)
バージョン 1.5.0-alpha02
2023 年 4 月 5 日
androidx.compose.foundation:foundation:1.5.0-alpha02
と androidx.compose.foundation:foundation-layout:1.5.0-alpha02
がリリースされました。バージョン 1.5.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
LazyGrid
で固定サイズのセルと、セルをクロス軸配置で配置する機能のサポートを追加しました。(I83ed9、b/235121277、b/267942510)LazyStaggeredGrid
で固定サイズのレーンのサポートを追加し、クロス軸配置で並べ替えられるようにしました。(I7d519)AnnotatedString
のUrlAnnotation
をTalkBack
などのユーザー補助サービスで開くことができるようになりました。(If4d82、b/253292081)- テキスト フィールドの
InsertTextAtCursor
セマンティクス アクションを追加しました。(I11ed5) - テキスト関連のテスト アクション(
performTextInput
など)は、フィールドをクリックするのではなく、セマンティクス アクションを使用してフォーカスを直接リクエストするようになりました。(I6ed05) FlowRow
のverticalArrangement
とFlowColumn
のhorizontalArrangement
を使用して、軸をまたぐ間隔や配置のサポートを追加しました。また、FlowRow/FlowColumn
の最上位のverticalAlignment
とhorizontalAlignment
も削除します。デベロッパーは代わりにModifier.align
を使用できます。これにより、verticalAlignment
とverticalArrangement
の命名規則の混同を軽減できます。(I87b60、b/268365538)
バージョン 1.5.0-alpha01
2023 年 3 月 22 日
androidx.compose.foundation:foundation:1.5.0-alpha01
と androidx.compose.foundation:foundation-layout:1.5.0-alpha01
がリリースされました。バージョン 1.5.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
- テキストと
BasicText
がリファクタリングされ、新しい修飾子システムを使用するようになりました。これにより、多くの場合、パフォーマンスが大幅に向上します。変更は表示されません。(If1d17、b/246961435) - テキスト エディタ ノードで IME アクションを呼び出すための
PerformImeAction
セマンティクス アクションを追加しました。(Ic606f、b/269633506)
バグの修正
Modifier.hoverable
の内部を更新しました。hoverable
修飾子は、有効になっている場合にのみインスペクタに表示されます。(I82103)
バージョン 1.4
バージョン 1.4.3
2023 年 5 月 3 日
androidx.compose.foundation:foundation:1.4.3
と androidx.compose.foundation:foundation-layout:1.4.3
がリリースされました。変更はありません(バージョンのみが引き上げられています)。
バージョン 1.4.2
2023 年 4 月 19 日
androidx.compose.foundation:foundation:1.4.2
と androidx.compose.foundation:foundation-layout:1.4.2
がリリースされました。バージョン 1.4.2 に含まれる commit については、こちらをご覧ください。
バージョン 1.4.1
2023 年 4 月 5 日
androidx.compose.foundation:foundation:1.4.1
と androidx.compose.foundation:foundation-layout:1.4.1
がリリースされました。バージョン 1.4.1 に含まれる commit については、こちらをご覧ください。
バージョン 1.4.0
2023 年 3 月 22 日
androidx.compose.foundation:foundation:1.4.0
と androidx.compose.foundation:foundation-layout:1.4.0
がリリースされました。バージョン 1.4.0 に含まれる commit については、こちらをご覧ください。
1.3.0 以降の重要な変更
- 絵文字互換の統合が
Text
とTextField
に加えて下位の Paragraph にも追加されました。絵文字互換の統合は emojicompat の設定時にデフォルトで有効になります。 PlatformParagraphStyle
を使用する特定の Text でEmojiCompat
を設定できるようになりました。LazyStaggeredGrid
に全行スパンへの対応を追加しました(I28252)- 試験運用版の
onHover
をClickableText
に追加しました (I6938f) CoroutineContext
パラメータを受け入れるrunComposeUiTest
関数とcreate*ComposeRule
関数に新しい試験運用版のオーバーロードを導入しました。コンテキストは、テスト コンポジションと、そのコンポジション内のすべてのLaunchedEffect
とrememberCoroutineScope()
の呼び出しで使用されます(I10614、b/265177763)FlowRow
とFlowColumn
が@ExperimentalFoundationApi
として利用できるようになりました。これにより、主軸に十分なスペースがない場合に改行を入れる、より柔軟な行と列に基づくコンポーネントのレイアウトが可能になります。(I3a7b2)Modifier.basicMarquee()
が、スクロールするマーキー効果を使用したコンテンツを表示するために試験的に利用できます。(I2df44、b/139321650)
バージョン 1.4.0-rc01
2023 年 3 月 8 日
androidx.compose.foundation:foundation:1.4.0-rc01
と androidx.compose.foundation:foundation-layout:1.4.0-rc01
がリリースされました。バージョン 1.4.0-rc01 に含まれる commit については、こちらをご覧ください。
API の変更
- プラットフォーム API と直接やり取りするカスタム テキスト入力の実装を構築するための新しいローレベルの
PlatformTextInputAdapter
API を導入しました。(I58df4) LazyStaggeredGrid
にリバース レイアウトのサポートを追加しました。(I3ef4a)
バグの修正
BasicTextField
のSetText
セマンティクス アクションは、IME の更新とテスト関数(performTextReplacement
など)と同じコードパスを使用してテキスト バッファを更新するようになりました。- テキスト テスト関数
performTextClearance
、performTextReplacement
、performTextSelection
でSemanticsActions
が使用されるようになりました。(I0807d、b/269633168、b/269624358)
バージョン 1.4.0-beta02
2023 年 2 月 22 日
androidx.compose.foundation:foundation:1.4.0-beta02
と androidx.compose.foundation:foundation-layout:1.4.0-beta02
がリリースされました。バージョン 1.4.0-beta02 に含まれる commit については、こちらをご覧ください。
API の変更
- 新しい
Modifier.Node.onReset()
コールバックを追加しました。これにより、一部のローカルの状態をリセットし、Layout
が再利用される場合のケース(LazyColumn
のアイテムなど)を適切に処理できるようになりました。FocusTargetModifierNode
を修正し、フォーカスされた状態を適切にリセットできるようにしました。(I65495、b/265201972) DrawScope.drawText
、Paragraph.paint
、MultiParagraph.paint
のメソッドにBlendMode
パラメータを追加し、Canvas にテキストを描画する際のさまざまなブレンド アルゴリズムをサポートしました。(I57508)modifierElementOf()
API を削除しました。代わりにModifierNodeElement
から直接拡張してください。(Ie6d21)
バグの修正
- 選択ハンドルを調整する際に、部分文字を選択できなくなりました。(Idedd1)
- 空の
TextField
で Ctrl + Backspace キーを押したときにクラッシュする問題を修正しました。(I0427f、b/244185537)
バージョン 1.4.0-beta01
2023 年 2 月 8 日
androidx.compose.foundation:foundation:1.4.0-beta01
と androidx.compose.foundation:foundation-layout:1.4.0-beta01
がリリースされました。バージョン 1.4.0-beta01 に含まれる commit については、こちらをご覧ください。
新機能
- 1.3 から、絵文字互換の統合が
Text
とTextField
に加えて下位の Paragraph にも追加されました。絵文字互換の統合は emojicompat の設定時にデフォルトで有効になります。 PlatformParagraphStyle
を使用する特定の Text でEmojiCompat
を設定できるようになりました。
API の変更
- コンポジションを終了するが引き続きアクティブである必要があるアイテムを保持するために、すべての
LazyLayouts
で使用されるPinnableContainer
API の一般的な実装を追加しました。(If45a4) PinnableContainer.PinnedHandle.unpin()
をrelease()
に変更しました。(I4667a)
外部からの協力
mainAxisItemSpacing
プロパティをLazyListLayoutInfo
、LazyGridLayoutInfo
、LazyStaggeredGridItemInfo
に追加しました(I52fad)
バージョン 1.4.0-alpha05
2023 年 1 月 25 日
androidx.compose.foundation:foundation:1.4.0-alpha05
と androidx.compose.foundation:foundation-layout:1.4.0-alpha05
がリリースされました。バージョン 1.4.0-alpha05 に含まれる commit については、こちらをご覧ください。
新機能
LazyStaggeredGrid
に全行スパンへの対応を追加しました(I28252)- 試験運用版の
onHover
をClickableText
に追加しました(I6938f) CoroutineContext
パラメータを受け入れるrunComposeUiTest
関数とcreate*ComposeRule
関数に新しい試験運用版のオーバーロードを導入しました。コンテキストは、テスト コンポジションと、そのコンポジション内のすべてのLaunchedEffect
とrememberCoroutineScope()
の呼び出しで使用されます(I10614、b/265177763)
API の変更
OverscrollEffect
の前または後の API を、「デコレータ」のapplyToScroll
関数とapplyToFling
関数に統合しました。新しい API の形でオーバースクロール効果を実装する方法の例については、ドキュメントの更新済みのサンプルをご覧ください(I8a9c4、b/255554340)- インライン関数または非推奨になった非表示関数の型や null 可能性を拡大しました(I24f91)
TextStyle
のLineBreak
API とHyphens
API が安定版に移行しました(Ic1e1d)
バグの修正
- アニメーションを無効にしても、テキスト フィールドのカーソルが引き続き点滅するようになりました(I95e70、b/265177763)
Modifier.basicMarquee
はシステム設定でアニメーションを無効にしても、アニメーション表示されるようになりました(I23389、b/262298306、b/265177763)
外部からの協力
TextInputSession
とTextInputService
のnotifyFocusedRect
メソッドは、再びサポートされるようになりました(I23a04、b/262648050)
バージョン 1.4.0-alpha04
2023 年 1 月 11 日
androidx.compose.foundation:foundation:1.4.0-alpha04
と androidx.compose.foundation:foundation-layout:1.4.0-alpha04
がリリースされました。バージョン 1.4.0-alpha04 に含まれる commit については、こちらをご覧ください。
新機能
FlowRow
とFlowColumn
が@ExperimentalFoundationApi
として利用できるようになりました。これにより、主軸に十分なスペースがない場合に改行を入れる、より柔軟な行と列に基づくコンポーネントのレイアウトが可能になります。(I3a7b2)Modifier.basicMarquee()
が、スクロールするマーキー効果を使用したコンテンツを表示するために試験的に利用できます。(I2df44、b/139321650)
API の変更
FocusRequesterModifier
が非推奨になり、FocusRequesterNode
に置き換えられました(I7f4d7、b/247708726、b/255352203、b/253043481、b/247716483、b/254529934、b/251840112、b/251859987 b/257141589)variationSettings
を指定されたAndroidFont
のコンストラクタが安定版 API になり、これを使用して新しい種類のフォント記述子を作成できるようになりました。(I5adcc、b/261565807)- コンポジション ローカルを介して遅延リストで伝播される
PinnableContainer
API を導入し、現在のアイテムを固定できるようになりました。このため、該当アイテムはビュー外にスクロールされても破棄されません。たとえば、Modifier.focusable()
では、この方法で現在フォーカスされているアイテムを固定します。(Ib8881、b/259274257、b/195049010) - スクロール可能なものが
bringIntoViewRequesters
とフォーカス可能なものに応答する方法を書き換えて、これらの操作の複雑さをより適切にモデル化して、対応できるエッジケースを増やしました。(I2e5fe、b/241591211、b/192043120、b/237190748、b/230756508、b/239451114) - 非推奨になった非表示関数の戻り値の型の null 可能性を拡大しました。(Ibf7b0)
- Text を
Static(default)
または Animated のいずれかに定義するために、試験的なTextMotion
をTextStyle
に追加しました。アニメーションを使って Text を拡大縮小、変換、回転する場合はTextMotion.Animated
を使用します。(I24dd7) - Android プラットフォームのフォーカス ナビゲーション動作を修正するために
TextFieldFocusModifier
を追加しました(I00303) - 他の
DrawScope
関数に合わせてdrawText
内のmaxSize: IntSize
引数をsize: Size
に置き換えました。size
は以前のデフォルト動作を変更しないようデフォルトでSize.Unspecified
に設定されます。(Icd27d)
バグの修正
- より自然に感じられるように、
SnapFlingBehaviour
でスナップの物理特性を調整しました。
既知の問題
androidx.compose.foundation:1.4.0-alpha03
からandroidx.compose.foundation:1.4.0-alpha04
に更新するときに、java.lang.NoSuchFieldError
エラーが発生することがあります。この問題はこちらで最初に報告されました。修正はすでに送信されており、次回の Compose アップデートで利用できるようになります。回避策として、androidx.compose.material
ライブラリとandroidx.compose.material3
ライブラリを最新バージョン(1.1.0-alpha04)に更新するか、androidx.compose.foundation
を 1.4.0-alpha03 にダウングレードしてください。
バージョン 1.4.0-alpha03
2022 年 12 月 7 日
androidx.compose.foundation:foundation:1.4.0-alpha03
と androidx.compose.foundation:foundation-layout:1.4.0-alpha03
がリリースされました。バージョン 1.4.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
- Compose ルールを使用した UI テストでは、
withFrameNanos
コールバック中に再開された継続は、すべてのフレーム コールバックの実行が終了するまでディスパッチされません。これは、正常に実行されている Compose の動作と一致します。ただし、以前の動作に依存するテストは失敗する可能性があります。これは、withFrameNanos
またはwithFrameMillis
を直接呼び出して、コールバック内への移動が必要になる可能性のあるそうした関数に渡される、コールバック外のロジックを持つコードにのみ影響があります。アニメーションのテストの変更については、こちらの CL の例をご覧ください。 TestMonotonicFrameClock
コンストラクタとファクトリ関数に、withFrameNanos
コールバックの後、呼び出し元のコルーチンを再開する前にコードを実行するための、オプションのonPerformTraversals: (Long) -> Unit
パラメータを追加しました。(Idb413、b/254115946、b/222093277、b/255802670)- ページのユーザー補助アクション
PageUp
、PageDown
、PageLeft
、PageRight
を導入しました。これらは API 29 からのみ利用可能です。(Ida4ab) - コンポーザブルをページャー形式で表示する
HorizontalPager
とVerticalPager
を導入しました。ページャーを制御し、ページャーの現在の状態に関する情報をクエリするPagerState
を導入しました。ページャーのページサイズを制御するPageSize
を導入しました。これを使用してページャーなどのカルーセルを作成できます。ページャーがフリングされたときのスナップ動作を制御するPagerSnapDistance
を導入しました。(I01120) - フリングが終わる地点を認識しやすくするため、
SnapFlingBehavior.performFling
にオーバーロードを導入しました。(I569f6) OverscrollEffect#isEnabled
を削除しました。このフラグを覚えて設定する必要はありません。オーバースクロール効果を使用しない場合は(たとえば、ScrollableState#canScrollForward/backward
の両方が false を返す)、オーバースクロール効果にイベントをディスパッチしないようにするだけです。(I1a4b0、b/255554340、b/255557085)ScrollableState#canScrollForward
とScrollableState#canScrollBackward
が追加され、いずれかの方向にスクロールするスペースがScrollableState
にあるかどうか(範囲内の最小値または最大値でないか)をクエリできるようになりました。ScrollableState
の既存の実装との下位互換性を維持するため、これはデフォルトで true になります。これを使用して、スクロールするスペースがまだあることをユーザーに示すことができます。また、特定の方向にスクロールするスペースがないScrollableStates
に相対値をディスパッチしないようにして、不要な処理を減らすこともできます。(Idf1a0、b/255557085)- 祖先のスクロール情報をクエリするための Modifier API を追加しました。(I2ba9d、b/203141462)
- ジェスチャーがスクロール イベントになる可能性がある場合にタップ操作を正しく遅延させるために
Clickable
で使用します。 Scrollable ViewGroup
内で使用する場合にClickables
がリップルを正しく遅延しない問題を修正しました。- ジェスチャーがスクロール イベントになる可能性がある場合にタップを正しく遅延するように Drawers と Sheets を更新しました。
SnapLayoutInfoProvider
の他のメソッドと一貫性を持たせるため、snapStepSize
の命名を更新しました。(Ife67c)EmojiCompat
をCompose
に追加しました(Ibf6f9、b/139326806)- 修飾子
consumedWindowInsets()
の名前をconsumeWindowInsets()
に、withConsumedWindowInsets()
の名前をonConsumedWindowInsetsChanged()
に変更し、公開しました。(Ie44e1)
バグの修正
Modifier.animateItemPlacement()
と Lazy グリッドでのクラッシュを修正しました。これは、新しいアイテムの数が前のアイテムの数より少ない状況で発生していました。(I0bcac、b/253195989)
バージョン 1.4.0-alpha02
2022 年 11 月 9 日
androidx.compose.foundation:foundation:1.4.0-alpha02
と androidx.compose.foundation:foundation-layout:1.4.0-alpha02
がリリースされました。バージョン 1.4.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
- 柔軟性を高めるため、
awaitFirstDown
とwaitForUpOrCancellation
がPointerEventPass
を受け取るようになりました。(I7579a、b/212091796) beyondBoundCount
API を Lazy* API から元に戻しました(I12197)- ビューポートのアイテムの外にコンポーズして配置するパラメータを Lazy API に導入しました(I69e89、b/172029355)
minLines
パラメータをBasicText
とBasicTextField
に追加しました。これにより、これらのコンポーザブルの最小の高さを行数で設定できるようになりました。(I24294、b/122476634)
バージョン 1.4.0-alpha01
2022 年 10 月 24 日
androidx.compose.foundation:foundation:1.4.0-alpha01
と androidx.compose.foundation:foundation-layout:1.4.0-alpha01
がリリースされました。バージョン 1.4.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
- ジェスチャー検出器の新しいメソッド
awaitEachGesture()
が追加されました。これはforEachGesture()
と同じように動作しますが、ジェスチャーのループはAwaitPointerEventScope
内で完全に動作するため、反復処理間でイベントが失われることはありません。 - ジェスチャー間でイベントが失われてしまうため、
forEachGesture()
が非推奨になり、awaitEachGesture()
に置き換えられました。(Iffc3f、b/251260206) - アニメーションの進行状況を判断し、アニメーション完了後の IME の位置を把握できるように、
WindowInsets.imeAnimationSourc
e とWindowInsets.imeAnimationTarget
を追加しました。(I356f1、b/217770337)
バージョン 1.3
バージョン 1.3.1
2022 年 11 月 9 日
androidx.compose.foundation:foundation:1.3.1
と androidx.compose.foundation:foundation-layout:1.3.1
がリリースされました。バージョン 1.3.1 に含まれる commit については、こちらをご覧ください。
バグの修正
BeyondBoundsLayout
のパフォーマンスの問題を修正しました。(aosp/2255266)ContentInViewModifier
は、アタッチされない限りレイアウト座標を読み取りません。(aosp/2241316)
バージョン 1.3.0
2022 年 10 月 24 日
androidx.compose.foundation:foundation:1.3.0
と androidx.compose.foundation:foundation-layout:1.3.0
がリリースされました。バージョン 1.3.0 に含まれる commit については、こちらをご覧ください。
1.2.0 以降の重要な変更
LazyVerticalStaggeredGrid
とLazyHorizontalStaggeredGrid
の試験運用版が導入されました。SnapFlingBehavior
、rememberSnapFlingBehavior
、および対応する他の API を試験運用版として追加しました。- リモコンのキーボードまたは D-pad をクリックすると、
Modifier.clickable
、Modifier.toggleable
、Modifier.selectable
の波紋が表示されるようになりました。
バージョン 1.3.0-rc01
2022 年 10 月 5 日
androidx.compose.foundation:foundation:1.3.0-rc01
と androidx.compose.foundation:foundation-layout:1.3.0-rc01
がリリースされました。バージョン 1.3.0-rc01 に含まれる commit については、こちらをご覧ください。
API の変更
- フリング速度が不足しているため減衰できない場合にアプローチ ステップで使用される
lowVelocityAnimationSpec
を導入しました。(Iaeb27) - テキストで自動ハイフネーションをサポートする、Hyphens という新しい試験運用版 API を追加しました(Iaa869)
バージョン 1.3.0-beta03
2022 年 9 月 21 日
androidx.compose.foundation:foundation:1.3.0-beta03
と androidx.compose.foundation:foundation-layout:1.3.0-beta03
がリリースされました。バージョン 1.3.0-beta03 に含まれる commit については、こちらをご覧ください。
API の変更
- Text の改行をカスタマイズするオプションを追加しました。(I86907)
BringIntoViewResponder
が、リクエストの処理中に最新の境界を取得できるようになりました。(If86a5、b/241591211)- 試験運用版の
Staggered Grid
でアイテム間のスペースがサポートされるようになりました。(I10b82) - 試験運用版の
Staggered Grid
にコンテンツのパディングが導入されました。(I342ea) - 最小幅の制約をサポートするよう、
TextMeasurer.measure
メソッドのsize:IntSize
引数をconstraints: Constraints
に変更しました。(I37530、b/242707525) Modifier.withConsumedWindowInsets()
が追加され、WindowInsets
を消費してwindowInsetsPadding
の外部で使用できるようになりました。MutableWindowInsets
が追加され、再コンポーズなしでWindowInsets
を簡単に変更できるようになりました。(I7fd28、b/237019262、b/243119659)
バージョン 1.3.0-beta02
2022 年 9 月 7 日
androidx.compose.foundation:foundation:1.3.0-beta02
と androidx.compose.foundation:foundation-layout:1.3.0-beta02
がリリースされました。バージョン 1.3.0-beta02 に含まれる commit については、こちらをご覧ください。
API の変更
- 試験運用版
StaggeredGrid
の初期バージョン(Ia48be) FocusDirection.In
とFocusDirection.Out
の名前をFocusDirection.Enter
とFocusDirection.Exit
に変更しました(Ia4262、b/183746982)。LazyLists
で簡単にスナップできるrememberSnapFlingBehavior
オーバーロードを導入しました(Ifb48a)。snapFlingBehavior
Factory を具象SnapFlingBehavior
クラスに置き換えました。API ユーザーが Dp<->Px 変換を簡単にできるようにするため、SnapLayoutInfoProvider
メソッドの範囲を Density にまで拡張しました(I54a11)。LazyLayoutMeasureScope.measure
を更新して、変更可能な値のリストを返すようにしました。変更する必要のない戻り値はハイライト表示されます(I48b7c)。SnapLayoutInfoProvider
を導入し、LazyLists
用にFlingBehavior
をスナップするために使用可能なSnapLayoutInfoProvider
のインスタンスをLazyListState
で作成できるようにしました(I2dd10)。
バグの修正
- 他の await 関数と一致するように
AwaitPointerEventScope#awaitLongPressOrCancellation
をリファクタリングしました(I646e6)。
バージョン 1.3.0-beta01
2022 年 8 月 24 日
androidx.compose.foundation:foundation:1.3.0-beta01
と androidx.compose.foundation:foundation-layout:1.3.0-beta01
がリリースされました。バージョン 1.3.0-beta01 に含まれる commit については、こちらをご覧ください。
API の変更
OverscrollEffect
からpointerPosition
を削除しました。ポインタ位置を重視するエフェクトではeffectModifier
のModifier.pointerInput { }
を使用して、現在のポインタ位置を代わりに取得できます。(I9f606、b/241239306)- より複雑なジェスチャー検出の構成要素として
AwaitPointerEventScope#awaitLongPressOrCancellation
を公開しました。(I04374、b/181577176) - Lazy リストのスナップを可能にする
lazyListSnapLayoutInfoProvider
を導入しました。(I3ecdf) - リストのスナップを可能にするフリング動作である
SnapFlingBehavior
が導入されました。スナップ レイアウトに関する情報を含むSnapLayoutInfoProvider
のインスタンスを提供します。(Ie754c)
バージョン 1.3.0-alpha03
2022 年 8 月 10 日
androidx.compose.foundation:foundation:1.3.0-alpha03
と androidx.compose.foundation:foundation-layout:1.3.0-alpha03
がリリースされました。バージョン 1.3.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
- リソース フォントが、フォント バリエーションの設定をサポートするようになりました(API 26 以上)。(I900dd、b/143703328)
DeviceFontFamilyNameFont
で可変フォントがサポートされるようになりました。(Ic1279、b/143703328)PlatformTextStyle
およびLineHeightStyle
から試験運用版アノテーションを削除しました。(I64bef)VisualTransformation
によって提供されるOffsetMapping
が無効なインデックスを返す場合に、テキスト フィールドで詳細な例外がスローされるようになりました。(Ie73f9、b/229378536)- Lazy レイアウト間でアイテム プロバイダ ロジックを共有するための試験運用版 API を導入しました。(Ic891c)
ScrollableDefaults.reverseDirection()
は試験運用版ではなくなりました。(Iba646)SemanticsModifier.id
のサポートを終了し、セマンティクス ID をLayoutInfo.semanticsId
に移動しました。(Iac808、b/203559524)checkScrollableContainerConstraints()
は試験運用版ではなくなりました。(I2c290)Modifier.clipScrollableContainer()
は試験運用版ではなくなりました。(Ia2b44)TextInputService.show|hideSoftwareKeyboard
のサポートが終了しました。代わりに、アプリコードではSoftwareKeyboardController
、IME 管理コードではTextInputSession
を使用してください。(I14e4c、b/183448615)
バージョン 1.3.0-alpha02
2022 年 7 月 27 日
androidx.compose.foundation:foundation:1.3.0-alpha02
と androidx.compose.foundation:foundation-layout:1.3.0-alpha02
がリリースされました。バージョン 1.3.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
Canvas
やdrawBehind
のようなDrawScope
で動作するコンポーザブルや修飾子に、マルチスタイルのテキストを描画できるように、DrawScope
にdrawText
拡張関数を追加しました。(I16a62、b/190787898)
バグの修正
- フォーカスされているテキスト欄が無効になると、ソフト キーボードも非表示とするようにしました。(I6e3e4、b/237308379)
- 速度トラッカーに
InputEventChange
イベントを追加する際に位置ではなく差分を考慮することで、ターゲット要素が移動した場合も含めて、すべてのケースで速度が正確に計算されるようにしました。(Icea9d、b/216582726、b/223440806、b/227709803) - スクロール可能なオブジェクトに、フォーカスされた子がある場合、サイズが縮小されても、アニメーションでサイズが変更されても、正しくスクロールして、フォーカスされた子を常に表示するようにしました。(I80867、b/230756508、b/220119990)
- 選択が有効なときに、
TextField
がクリアされて再入力されるクラッシュを修正しました。(I1235b、b/208655565、b/214253689)
バージョン 1.3.0-alpha01
2022 年 6 月 29 日
androidx.compose.foundation:foundation:1.3.0-alpha01
と androidx.compose.foundation:foundation-layout:1.3.0-alpha01
がリリースされました。バージョン 1.3.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
AnnotatedString
のTalkBack
のリンクをサポートするために、UrlAnnotation
のアノテーション タイプと関連メソッドを導入しました。(I1c754、b/231495122)
バグの修正
- カーソル タイマーを再起動せずに
BasicTextField
cursorBrush
をアニメーション化できるようになりました。(I812e6、b/236383522)
バージョン 1.2
バージョン 1.2.1
2022 年 8 月 10 日
androidx.compose.foundation:foundation:1.2.1
と androidx.compose.foundation:foundation-layout:1.2.1
がリリースされました。バージョン 1.2.1 に含まれる commit については、こちらをご覧ください。
バージョン 1.2.0
2022 年 7 月 27 日
androidx.compose.foundation:foundation:1.2.0
と androidx.compose.foundation:foundation-layout:1.2.0
がリリースされました。バージョン 1.2.0 に含まれる commit については、こちらをご覧ください。
1.1.0 以降の重要な変更
LazyVerticalGrid
とLazyHorizontalGrid
が安定版になりました。- Lazy リストと Lazy グリッドのアイテムにコンテンツ タイプを指定できるようになりました。これにより、コンポーネントで要素をさらに効率よく再利用できるようになります。
- Lazy リストと Lazy グリッドに
userScrollEnabled
パラメータを追加し、ユーザーの操作によるスクロールを無効にできるようにしました。 LazyLayout
という新しい試験運用版 API を追加しました。これは、Lazy リストや Lazy グリッドの動きを速くするために内部で使用する API です。OverscrollEffect
API を試験運用版として導入しました。カスタムのオーバースクロール効果が定義できるようになり、スクロール可能なカスタム コンテナに標準プラットフォームを追加することにもなります。- ビュー間の相互運用性を考慮し、スクロール アクターを作成するために、ネストされたスクロールの相互運用性 API を導入しました。
- すべてのスクロール コンテナにマウスとトラックパッドのスクロールを追加しました。
バージョン 1.2.0-rc03
2022 年 6 月 29 日
androidx.compose.foundation:foundation:1.2.0-rc03
と androidx.compose.foundation:foundation-layout:1.2.0-rc03
がリリースされました。バージョン 1.2.0-rc03 に含まれる commit については、こちらをご覧ください。
- 1.2.0-rc02 からの変更はありません。
バージョン 1.2.0-rc02
2022 年 6 月 22 日
androidx.compose.foundation:foundation:1.2.0-rc02
と androidx.compose.foundation:foundation-layout:1.2.0-rc02
がリリースされました。バージョン 1.2.0-rc02 に含まれる commit については、こちらをご覧ください。
バージョン 1.2.0-rc01
2022 年 6 月 15 日
androidx.compose.foundation:foundation:1.2.0-rc01
と androidx.compose.foundation:foundation-layout:1.2.0-rc01
がリリースされました。バージョン 1.2.0-rc01 に含まれる commit については、こちらをご覧ください。
API の変更
- カスタムのオーバースクロール効果とそれを受け入れる
Modifier.scrollable
のオーバーロードを可能にするために、試験運用版のOverscrollEffect
が導入されました。 - 試験運用版の
LocalOverScrollConfiguration
をfoundation.gesture
から foundation パッケージに移動し、名前をLocalOverscrollConfiguration
に変更しました。(If19fb、b/204650733) - compose ライブラリのインターフェースが jdk8 デフォルト インターフェース メソッドを使ってビルドされるようになりました。(I5bcf1)
- スクロール可能なコンテナがネストされていないことを確認できるように、試験運用版の API
checkScrollableContainerConstraints()
が導入されました。スクロール可能な遅延レイアウトをLazyLayout
で独自に作成する場合に使用できます。(Id6fab、b/233352497) - サポートが終了した
LazyVerticalGrid
をandroidx.compose.foundation.lazy
パッケージから削除しました。新しい安定版 API はandroidx.compose.foundation.lazy.grid
にあります。(I73c76、b/225192009)
バージョン 1.2.0-beta03
2022 年 6 月 1 日
androidx.compose.foundation:foundation:1.2.0-beta03
と androidx.compose.foundation:foundation-layout:1.2.0-beta03
がリリースされました。バージョン 1.2.0-beta03 に含まれる commit については、こちらをご覧ください。
API の変更
- 新しい試験運用版の
IntervalList
とMutableIntervalList
を追加しました。これにより、複数の間隔を通じて、いくつかの値の一覧を表示できます。LazyColumn
で使用されるものと同様の DSL を独自に定義して、複数のアイテム呼び出しを通じてリスト アイテムを定義できるようにしたい場合に便利です。(I2d05e、b/228580728)
バグの修正
WindowInsets.ime
のドキュメントを明確化し、ime
インセットについて、レポート作成は API 23 までさかのぼれるが、アニメーション表示は 30 以降でしかできないことを明記しました。(Ia7fc0、b/230756508)- カーソルがテキスト フィールドの末尾にあるときに Delete キーを押してもクラッシュしなくなりました。
DeleteSurroundingTextCommand
とDeleteSurroundingTextInCodePointsCommand
において、コンストラクタ引数が負数でないことが必須になりました。(Ica8e6、b/199919707)
バージョン 1.2.0-beta02
2022 年 5 月 18 日
androidx.compose.foundation:foundation:1.2.0-beta02
と androidx.compose.foundation:foundation-layout:1.2.0-beta02
がリリースされました。バージョン 1.2.0-beta02 に含まれる commit については、こちらをご覧ください。
- 以前に Text または
TextField
のレイアウト サイズを変更していないダウンロード可能なフォント解像度が再描画されないため、フォントの表示が古くなります。このバグ修正により、テキスト レイアウトは常に再描画をトリガーするようになります(b/229727404)。(I1d49e、b/229727404)
バージョン 1.2.0-beta01
2022 年 5 月 11 日
androidx.compose.foundation:foundation:1.2.0-beta01
と androidx.compose.foundation:foundation-layout:1.2.0-beta01
がリリースされました。バージョン 1.2.0-beta01 に含まれる commit については、こちらをご覧ください。
新機能
- これは、1.2 ベータ版の最初のリリースです。
API の変更
- 試験運用版の
BeyondBoundsInterval
を追加しました。これは、LazyList
のカスタム実装が可視境界を超えてアイテムをレイアウトする際に使用できます。(Ifabfb、b/184670295) LineHeightBehavior
の名前がLineHeightStyle
に変更されました。LineVerticalAlignment
の名前がLineHeightStyle.Alignment
に変更されました。LineHeightTrim
の名前がLineHeightStyle.Trim
に変更されました。LineHeightStyle
のデフォルトのコンストラクタ値が削除されました。(I582bf、b/181155707)LazyLayoutItemProvider
インターフェースの省略可能なメンバーのデフォルト値を追加しました。(Iba8a0)LazyLayoutItemProvider
API に、インデックスでコンポーズ可能なラムダを返すファクトリの代わりとして、インデックスを受け入れるシンプルなコンポーズ可能な関数 Item を追加しました。(Id2196)- LazyLayoutItemsProvider の名前が LazyLayoutItemProvider に変更されました。(I0638c)
LazyLayoutItemsProvider.itemsCount
の名前がitemCount
に変更されました。(Id409c)- グラデーション カラーを使用してテキストを描画できるように、
TextStyle
とSpanStyle
にブラシを追加しました。(I53869、b/187839528) LineHeightBehavior
の属性trimFirstLineTop
とtrimLastLineBottom
を単一の列挙型LineHeightTrim
に変更しました。LineHeightTrim
には、2 つのブール値(FirstLineTop
とLastLineBottom
)、Both、None によって定義される 4 つの状態の値があります。(Ifc6a5、b/181155707)TextStyle
とParagraphStyle. LineHeightBehavior
にLineHeightBehavior
を追加しました。これは、行の高さを最初の行の最上部と最後の行の最下部に適用するかどうかを制御します。また、TextStyle
(lineHeight
) によって指定されるスペース内の行の配置も定義します。たとえば、CSS で
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
により定義される動作と同様の動作を実現できます。設定
trimFirstLineTop
およびtrimLastLineBottom
は、includeFontPadding
が false の場合のみ正しく機能します。(I97332、b/181155707)デベロッパーがスクロールによって IME を制御できるように、試験運用版の
imeNestedScroll()
修飾子を追加しました。(I60759)
バグの修正
- フォーカスされているときにコンポジションから削除された場合、テキスト フィールドがキーボードを隠さない回帰を修正しました。(I7a410、b/230536793、b/225541817)
- 高さに制限があり、テキスト行の全体が収まらない場合に、省略記号を使用できるようになりました。(Ie528c、b/168720622)
BringIntoViewRequester.bringIntoView
は、リクエストが完了するか、より新しい重複しないリクエストによって中断されるまで、常に一時停止するようになりました。重複するリクエストはキューに入れられます。(I43e7f、b/216790855)- 完全に重なっている長方形に対する
BringIntoViewRequester.bringIntoView
の同時実行呼び出しで、大きい方の長方形のリクエストのみが考慮されるようになりました。(I34be7、b/216790855、b/184760918) - デフォルトで
includeFontPadding
がオンになります。TextStyle.platformTextStyle
属性を使用するとincludeFontPadding
をオフにできます。近い将来、デフォルトの動作が変更されますが、それまではこの方法で行の高さを改善し(aosp/2058653)、TextField
のクリッピングの問題を解決できます。(I01423、b/171394808) Modifier.bringIntoViewRequester
はonGloballyPositioned
を使用しなくなりました。(I630f5)
外部からの協力
- Android で垂直方向にスクロールすると、
MouseInjectionScope.scroll(delta = someDelta)
が反転するようになりました(someDelta が正値の場合、下方向にスクロールします)。(Ifb697、b/224992993)
バージョン 1.2.0-alpha08
2022 年 4 月 20 日
androidx.compose.foundation:foundation:1.2.0-alpha08
と androidx.compose.foundation:foundation-layout:1.2.0-alpha08
がリリースされました。バージョン 1.2.0-alpha08 に含まれる commit については、こちらをご覧ください。
API の変更
FontFamily.SansSerif
を使用すると、Android のシステム フォントで利用可能な太さがすべて表示されます。これにより、API 21~28 の内部で sans-serif-medium のような代替フォント名が使用されます。これまで API 21~28 では太さ 400 と 700 のみがサポートされていたため、動作が変更されます。(I380fe、b/156048036、b/226441992)- Paragraph と MultiParagraph が Constraints パラメータを受け入れるようになりました。現時点では
Constraints.maxHeight
を渡しても機能しませんが、今後、高さに基づいて省略するなど、いくつかの計算を行うことが可能になる予定です。(I6afee、b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
は、新しいアイテムの追加を許可しない MutableSet のようなカスタムクラスを受け入れるようになりました。(Icd314)PointerInputChange
での部分的な消費(down または position)が非推奨になりました。consume()
を使用すると、変更を完全に使用できます。isConsumed
を使用すると、以前にその変更が他のユーザーに使われたかどうかを確認できます。PointerInputChange::copy()
が常にシャローコピーを作成するようになりました。つまり、PointerInputChange
のコピーのいずれか 1 つが使用されると、以降はそれらのコピーが使用されます。バインドされていないPointerInputChange
を作成するには、代わりにコンストラクタを使用します。(Ie6be4、b/225669674)- 新しい試験運用版の
LazyLayout
API が導入されました。これにより、LazyVerticalGrid
のLazyColumn
のような独自のコンポーネントを構築できます。この API は初期段階にあるため、今後のリリースで変更される可能性があります。(Iba2bc、b/166591700) AndroidFont
は、typefaceLoader
をコンストラクタ パラメータとして受け取るようになりました。(I2c971)WindowInsets
コンパニオンは、デバイスで利用できるが現在アクティブではない場合、可視性(ウィンドウと交差しているかどうかに関係なく、画面上にあるかどうか)と可能なサイズを示すようになりました。(I65182、b/217770337)
バージョン 1.2.0-alpha07
2022 年 4 月 6 日
androidx.compose.foundation:foundation:1.2.0-alpha07
と androidx.compose.foundation:foundation-layout:1.2.0-alpha07
がリリースされました。バージョン 1.2.0-alpha07 に含まれる commit については、こちらをご覧ください。
API の変更
- 現在コンポーズされているアイテムが破棄されるのを Lazy レイアウトの子が阻止できるようにする
PinnableParent
API を追加しました。(Ibbdd0、b/184670295) LazyListLayoutInfo
とLazyGridLayoutInfo
にbeforeContentPadding
フィールドとafterContentPadding
フィールドを追加しました。(I3b628、b/200920410)- IME に小数点記号を含めるために、
Keyboard.Number
の代わりとしてKeyboardType.Decimal
を追加しました。(Iec4c8、b/209835363) - 新しいフォント記述子 Font(DeviceFontFamilyName) を追加し、フォントのフォールバック チェーン中にシステムがインストールしたフォントを必要に応じて検索できるようにしました。(I30468、b/219754572)
PointerEventType.Scroll
とPointerEvent.scrollDelta
が安定版 API になりました。(I574c5、b/225669674)TextStyle/ParagraphStyle. includeFontPadding
のincludeFontPadding
のために一時的な互換性設定が追加され、TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
を介して変更できるようになりました。これは移行を可能にするための一時的な設定オプションで、後で削除されます。(If47be、b/171394808)- システム全体における太字テキストのユーザー補助設定を統合するように
FontFamily.Resolver
を更新しました。(I6c1e7) ComposeView
のconsumeWindowInsets
拡張プロパティを使用すると、デベロッパーは Android WindowInset の消費を無効にできます。これにより、階層内の個々のComposeViews
が互いに干渉することなく、それぞれWindowInsets
を適用できます。(I0ef08、b/220943142)
バージョン 1.2.0-alpha06
2022 年 3 月 23 日
androidx.compose.foundation:foundation:1.2.0-alpha06
と androidx.compose.foundation:foundation-layout:1.2.0-alpha06
がリリースされました。バージョン 1.2.0-alpha06 に含まれる commit については、こちらをご覧ください。
API の変更
- フォーカス可能なターゲットでフォーカスをリクエストするための
RequestFocus
セマンティクス アクションを追加しました。(I17b71) FocusOrder
をFocusProperties
に統合して、focusProperties()
にfocusOrder()
のすべての機能が含まれるようにしました。FocusOrder
とfocusOrder()
が非推奨になりました。focusRequester
を受け取るfocusOrder()
は、focusRequester()
修飾子とfocusProperties()
の組み合わせに置き換える必要があります。これにより、懸念事項である修飾子の区別がより強力になります。(I601b7)WindowInsets.asPaddingValues(Density)
を追加し、デベロッパーが変換を行う際にコンポジション内である必要をなくしました。(I94c35)- ベクター型ドローアブルの解析を更新して、現在のレイアウト方向が RTL の場合に
VectorPainter
のコンテンツを切り替える自動ミラーリングをサポートするようにしました。(I79cd9、b/185760237)
バグの修正
- スクロール領域のサイズが変更され、フォーカスされているコンポーザブルが変更前は表示されていた場合に、フォーカスされていたコンポーザブルを表示し続けるよう、スクロール修飾子(
Modifier.verticalScroll()
、Modifier.horizontalScroll()
、Modifier.scrollable()
)がスクロールするようになりました。 - TextField が非遅延スクロール可能領域の内側にあり、ソフト入力モードが
ADJUST_RESIZE
のときに、TextField がフォーカスされてキーボードが表示された場合、TextField が隠れないようキーボードの上に保持されるようになりました。(I4a485、b/190539358、b/192043120、b/216842427)
バージョン 1.2.0-alpha05
2022 年 3 月 9 日
androidx.compose.foundation:foundation:1.2.0-alpha05
と androidx.compose.foundation:foundation-layout:1.2.0-alpha05
がリリースされました。バージョン 1.2.0-alpha05 に含まれる commit については、こちらをご覧ください。
API の変更
LazyVerticalGrid
とLazyHorizontalGrid
が安定版になりました。(I307c0)LazyGridItemInfo.Unknown
がLazyGridItemInfo.UnknownRow
とLazyGridItemInfo.UnknownColumn
に分けて置き換えられました。(I56d51)LazyVerticalGrid
/LazyHorizontalGrid
とすべての関連 API を.grid
サブパッケージに移動しました。インポートをandroidx.compose.foundation.lazy
からandroidx.compose.foundation.lazy.grid
に更新してください。(I2d446、b/219942574)- テキスト:
includeFontPadding
がデフォルトでオフになりました。includeFontPadding=false
の結果として起きるクリッピングの問題は対処され、縦長文字ではクリッピングが起きなくなりました。(I31c84、b/171394808) - Measured インターフェースが parentData プロパティを公開するようになりました。(I3313f)
- 試験運用版の
Modifier.onFocusedBoundsChanged
が導入され、子の focusable の境界を監視できるようになりました。(I14283、b/220030968、b/190539358、b/192043120、b/216842427) - LazyHorizontalGrid を追加しました。(I61ae7、b/191238807)
- 交差軸のサイズを定義する
LazyVerticalGrid
API を新たに追加しました。(I17723) - FocusGroup 修飾子を追加しました。(I64bc0、b/213508274、b/184670295)
バグの修正
WindowInsets.toString()
に正しい値が表示されるようになりました。(I1585d)
外部からの協力
- Kotlinx コルーチン 1.6.0 を使用するように更新されました(I3366d)
バージョン 1.2.0-alpha04
2022 年 2 月 23 日
androidx.compose.foundation:foundation:1.2.0-alpha04
と androidx.compose.foundation:foundation-layout:1.2.0-alpha04
がリリースされました。バージョン 1.2.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
BringIntoViewResponders
で、リクエストを親レスポンダに手動で渡す必要がなくなりますが、代わりに親を表示する長方形を直ちに返す必要があります。(I8e66a)- Text の非同期フォント読み込みをサポートしました(I77057、b/214587005)
LazyVerticalGrid
で、スパンが現在の行内に収まらないアイテムの前でline breaking
をサポートするようになりました。(I05c40、b/207462103)excludeFromSystemGestures
の名前がsystemGesturesExclusion
に変更されました。(I19526)LazyVerticalGrid
が reverseLayout をサポートするようになりました。(I6d7d7、b/215572963、b/211753558)WindowInsets.only()
メソッドを追加して、デベロッパーが WindowInsets からのディメンションのみを含めることができるようになりました。(I14c94、b/217768486)ComposableTarget
、ComposableTargetMarker
、ComposableOpenTarget
を追加しました。使用が想定されていない Applier を対象としてコンポーズ可能な関数が呼び出された場合について、コンパイル時のレポートが可能になります。ほとんどの場合、アノテーションは Compose コンパイラ プラグインによって推定されます。そのため、これらのアノテーションを直接使用することはめったにありません。推定できないケースとしては、カスタム Applier、コンポーズ可能な抽象関数(インターフェース メソッドなど)、コンポーズ可能なラムダであるフィールドまたはグローバル変数(ローカル変数とパラメータは推定される)を作成および使用する場合や、
ComposeNode
または関連するコンポーズ可能な関数を使用する場合が挙げられます。カスタム Applier の場合は、
ComposeNode
またはReusableComposeNode
を呼び出すコンポーズ可能な関数が、関数に対してCompoableTarget
アノテーションとコンポーズ可能なラムダのパラメータ型を追加する必要があります。ただし、ComposableTargetMarker
を付けてアノテーションを作成し、ComposableTarget
を直接使用する代わりに、そのマークされたアノテーションを使用することをおすすめします。ComposableTargetMarker
でマークされたコンポーズ可能なアノテーションは、Applier パラメータとして属性クラスの完全修飾名を持つComposbleTarget
と同等になります。ComposableTargetMarker
の使用例については、anroidx.compose.ui.UiComposable
をご覧ください。(I38f11)
バグの修正
LazyGridState.scrollToItem()
とLazyGridState.animateScrollToItem()
に負のスクロール オフセットを渡せるようになりました。(I025c6、b/211753558)- TextField の非同期フォント読み込みをサポートしました。(Icc4bf、b/214587005)
バージョン 1.2.0-alpha03
2022 年 2 月 9 日
androidx.compose.foundation:foundation:1.2.0-alpha03
と androidx.compose.foundation:foundation-layout:1.2.0-alpha03
がリリースされました。バージョン 1.2.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
TextInputSession
とTextInputService
のnotifyFocusedRect
メソッドが非推奨となり、呼び出されなくなりました。代わりにBringIntoViewRequester
を使用してください。(Ia4302、b/192043120、b/216842427、b/178211874)- Modifier.animateItemPlacement() を使用して遅延グリッドのアイテムをアニメーション化できるようになりました。(Ib6621、b/211753218)
BringIntoViewRequester
が、ホストの Android View にリクエストを伝えるようになりました。(Ia7a51)FontFamilyResolver
をLocalFontFamilyResolver.current
から利用できるようになりました- Compose の使用以外で新しい FontFamily リゾルバを作成するための
createFontFamilyResolver(context)
とcreateFontFamilyResolver(context, coroutineScope)
を追加しました。 - Paragraph と MultiParagraph が
FontFamily.Resolver
を使用するようになりました TextLayoutResult.layoutInput.fontFamilyResolver
に、このレイアウトで使用されるリゾルバが含まれるようになりました。TextLayoutResult.layoutInput.resourceLoader
は使用されなくなったため、非推奨になりました。(Id5a45、b/174162090)
- Compose の使用以外で新しい FontFamily リゾルバを作成するための
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)
LazyVerticalGrid
のアイテムのコンテンツ タイプを指定できるようになりました。LazyGridScope
のアイテムの関数が、このパラメータを受け入れるようになりました。このような情報を提供することで、アイテム コンポジションの再利用ロジックが効率化され、類似したタイプのアイテム間でのみコンテンツが再利用されるようになります。(I7b355、b/215372836)LazyListLayoutInfo
とLazyGridLayoutInfo
に新しいプロパティviewportSize
、orientation
、reverseLayout
が追加されました(Ifc8ed、b/200920410)- LazyColumn / LazyRow のアイテムのコンテンツ タイプを指定できるようになりました。LazyListScope のアイテムの関数が、このパラメータを受け入れるようになりました。このような情報を提供することで、アイテム コンポジションの再利用ロジックが効率化され、類似したタイプのアイテム間でのみコンテンツが再利用されるようになります。(I26506)
maxSlotsToRetainForReuse
を受け入れるSubcomposeLayoutState
コンストラクタのサポートが終了しました。代わりに、SubcomposeSlotReusePolicy
を受け入れる新しいコンストラクタが追加されました。これは、将来の再利用のために保持するスロットをきめ細かく制御できる新しいインターフェースです。(I52c4d)- WindowInsets の修飾子を、パディングとサイズ調整の両方に追加しました。これにより、一部のコンテンツをインセット領域内に拡張しつつ、主要なコンテンツをインセット領域外に置くことができます。たとえば、windowInsetsPadding を使用すると、完全にまたは部分的に覆われる可能性のある領域を避けるよう、コンテンツ領域にパディングを設定できます。(Id0395、b/213942085)
バグの修正
- ソフト入力モードが
ADJUST_PAN
のときに、TextField がフォーカスされてキーボードが表示された場合、TextField が隠れないようキーボードの上に保持されるようになりました。(I8eaeb、b/190539358、b/192043120) - デスクトップでは
FontFamily.Resolver
のコンポジション ローカルを使用します。- デスクトップの
FontLoader
のサポートを終了しました - デスクトップに新しい
createFontFamilyResolver
ファクトリが追加されました(I6bbbb、b/174162090)
- デスクトップの
- テキスト フィールド間でフォーカスを変更したときに、ソフト キーボードの入力タイプがちらつくことがなくなりました。(I1bf50、b/187746439)
- テキスト フィールドでカーソル ハンドルが表示されているとき、バックスペース キーを追加で押す必要がなくなりました。(Ideb4b、b/205726883)
- テキスト選択拡大鏡の動作を、プラットフォームの拡大鏡に合わせて改良しました。(Idd918、b/206833278)
バージョン 1.2.0-alpha02
2022 年 1 月 26 日
androidx.compose.foundation:foundation:1.2.0-alpha02
と androidx.compose.foundation:foundation-layout:1.2.0-alpha02
がリリースされました。バージョン 1.2.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
- 複雑なロジックのない既存メソッドのオーバーロードであるメソッドに、
NonRestartableComposable
を追加しました。これにより、呼び出し先の内部関数で繰り返される、すべてのパラメータに対するコンパイラ生成のメモ化チェック(equals)を減らすことができます。(I90490) - Android の
setSystemGestureExclusionRects
に簡単にアクセスできるようにexcludeFromSystemGesture
Modifier を追加しました。(I46f07)
バグの修正
- テキスト選択拡大鏡の動作を、プラットフォームの拡大鏡に合わせて改良しました。(Idd918、b/206833278)
LazyColumn
、LazyRow
、Modifier.verticalScroll
など、Modifier.scrollable
を使用するコンテナが、マウスホイールによるスクロールをサポートするようになりました。(I2b5e1、b/198214718)
バージョン 1.2.0-alpha01
2022 年 1 月 12 日
androidx.compose.foundation:foundation:1.2.0-alpha01
と androidx.compose.foundation:foundation-layout:1.2.0-alpha01
がリリースされました。バージョン 1.2.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
- ユーザーがタップ操作またはユーザー補助アクションを介して開始したスクロールを一時的または恒久的に無効にできるようにするため、新しいパラメータ
userScrollEnabled
がLazyColumn
、LazyRow
、LazyVerticalGrid
に追加されました。状態でのメソッドを介するプログラミングによるスクロールは認められます。(I7eae9、b/201150093) - magnifier 修飾子に
onSizeChanged
コールバックを追加しました。(I6879f) SelectionContainer
で選択ハンドルをドラッグするときに magnifier ウィジェットが表示されるようになりました。(I30b38、b/139320979)
バグの修正
- ビューの外にスクロールしても非表示にならない
TextField
カーソル ハンドルを修正しました。(I14552、b/208883748)
依存関係の更新
- Kotlin
1.6.10
に依存するようになりました。
バージョン 1.1
バージョン 1.1.1
2022 年 2 月 23 日
androidx.compose.foundation:foundation:1.1.1
と androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0
と androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.1.0-rc03
と androidx.compose.foundation:foundation-layout:1.1.0-rc03
がリリースされました。バージョン 1.1.0-rc03 に含まれる commit については、こちらをご覧ください。
バグの修正
- Compose Material 1.1.0-rc03 をサポートするように更新しました。
バージョン 1.1.0-rc01
2021 年 12 月 15 日
androidx.compose.foundation:foundation:1.1.0-rc01
と androidx.compose.foundation:foundation-layout:1.1.0-rc01
がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください。
バグの修正
LazyListState.scrollToItem()
とLazyListState.animateScrollToItem()
に負のスクロール オフセットを渡せるようになりました。(Iceb90、b/184252837)- ユーザー補助のスクロール操作がなくなるバグを修正しました。(I7cbfb)
バージョン 1.1.0-beta04
2021 年 12 月 1 日
androidx.compose.foundation:foundation:1.1.0-beta04
と androidx.compose.foundation:foundation-layout:1.1.0-beta04
がリリースされました。バージョン 1.1.0-beta04 に含まれる commit については、こちらをご覧ください。
新機能
- Kotlin
1.6.0
との互換性を確保するために更新しました。
API の変更
androidx.core.view
の null 値許容をクリーンアップしました。(I7078a、b/204917439)- 試験運用版の API が追加され、PointerInputchange をまとめて使用したり、使用されているかどうかをチェックしたりできるようになりました。(I2e59d)
- テキスト フィールド内のカーソルまたは選択ハンドルをドラッグしたときに、拡大鏡ウィジェットが表示されるようになりました。(I5391e、b/203781358)
バグの修正
- IME の可視性が変更されてもテキスト ハンドルが移動しない問題を修正しました。(I25f2e)
バージョン 1.1.0-beta03
2021 年 11 月 17 日
androidx.compose.foundation:foundation:1.1.0-beta03
と androidx.compose.foundation:foundation-layout:1.1.0-beta03
がリリースされました。バージョン 1.1.0-beta03 に含まれる commit については、こちらをご覧ください。
API の変更
- LazyVerticalGrid に水平スパンのサポートを追加しました。(I7e2fa、b/176758183)
Lazy リストのアイテム位置をアニメーション化するテスト機能が追加されました。LazyItemScope 内で
Modifier.animateItemPlacement()
という新しい修飾子が利用できるようになりました。使用例を以下に示します。var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
LazyListScope.item
またはLazyListScope.items
を通じてキーを提供すると、この修飾子によってアイテムの並べ替えアニメーションが有効になります。配置や位置揃えの変更などのイベントによって発生するその他の位置変更はすべて、アイテムの並べ替えとは別にアニメーション化されます。(I59e7b、b/150812265)
バージョン 1.1.0-beta02
2021 年 11 月 3 日
androidx.compose.foundation:foundation:1.1.0-beta02
と androidx.compose.foundation:foundation-layout:1.1.0-beta02
がリリースされました。バージョン 1.1.0-beta02 に含まれる commit については、こちらをご覧ください。
バグの修正
- リップルなどの表示は、ダウンイベントで常に遅延する代わりに、
Modifier.scrollable()
コンテナ内にある場合にのみ遅延するようになります。(Ibefe0、b/203141462) - 試験運用版の BringIntoView API を追加しました。この API を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918d、b/195353459)
外部からの協力
Modifier.pointerHoverIcon
を追加しました。(I95f01)
バージョン 1.1.0-beta01
2021 年 10 月 27 日
androidx.compose.foundation:foundation:1.1.0-beta01
と androidx.compose.foundation:foundation-layout:1.1.0-beta01
がリリースされました。バージョン 1.1.0-beta01 に含まれる commit については、こちらをご覧ください。
バグの修正
- 試験運用版の BringIntoView API を追加しました。この API を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918d、b/195353459)
バージョン 1.1.0-alpha06
2021 年 10 月 13 日
androidx.compose.foundation:foundation:1.1.0-alpha06
と androidx.compose.foundation:foundation-layout:1.1.0-alpha06
がリリースされました。バージョン 1.1.0-alpha06 に含まれる commit については、こちらをご覧ください。
API の変更
- Layout の子のないオーバーロードが追加され、効率が改善されました。(Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
は、関数が呼び出されたSemanticsNodeInteraction
を返すようになりました。(I9e5db)- 指定したマッチャーと一致するコンテンツにスクロール可能なコンテナをスクロールする
performScrollToNode(matcher: SemanticsMatcher)
を追加しました。(Ic1cb8)
バージョン 1.1.0-alpha05
2021 年 9 月 29 日
androidx.compose.foundation:foundation:1.1.0-alpha05
と androidx.compose.foundation:foundation-layout:1.1.0-alpha05
がリリースされました。バージョン 1.1.0-alpha05 に含まれる commit については、こちらをご覧ください。
API の変更
- PointerEventChange に試験運用版の履歴ポインタを追加しました。(Ic1fd8、b/197553056、b/199921305)
バグの修正
- スクロールに関して、スクロール可能(遅延と非遅延の両方)のユーザー補助サポートを修正しました。(I6cdb0)
バージョン 1.1.0-alpha04
2021 年 9 月 15 日
androidx.compose.foundation:foundation:1.1.0-alpha04
と androidx.compose.foundation:foundation-layout:1.1.0-alpha04
がリリースされました。バージョン 1.1.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
performGesture
とGestureScope
が非推奨になり、それぞれperformTouchInput
とTouchInjectionScope
に置き換えられました。(Ia5f3f, b/190493367)- タップ ターゲットの最小サイズが含まれる
touchBoundsInRoot
をSemanticsNode
に追加しました。これにより、デベロッパーはタップ ターゲットがユーザー補助の最低条件を満たすことができます。(I2e14b、b/197751214)
バグの修正
- Android 12 デバイスで、ストレッチ オーバースクロールのサポートを追加しました。(Iccf3c、b/171682480)
バージョン 1.1.0-alpha03
2021 年 9 月 1 日
androidx.compose.foundation:foundation:1.1.0-alpha03
と androidx.compose.foundation:foundation-layout:1.1.0-alpha03
がリリースされました。バージョン 1.1.0-alpha03 に含まれる commit については、こちらをご覧ください。
新機能
- Kotlin
1.5.30
に依存するように Compose1.1.0-alpha03
を更新しました。(I74545)
API の変更
- スクロール向けのグロー効果が追加されました。オーバースクロール視覚効果の構成を可能にする新しい試験運用版 OverScrollConfiguration API が追加されました。オーバースクロール効果をオフにするには、null を指定します。(I0c304、b/171682480)
- AwaitPointerEventScope に withTimeout() と withTimeoutOrNull() が追加されました。(I507f0、b/179239764、b/182397793)
- クリップされた境界を取得するテストメソッドを追加しました。(I6b28e)
- ユーザー補助機能を保証するため、セマンティクスとポインタ入力で使用する最小タップ ターゲット サイズを ViewConfiguration に追加しました。(Ie861c)
バージョン 1.1.0-alpha02
2021 年 8 月 18 日
androidx.compose.foundation:foundation:1.1.0-alpha02
と androidx.compose.foundation:foundation-layout:1.1.0-alpha02
がリリースされました。バージョン 1.1.0-alpha02 に含まれる commit については、こちらをご覧ください。
API の変更
Modifier.size
とrequiredSize
の DpSize バージョンを追加しました。(I3fc7e、b/194219828)
バージョン 1.1.0-alpha01
2021 年 8 月 4 日
androidx.compose.foundation:foundation:1.1.0-alpha01
と androidx.compose.foundation:foundation-layout:1.1.0-alpha01
がリリースされました。バージョン 1.1.0-alpha01 に含まれる commit については、こちらをご覧ください。
API の変更
- 送信元と送信先の長方形を使用する
DrawScope#drawImage
メソッドを更新し、オプションの FilterQuality パラメータを使用します。これは、ピクセルベースのアートに合わせてスケールアップする際にピクセル化されるピクセルアートに対して有用です。オプションの FilterQuality パラメータを使用するように BitmapPainter と Image composable を更新しました。(Ie4fb0、b/180311607) - TextField は、[戻る] ボタンが押されたときに選択をクリアするようになりました。これは Android EditText の動作と一致します。(I3ca16、b/174173645)
- カーソル ハンドルを追加しました。(I07a82、b/173016579)
バグの修正
- 遅延リストと通常のスクロール コンポーネントに対するセマンティクス アクションによるスクロールがアニメーション化されるようになりました。(Id9066、b/190742024)
外部からの協力
LazyVerticalGrid
が水平方向と垂直方向の両方のレイアウト パラメータを受け入れるようになりました。(If9c92)
バージョン 1.0
バージョン 1.0.5
2021 年 11 月 3 日
androidx.compose.foundation:foundation:1.0.5
と androidx.compose.foundation:foundation-layout:1.0.5
がリリースされました。バージョン 1.0.5 に含まれる commit については、こちらをご覧ください。
バグの修正
- derivedStateOf インスタンスをトラッキングするクラッシュを修正しました。(aosp/1792247)
バージョン 1.0.4
2021 年 10 月 13 日
androidx.compose.foundation:foundation:1.0.4
と androidx.compose.foundation:foundation-layout:1.0.4
がリリースされました。バージョン 1.0.4 に含まれる commit については、こちらをご覧ください。
依存関係の更新
- Kotlin
1.5.31
に依存するように更新しました。
バージョン 1.0.3
2021 年 9 月 29 日
androidx.compose.foundation:foundation:1.0.3
と androidx.compose.foundation:foundation-layout:1.0.3
がリリースされました。バージョン 1.0.3 に含まれる commit については、こちらをご覧ください。
依存関係の更新
- Kotlin
1.5.30
に依存するように更新しました。
バージョン 1.0.2
2021 年 9 月 1 日
androidx.compose.foundation:foundation:1.0.2
と androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.1
と androidx.compose.foundation:foundation-layout:1.0.1
がリリースされました。バージョン 1.0.1 に含まれる commit については、こちらをご覧ください。
依存関係の更新
- Kotlin
1.5.21
に依存するように更新しました。
バージョン 1.0.0
2021 年 7 月 28 日
androidx.compose.foundation:foundation:1.0.0
と androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.0.0-rc02
と androidx.compose.foundation:foundation-layout:1.0.0-rc02
がリリースされました。バージョン 1.0.0-rc02 に含まれる commit については、こちらをご覧ください。
- 固定サイズで定義されたパスの問題に対処するために、汎用シェイプの境界レンダリングを更新しました。(aosp/1748871、b/191817116)
バージョン 1.0.0-rc01
2021 年 7 月 1 日
androidx.compose.foundation:foundation:1.0.0-rc01
と androidx.compose.foundation:foundation-layout:1.0.0-rc01
がリリースされました。バージョン 1.0.0-rc01 に含まれる commit については、こちらをご覧ください。
API の変更
- Canvas がユーザー補助用の contentDescription パラメータをサポートするようになりました。(Ib547c)
バグの修正
- 無効化されたボタン、カード、チェックボックスなど
Modifier.clickable(enabled=false)
はすべて、親に移動しようとするクリックをブロックするようになります。(Ic2c3b、b/183908811)
バージョン 1.0.0-beta09
2021 年 6 月 16 日
androidx.compose.foundation:foundation:1.0.0-beta09
と androidx.compose.foundation:foundation-layout:1.0.0-beta09
がリリースされました。バージョン 1.0.0-beta09 に含まれる commit については、こちらをご覧ください。
API の変更
ManualFrameClock
を削除しました。アニメーションを制御する必要がある場合は、代わりにcomposeTestRule.mainClock
を使用してください。(I3c3e8、b/189951065)- 列挙型の Role と LiveRegionMode を、プライベート コンストラクタを含むインライン クラスに変更しました(Id1890)
- KeyboardCapitalization をインライン クラスに変換しました。(Id5a1c)
- TextOverflow をインライン クラスに変更しました。(I433af)
バグの修正
- LazyColumn/Row アイテムに一意のキーを指定すると、キーに基づいてスクロール位置が維持されるようになりました。つまり、現在表示されているアイテムの前でアイテムを追加または削除すると、指定されたキーを持つアイテムが最初に表示されるアイテムとして保持されます。(Id263f、b/184257857)
- 現在のところ、キー定数は @ExperimentalComposeUiApi です。コードを使用すると、安定化に先立ってプライベート定数を宣言できます。(Ia5d48)
- AndroidComposeTestRule に IdlingStrategy を追加しました。テスト フレームワークは、この戦略を使用して、静止状態を待機または実現する代替メカニズムをインストールできます。独自の戦略をインストールするには、テストの開始前に
AndroidComposeTestRule.setIdlingStrategyFactory()
を使用してください。(I608fa)
プロファイル ルールの追加
このリリースでは、以下の 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.foundation:foundation:1.0.0-beta08
と androidx.compose.foundation:foundation-layout:1.0.0-beta08
がリリースされました。バージョン 1.0.0-beta08 に含まれる commit については、こちらをご覧ください。
API の変更
- NestedScrollSource 列挙型がインライン クラスに置き換えられました。(Ie321b、b/187055290)
- 列挙型の使用をインライン クラスにリファクタリングして、新しい列挙値の追加時に網羅的な when ステートメントの問題を回避できるようにしました。(I2b5eb)
- clickable と toggleable にタップ タイムアウトを追加して、スクロールやドラッグの際にリップルが表示されないようにしました。(Ia2704、b/168524931)
- ContentDescription と Text のセマンティクス プロパティが、単一の値ではなくリストになり、連結ではなくそのまま結合できるようになりました。また、これらの変更を活用できるように改善されたテスト API も提供されています。(Ica6bf、b/184825850)
Modifier.focusModifier()
が非推奨となり、Modifier.focusTarget()
に置き換えられました。(I6c860)- KeyboardType 列挙型は、インライン クラスに置き換えられました。(I73045、b/187055290)
FocusState
列挙型がFocusState
インターフェースに置き換えられました。(Iccc1a、b/187055290)- ImeAction 列挙型がインライン クラスに置き換えられました。(I18be5、b/187055290)
AnnotatedString.withAnnotation
関数が ExperimentalComposeApi ではなく ExperimentalTextApi になりました。(I0cd0a)- TextUnitType が指定された TextUnit コンストラクタが、ExperimentalComposeApi ではなく ExperimentalTextApi になりました。
- PaddingValues が
@Immutable
ではなく@Stable
になりました。(I88c50)
バグの修正
- 空でないテキストの空白の領域を長押しするとクラッシュする問題を修正しました。(I33ab5、b/187437299)
- SelectAll の後にツールバーが表示されるようになりました。(I495d9、b/185919613)
- スクロール可能なコンテナが交差軸上の子をクリッピングする問題を修正しました。これは Card アイテムを含む LazyRow がある場合に容易に再現できましたが、今後はシャドウがクリップされなくなります。(Icb635、b/186318448)
- Modifier.combinedClickable の使用時に、リップルなどのインジケーションを長押しクリックすると停止することがある問題を修正しました。(I2298c、b/186223077)
detectDragGesures
、detectVerticalGestures
、detectHorizontalGestures
が位置変更を自動的に使用するようになり、onDrag コールバックで change.consumePositionChange を呼び出す必要がなくなりました(I42fc4、b/185096350、b/187320697)Modifier.onGloballyPositioned()
は、すべての修飾子を適用した後のレイアウト座標ではなく、修飾子チェーン内のこの修飾子の座標を報告するように変更されました。これにより、報告される座標が、修飾子の順序の影響を受けるようになりました。(Ieb67d、b/177926591)
バージョン 1.0.0-beta07
2021 年 5 月 18 日
androidx.compose.foundation:foundation:1.0.0-beta07
と androidx.compose.foundation:foundation-layout:1.0.0-beta07
がリリースされました。バージョン 1.0.0-beta07 に含まれる commit については、こちらをご覧ください。
API の変更
- 次に表示されるアイテムをプリフェッチするロジックが LazyColumn/Row に導入されました。(I8a4bc、b/184940225)
- クリップ選択ハンドルが追加されました。(Iff80d、b/183408447)
バグの修正
- LazyColumn/Row は、スクロールされて画面から消えたときでも、前に表示されていたアクティブな(破棄されていない)アイテムを最大 2 つまで維持するようになりました。これにより、スクロールのパフォーマンスを改善する新しいアイテムをコンポーズする必要がある場合に、コンポーネントがアクティブなサブコンポジションを再利用することが可能になります。(Ie5555)
- paintBackground を削除しました。(I38660)
- DrawScope を使用して選択範囲の背景を描画するようにしました。(I73c61、b/186674472)
- spacedBy 調整を使用して重み付けされた子をレイアウトする Row/Column に影響する beta06 回帰を修正しました。(Ifaf8c、b/187326588)
バージョン 1.0.0-beta06
2021 年 5 月 5 日
androidx.compose.foundation:foundation:1.0.0-beta06
と androidx.compose.foundation:foundation-layout:1.0.0-beta06
がリリースされました。バージョン 1.0.0-beta06 に含まれる commit については、こちらをご覧ください。
API の変更
- ナビゲーション ジェスチャーとの競合を解決しました(I1145e)
- コレクションとそのアイテムをユーザー補助サービスに指定できる CollectionInfo と CollectionItemInfo ユーザー補助 API を追加しました(Id54ef、b/180479017)
- インデックス登録されたアイテムのリストを特定のインデックスを付加されたアイテムにスクロールする
SemanticsActions.ScrollToIndex
と、キーを持つアイテムを使用してリスト内のアイテムのインデックスを取得するSemanticsProperties.IndexForKey
を追加しました。どちらのアクションも LazyList によって実装されます。- 指定されたインデックスにリストをスクロールする
SemanticsNodeInteraction.performScrollToIndex
と、指定されたキーを持つアイテムにリストをスクロールするSemanticsNodeInteraction.performScrollToKey
を追加しました。(I4fe63、b/178483889、b/161584524)
- 指定されたインデックスにリストをスクロールする
- AnnotatedString による TextFieldValue.Saver へのサポートが追加されました。AnnotatedString.Builder に addTtsAnnotation と withAnnotation のユーティリティ関数を追加しました(I8cbdc、b/178446304)
- デフォルトの
0.dp
パラメータ値がPaddingValues(horizontal, vertical)
に追加されました。(I05571、b/181336792)
バグの修正
weight(fill = false)
の行と列の子が、使用可能なメイン軸のスペース全体を親に入力させる動作を示さなくなりました。(Ied94d、b/186012444、b/184355105)
バージョン 1.0.0-beta05
2021 年 4 月 21 日
androidx.compose.foundation:foundation:1.0.0-beta05
と androidx.compose.foundation:foundation-layout:1.0.0-beta05
がリリースされました。バージョン 1.0.0-beta05 に含まれる commit については、こちらをご覧ください。
API の変更
- FlingBehavior インターフェースが @Stable としてマークされるようになりました。すべての実装は、
@Stable
の契約を遵守している必要があります。(I93354、b/184830577)
バグの修正
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.foundation:foundation:1.0.0-beta04
と androidx.compose.foundation:foundation-layout:1.0.0-beta04
がリリースされました。バージョン 1.0.0-beta04 に含まれる commit については、こちらをご覧ください。
API の変更
- SoftwareKeyboardController の hideSoftwareKeyboard と showSoftwareKeyboard を、それぞれ
hide()
とshow()
に名前を変更しました。- 完全な CompositionLocal インターフェースを提供して、LocalSoftwareKeyboardController を設定できるようにしました(特にテストに役立ちます)。(I579a6)
TextOverflow.Visible
が導入されました。(Ic8f89)RowScope
、ColumnScope
、BoxScope
、BoxWithConstraintsScope
のパブリック インスタンスが削除されました。(I4e83e、b/181869067)
バグの修正
- エッジの
LazyColumn
/LazyRow
のアイテムが高速フリングの後に正しく配置されない問題を修正しました。(Ie4d13、b/183877420) この変更以前は、ローカルのコンポーズ可能な関数はパラメータに基づいてスキップ可能でした。この変更以降は、ローカルのコンポーズ可能な関数はスキップされなくなります。ローカル関数が親からパラメータを取得するのが想定される一般的な動作であり、バグのよくある理由がスキップであるため、この変更が行われました。
以下の例を参照してください。
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
この変更以前は、
count
のパラメータが更新された後も、ShowCount
のコンポーズ可能な関数は常にスキップされていました。この認証バッジの取り消しは実施されないことになりました。(I5648a)
バージョン 1.0.0-beta03
2021 年 3 月 24 日
androidx.compose.foundation:foundation:1.0.0-beta03
と androidx.compose.foundation:foundation-layout:1.0.0-beta03
がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください。
API の変更
DefaultMonotonicFrameClock
が非推奨となりました。MonotonicFrameClock
を指定せずにwithFrameNanos
またはRecomposer.runRecomposeAndApplyChanges
を呼び出すと、IllegalStateException
がスローされるようになりました。(I4eb0d)
バグの修正
- 速度が 0 の場合でも、
FlingBehavior.performFling()
が呼び出されるようになりました(I0b6e5、b/181237123)
バージョン 1.0.0-beta02
2021 年 3 月 10 日
androidx.compose.foundation:foundation:1.0.0-beta02
と androidx.compose.foundation:foundation-layout:1.0.0-beta02
がリリースされました。バージョン 1.0.0-beta02 に含まれる commit については、こちらをご覧ください。
API の変更
- LazyColumn 測定ロジックに複数の小規模な最適化を追加しました(Ic6889)
- TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい
LocalSoftwareKeyboardController
コンポジション ローカル API を追加しました。(I5951e、b/168778053) - TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい
LocalSoftwareKeyboardController
コンポジション ローカル API を追加しました。(I84472、b/168778053)
バグの修正
- 試験運用版 API の一般使用に対する制限を適用します(I6aa29、b/174531520)
バージョン 1.0.0-beta01
2021 年 2 月 24 日
androidx.compose.foundation:foundation:1.0.0-beta01
と androidx.compose.foundation:foundation-layout:1.0.0-beta01
がリリースされました。バージョン 1.0.0-beta01 に含まれる commit については、こちらをご覧ください。
これは、Compose 1.0.0 ベータ版の最初のリリースです。
API の変更
- onStart コールバックを
detectDragGestures
に追加しました(I67269、b/179995594) - 組み込み関数に合わせてサイズ変更するための修飾子が試験運用版ではなくなりました。(I15744)
- dp アサーションを削除しました(I798d2)
- すべてのテキスト フィールドから SoftwareKeyboardController コールバックが削除され、まもなく新しい API に置き換えられます。(Iae869、b/168778053)
- 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)
- 非推奨となった LayoutCoordinates メソッドを削除しました。positionInParent と boundInParent のプロパティの代わりに、関数を使用してください(I580ed、b/169874631、b/175142755)。
- 低レベルのテキスト コンポーネント(CoreTextField など)からの入力セッション用に、新しい TextInputSession を作成しました。(I8817f、b/177662148)
- Placeable は、子レイアウトが実際に測定したサイズを表す measuredSize を公開するようになりました。このサイズは測定の制約を考慮しない場合があります。(Ib2729、b/172560206、b/172338608)
- selectionGroup 修飾子を追加し、ユーザー補助機能を提供するためにタブやラジオボタンのコレクションをマークできるようにしました(Ie5c29)
LazyListState.animateScrollToItem を追加しました
このメソッドは、リスト内の特定のアイテムにスクロールします。(I4bfd7)
ScrollableState.smoothScrollBy() の名前を animateScrollBy() に変更しました LazyListState.snapToItemIndex() の名前を scrollToItem() に変更しました ScrollState.smoothScrollTo() の名前を animateScrollTo() に変更しました(I35ded)
Modifier.zoomable を Modifier.transformable に置き換えました。特定の機能として、smoothPanBy と smoothRotationBy を追加しました。(Ifc32b、b/175294473)
compositionLocalOf
とstaticCompositionLocalOf
のdefaultFactory
は、オプションではなく必須になりました。この変更により、null 値非許容型(デフォルト ファクトリが提供されていない)で発生する可能性のある型エラーを解消しました。これまでは、null 値非許容型に対して null 参照を指定していました。
null 値許容型の場合は、
{ null }
をデフォルト ファクトリとして提供することを検討してください。null 値許容型を持たないローカル変数は、有効なデフォルト値を指定しない限り、使用しないことをおすすめします。有効なデフォルトが存在しない場合、
defaultFactory
ラムダは例外をスローします。ただし、例外がスローされると、ローカル変数のユーザーは、その変数が型システムで適用されないという前提で、その変数に暗黙的に依存することになります。(Ifbd2a)Indication#createIndication()
をIndication#rememberUpdatedIndication(InteractionState)
に変更し、IndicationInstance#drawIndication()
からInteractionState
パラメータを削除しました。IndicationInstance は、視覚効果の描画のみを担当し、InteractionState の変更に応じてアニメーションまたは書き込みの状態を開始することはできません。これらのアニメーションと状態の書き込みは、代わりにrememberUpdatedIndication()
の中で行う必要があります。Modifier.indication
のindication
パラメータも必須パラメータに変更しました。(Ic1764、b/152525426)テキスト アクションでフォーカスを自動的に確認するようになりました(I13777、b/179648629)
runBlockingWithManualClock
を削除しました(I15cdc、b/179664814)Modifier.verticalScroll() / horizontalScroll() のスクロール位置が Ints で表されるようになりました(I81298)
smoothScrollBy メソッドと scrollBy メソッドのパッケージを
androidx.compose.foundation.gestures.*
に変更しました(I3f7c1、b/175294473)FlingConfig の名前を FlingBehavior に変更し、事前定義された Decay ではなく一時停止アニメーションをカスタマイズできるようにしました。(I02b86、b/175294473)
サイズ修飾子の名前を変更しました。Modifier.width/height/size の名前を requiredWidth/requiredHeight/requiredSize に変更しました。Modifier.preferredWidth/preferredHeight/preferredSize の名前を width/height/size に変更しました。(I5b414)
defaultMinSizeConstraints の名前を defaultMinSize に変更しました。(I4eaae)
Modifier.tapGestureFilter を削除しました。代わりに
Modifier.pointerInput { detectTapGestures(...) }
を使用してください。(I266ed、b/175294473)一部の消費をポインタ入力システムから削除しました。消費を部分的に調整する場合は、Modifier.nestedScroll を使用することをおすすめします。(Ie9c9b)
Orientation を foundation パッケージに移動しました。VelocirtTracker を ui.gesture から ui.input.pointer に移動しました。(Iff4a8、b/175294473)
AnimationClockObservable とサブクラスを削除しました。AnimatedFloat を削除しました。(Icde52、b/177457083)
drawerState.open() と drawerState.close() が suspend 関数になりました。コンポジションのスコープを取得して呼び出しを行うには、rememberCoroutineScope() を使用します(I16f60、b/175294473)
プロバイダの名前を 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)
Modifier.scrollable を再構築しました。ScrollableController クラスの代わりにスクロール可能なインターフェースを使用するようになりました(I4f5a5、b/174485541、b/175294473)
Modifier.draggable は、単純なラムダの代わりに、DraggableState を受け入れるようになりました。
rememberDraggableState { delta -> }
を介して状態を作成し、以前と同じ動作を実現できます(Ica70f、b/175294473)。必要な組み込みサイズに変更するために、requiredWidth(IntrinsicSize) 修飾子と requiredHeight(IntrinsicSize) 修飾子を追加しました。(I0a6b4)
非推奨となった
emptyContent()
を削除しました。代わりに{}
を使用してください。(Idb33f、b/179432510)これまでに非推奨となった API をいくつか削除しました(Ice5da、b/178633932)
バグの修正
- TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I658b6、b/168778053)
バージョン 1.0.0-alpha12
2021 年 2 月 10 日
androidx.compose.foundation:foundation:1.0.0-alpha12
と androidx.compose.foundation:foundation-layout:1.0.0-alpha12
がリリースされました。バージョン 1.0.0-alpha12 に含まれる commit については、こちらをご覧ください。
API の変更
- Modifier.pointerInput は、ポインタ入力検出コルーチンを新しい依存関係で再開するタイミングを示す remember キーを必要とするようになりました。(I849cd)
- 更新のテスト: hasText() はテキスト フィールドの入力テキストとラベル / ヒント / プレースホルダ テキストの両方を確認します(Iab803)
- PaddingValues.Absolute が追加されており、PaddingValues を受け入れる API で使用できます。(Ia5f30)
- onImeActionPerformed が非推奨になりました。代わりに KeyboardActions を使用してください(If0bbd、b/179071523)
- ImageBitmap や ImageVector の命名規則に合うように、ImagePainter の名前を BitmapPainter に変更し、VectorPainter と名前を揃えました。(Iba381、b/174565889)
- 部分文字列を引数として使用する部分文字列のテスト API を改善しました(Icbe78)
- 無限アニメーションに適用される
InfiniteAnimationPolicy
コルーチン コンテキスト要素を導入しました。ComposeTestRule
を使用してテストを実行する場合を除き、デフォルトではポリシーはインストールされません。(I50ec4、b/151940543) - Animatable.snapTo と Animatable.stop が suspend 関数になりました(If4288)
- ComponentActivity.setContent を androidx.activity:activity-compose モジュールの androidx.activity.compose.setContent に移動しました。(Icf416)
- destructuring と copy() メソッドを、これらをほとんど使用しないクラスから削除しました。(I26702、b/178659281)
LazyColumn / LazyRow のカスタムキーのサポートを追加しました。これにより、アイテムの並べ替えをよりスマートに処理できます。要素を並べ替える際、または中央からアイテムを削除した際に、remember {} ブロックに保存した状態がアイテムと一緒に移動するようになります。
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Indication#createInstance を @Composable に変更し、LocalIndication を () -> Indication ではなく Indication を含むように変更しました。(I5eeea、b/157150564)
Constraints.enforce
をConstraints.constrain
に置き換えました。(I8b8ea)loadFontResource が非推奨になりました。代わりに fontResource を使用してください。imageResource、loadImageResource、vectorResource、loadVectorResource が非推奨になりました。代わりに painterResource を使用してください。(I6b809)
パフォーマンス上の理由から、ScrollAxisRange セマンティクスは、浮動小数点値を直接使用するのではなく、浮動小数点数を返すラムダを使用するようになりました。(If4a35、b/178657186)
ユーザー補助機能のために、テキスト フィールドの編集可能な入力をマークする EditableText セマンティクスを追加しました。セマンティクスを確認するための対応するテストメソッドを追加しました(I8e07a)
Modifier.clickable でダブルクリックと長押しクリックのサポートが終了しました。この機能を実現するには Modifier.combinedClickable を使用してください。(Iafad1)
toIntPx() の名前を roundToPx() に変更しました(I9b7e4、b/173502290)
IntBounds の名前を IntRect に変更し、API を改善しました。(I1f6ff)
Modifier.dragGestureFilter が非推奨になりました。代わりに
Modifier.pointerInput { detectDragGestures (...)}
を使用してください。または、単軸のドラッグには Modifier.draggable を使用します(I0ba93、b/175294473)Ambient から CompositionLocal への名前変更に合わせて各 Ambient の名前を変更しました。AmbientFoo という名前の Ambient は、LocalFoo という名前の CompositionLocal になりました。(I2d55d)
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)
アニメーションの再生時間をナノ秒単位に統一しました(If776a)
@ComposableContract が非推奨になり、3 つの具体的なアノテーションに置き換えられました。
@ComposableContract(restartable = false)
が@NonRestartableComposable
になり、@ComposableContract(readonly = true)
が@ReadOnlyComposable
になり、@ComposableContract(preventCapture = true)
が@DisallowComposableCalls
になり、@ComposableContract(tracked = true)
が削除されました。(I60a9d)emptyContent()
および(@Composable () -> Unit).orEmpty()
ユーティリティが非推奨となりました(パフォーマンス上の効果や価値がなくなったため)(I0484d)Recomposer をクローズできるようになりました。クローズされた Recomposer は、コンポジション子コルーチンが完了するまで再コンポジションを続けます。Recomposer.shutDown の名前を cancel に変更して close と対比させるようにしました。(Ib6d76)
LazyVerticalGrid に関連する API を試験運用版としてマークしました(Ia53e3、b/178519862)
rememberSavedInstanceState() の名前を rememberSaveable() に変更して androidx.compose.runtime.saveable パッケージに移動しました。(I1366e、b/177338004)
RestorableStateHolder の名前を SaveableStateHolder に変更して androidx.compose.runtime.saveable パッケージに移動しました。内部メソッド RestorableStateProvider の名前を SaveableStateProvider に変更しました。汎用型が削除されたため、Any をキーとして渡すことができます。試験運用版のアノテーションは不要になりました。(I0902e、b/174598702)
Saver、listSaver()、mapSaver()、autoSaver を androidx.compose.runtime.savedinstancestate から androidx.compose.runtime.saveable に移動しました(I77fe6)
アーティファクト 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)
RounderCornerShape、CutCornerShape、CornerBasedShape のパラメータの名前を left/right から start/end に変更して、RTL 方向におけるその形状の自動ミラーリングをサポートするようにしました。自動ミラーリングが不要なときのために、AbsoluteRounderCornerShape と AbsoluteCutCornerShape を導入しました。(I61040、b/152756983)
canDrag を Modifier.scrollable から削除しました。(Id66e7、b/175294473)
Compose コンパイラ プラグインの対象となる API は、具象クラスではなくインターフェースを使用するようにリファクタリングされました。また、それらのインターフェースは、タイプ パラメータを使用しなくなりました。
この内部変更はソースコードの互換性には影響を与えませんが、バイナリの互換性を破る変更になります。(I3b922、b/169406779)
Modifier.scaleGestureFilter を削除しました。代わりに Modifier.zoomable を使用してください。または、
Modifier.pointerInput { detectMultitouchGestures { ... }}
を使用します(Id5da1、b/175294473)AnimatedValue/Float が非推奨になりました。代わりに Animatable を使用してください。(I71345、b/177457083)
- CoreText と CoreTextField を公開 API から削除しました
- 非推奨の SelectionContainer オーバーロードを削除しました(I99c19)
非推奨の non-suspend バージョンのスクロール関数が削除されます。前回のリリースから変更を継続し、non-suspend バージョンのスクロール関数を完全に削除しました。同じ名前の suspend 関数に変換してください。コルーチン スコープは rememberCoroutineScope() で取得できます。(I3d39c、b/178169563)
androidx.compose.foundation.layout.ConstraintLayout が非推奨になり、androidx.constraintlayout.compose.ConstraintLayout に置き換えられました。
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
への依存関係を追加する必要があります。(I87adc)tapGestureFilter、doubleTapGestureFilter、longPressGestureFilter、pressIndicaitonGestureFilter が非推奨になりました。代わりに、Modifier.clickable または Modifier.pointerInput を detectTapGestures 関数とともに使用してください。(I6baf9、b/175294473)
Recomposer.current()
を削除しました。[Abstract]ComposeView のデフォルトは、遅延的に作成されたウィンドウ スコープの Recomposer(ウィンドウの ViewTreeLifecycleOwner によって駆動される)になりました。ホスト ライフサイクルが停止すると、再コンポジションと withFrameNanos に基づくアニメーション ティックが一時停止します。(I38e11)Recomposer.runningRecomposers は、プロセスで進行中のコンポジション状態を監視するための、読み取り専用 RecomposerInfo のグローバル StateFlow を提供するようになりました。この API は、現在非推奨の Recomposer.current() よりも優先されます。(If8ebe)
バージョン 1.0.0-alpha11
2021 年 1 月 28 日
androidx.compose.foundation:foundation:1.0.0-alpha11
と androidx.compose.foundation:foundation-layout:1.0.0-alpha11
がリリースされました。バージョン 1.0.0-alpha11 に含まれる commit については、こちらをご覧ください。
API の変更
非 suspend バージョンの scrollBy を非推奨とし、非 suspend バージョンの scrollTo を削除しました。
スクロールを制御しスクロールの終了を待機するには、今後は suspend 関数の使用をおすすめします。この移行の一環として、これらの関数の non-suspend バージョンは非推奨や削除の対象となっています。(Ie9ced)
non-suspend smoothScrollBy が非推奨となりました。スクロールを制御しスクロールの終了を待機するには、今後は suspend 関数の使用をおすすめします。この移行の一環として、これらの機能の非 suspend バージョンは非推奨の対象となります。(I12880)
画像とアイコンにコンテンツ説明パラメータを追加しました。これは、ユーザー補助サービスに説明を提供するために使用されます。(I2ac4c)
BasicTextField で「decorationBox」という新しいパラメータを受け付けます。アイコン、プレースホルダ、ラベルなどの装飾をテキスト フィールドに追加して、ヒット ターゲット領域を広げることができます。(I16996)
canDrag パラメータが Modifier.draggable から削除されました(Ic4bec、b/175294473)
FlingConfig を受け入れる AnimatedFloat.fling が削除されました。代わりに suspend バージョンの Animatable.animateDecay を使用してください。(I4659b、b/177457083)
次のクラスから
data class
を削除しました。- InlineTextContent
- LocaleList
- (I605c7)
clickable、toggleable、selectable が、コンポジションの外部でも作成できるようになりました(I0a130、b/172938345、b/175294473)。
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)
が拡張関数になりました。そのため、使用するときには手動でインポートする必要があります。Array の新しい拡張オーバーロード: items(items: Array) と itemsIndexed(Array)(I803fc、b/175562574)非推奨となった AbsoluteArrangement が削除されました。(Iffa96、b/177641870)
受信の最小制約を Box のコンテンツに渡すかどうかを指定するため、propagateMinConstraints パラメータを追加しました。デフォルトは false です。(I0125b、b/152613457)
バグの修正
- onCommit、onDispose、onActive を非推奨にし、SideEffect API と DisposableEffect API に置き換えました。(If760e)
- WithConstraints は BoxWithConstraints として再構築され、founds.layout に移動しました。(I9420b、b/173387208)
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)
Density が Arrangement インターフェースのレシーバ スコープになりました。(I18aad)
TextFieldValue が AnnotatedString を受け入れるようになりました。ただし、これは API のみの変更であり、マルチスタイル テキストの編集はまだ実装されていません。
- EditingBuffer コンストラクタ パラメータから
initial
を削除しました。(I326d5)
- EditingBuffer コンストラクタ パラメータから
invalidate と compositionReference() が非推奨になり、それぞれ currentRecomposeScope と rememberCompositionReference に置き換えられました。(I583a8)
kotlin.CharSequence から拡張するように、AnnotatedString を変更しました。そのため、length と subSequence がインスタンス関数になり、拡張関数は削除されました。(Iaf429)
Duration と Uptime は Long ミリ秒に置き換えられます。これにより、これらのクラスに対するポインタ入力の依存関係が解消します。(Ia33b2、b/175142755、b/177420019)
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)TransformedText.transformedText の名前を TransformedText.text に変更しました。
- TransformedText はデータクラスではなくなりました。(Ie672a)
次のクラスはデータクラスではなくなりました。
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput(Iaff99)
試験運用版の monotonicFrameAnimationClockOf メソッドを削除しました(Ib753f、b/170708374)
グローバル座標メソッドを非推奨とし、ウィンドウに基づく座標メソッドを新たに作成しました。(Iee284)
ImeAction.NoAction の代わりに ImeAction.None を使用してください。
- ImeAction.Unspecified の代わりに ImeAction.Default を使用してください。(Ie1bcc)
FocusRequester.createRefs は変更の可能性があるため、試験運用版としてマークされるようになりました。(I2d898、b/177000821)
SemanticsPropertyReceiver.hidden が hiddenToUser という名前に変更され、@ExperimentalComposeUiApi とマークされました。AccessibilityRangeInfo が ProgressBarRangeInfo という名前に変更されました。 stateDescriptionRange が progressBarRangeInfo という名前に変更されました。AccessibilityScrollState が ScrollAxisRange という名前に変更されました。 horizontalAccessibilityScrollState が horizontalScrollAxisRange という名前に変更されました。 VerticalAccessibilityScrollState が verticalScrollAxisRange という名前に変更されました。(Id3148)
VisualTransformation を機能インターフェースに変更しました(I3bba4)
テストでは TestCoroutineDispatcher を利用します。(I532b6)
PointerInputData を削除し、PointerInputData のフィールドをすべて利用できるように PointerInputChange を変更しました。PointerInputEvent と PointerInputEventData は公開 API で使用されることがないため、内部化しました。(Ifff97、b/175142755)
TextInputService.onStateUpdated の名前を updateState に変更しました(Id4853)
displaySize は使用しないほうがよいため、削除しました。通常は、onRoot() のサイズまたはウィンドウ サイズ以上を使用することをおすすめします。(I62db4)
バージョン 1.0.0-alpha10
2021 年 1 月 13 日
androidx.compose.foundation:foundation:1.0.0-alpha10
と androidx.compose.foundation:foundation-layout:1.0.0-alpha10
がリリースされました。バージョン 1.0.0-alpha10 に含まれる commit については、こちらをご覧ください。
API の変更
- ImeOptions と KeyboardOptions がデータクラスではなくなりました(I3c898、b/168684531)
- VisualTransformation API の変更点
- OffsetMap の名前が OffsetMapping に変更されました。
- OffsetMapping.identityOffsetMap の名前が OffsetMapping.Identity に変更されました。
- PasswordTransformation がデータクラスではなくなりました。
- OffsetMapping をそれ自身のファイルに移動しました。
- (I0bdf3)
- EditOperations API の変更点
- EditOperation の名前を EditCommand に変更しました。
- EditOperation 具象実装に Command サフィックスを追加しました。
- EditCommand がデータクラスではなくなりました。
- EditOperation.process 関数の名前を applyTo に変更しました。
- InputEventListener の名前を InputEventCallback に変更しました。
- (I0a366)
- Velocity がコンポーネント部品と数学演算を持つように変更しました。(Ib0447)
- 類似する試験運用版の API アノテーションとの整合性を保つため、@ExperimentalTesting の名前を @ExperimentalTestApi に変更しました(Ia4502、b/171464963)
- LazyColumn/LazyRow 用に試験運用版の stickyHeader メソッドを追加しました。(I0a81d)
- Color.useOrElse() の名前を Color.takeOrElse() に変更しました。(Ifdcf5)
- TestUiDispatcher を非推奨としました。代わりに Dispatchers.Main を使用してください。(Ic171f、b/175385255)
- foundation の Strings.kt に切り替えを追加しました。(I4a5b7、b/172366489)
- nativeClass を ui モジュールに移動し、内部化しました。equals 実装での nativeClass の使用を更新して、代わりに「is MyClass」を使用するようにしました。(I4f734)。
- FlowRow と FlowColumn が非推奨になりました。代わりにカスタム レイアウトを使用してください。(I09027)。
- Modifier.focus() と Modifier.focusRequester() が非推奨になりました。代わりに Modifier.focusModifier() と Modifier.focusReference() を使用してください。(I75a48、b/175160751、b/175160532、b/175077829)
- Selectable の更新を SelectionManager に通知するために SelectionRegistrar.notifySelectableChange を導入しました。(I6ff30、b/173215242)
fun Dp.isFinite()
をval Dp.isFinite
に変更しました。(I50e00)- Constraints#satisfiedBy の名前を isSatisfiedBy に変更しました。(I9cf5c)
- Unspecified 定数を持つインライン クラスに isSpecified、isUnspecified、useOrElse を追加しました。(I93f7b、b/174310811)
バグの修正
- 新しいコルーチン ベースの API
Animatable
が、アニメーション間の相互排他的性を保証します。新しい DecayAnimationSpec で多次元の消滅アニメーションをサポートしました。(I820f2、b/168014930) - 無効で読み取り専用のテキスト フィールドのサポートを追加しました。(I35279、b/171040474、b/166478534)
animate()
がanimateAsState()
に置き換えられました。T
ではなくState<T>
を返します。これにより、State 値が読み取られる範囲に無効化スコープを絞り込めるため、パフォーマンスが向上します。(Ib179e)- Semantics ロール API を追加し、クリック可能、選択可能、切り替え可能な SemanticsModifier にパラメータとして Role を追加しました。また、それを Slider が使用できるように Modifier.progressSemantics を変更しました。(I216cd)
- ネイティブ keyEvent に keyEvent.nativeKeyEvent でアクセスできるようになりました。(I87c57、b/173086397)
バージョン 1.0.0-alpha09
2020 年 12 月 16 日
androidx.compose.foundation:foundation:1.0.0-alpha09
と androidx.compose.foundation:foundation-layout:1.0.0-alpha09
がリリースされました。バージョン 1.0.0-alpha09 に含まれる commit については、こちらをご覧ください。
API の変更
Scrollable インターフェースの追加
これにより、ScrollState と LazyListState を共通のタイプとして扱い、両方のタイプにカスタム スクロールを実装できるようになります。
また、これにより smoothScrollBy が Scrollable の拡張関数に移動し、この機能を利用するようになります。(I2153b)
LazyVerticalGrid が追加されています。(I17267、b/162213211)
LazyColumnFor、LazyRowFor、LazyColumnForIndexed、LazyRowForIndexed を非推奨としました。代わりに LazyColumn と LazyRow を使用してください。(I5b48c)
一時停止ポインタ入力 API について、HandlePointerInputScope の名前を AwaitPointerEventScope に変更し、handlePointerInput() の名前を awaitPointerEventScope() に変更しました。(Idf0a1、b/175142755)
現在表示されているアイテムのサイズとオフセットのリストを公開する LazyListState.layoutInfo を追加しました。(If8678、b/170472532)
ExperimentalPointerInput アノテーションを削除しました。(Ia7a24)
TextField に InteractionState のサポートを追加しました。(I61d91)
LazyColumn/Row に reverseLayout パラメータを追加しました。
true
の場合、アイテムは下から上にコンポーズされ、LazyListState.firstVisibleItemIndex == 0
は最初のアイテムが一番下にあることを示します。(I552ae、b/166589935)verticalArrangement パラメータが LazyColumn に追加されました。horizontalArrangement パラメータが LazyRow に追加されました。Arrangement を使用すると、アイテム間にスペースを追加し、最小サイズをすべて埋めるアイテムがない場合のアイテムの配置を指定できます。(Icf79a、b/170394300)
detectMultitouchGestures が重心、パン、ズーム、回転のパラメータの組み合わせに 1 つのコールバックを使用するにようになりました。(Ie6e1c)
ContentDrawScope を DrawScope と同じく ui-graphics モジュールに移動しました。(Iee043、b/173832789)
バグの修正
- オフセット修飾子のラムダが 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)
Modifier.focusObserver が非推奨になりました。代わりに Modifier.onFocusChanged または Modifier.onFocusEvent を使用してください。(I30f17、b/168511863、b/168511484)
Autofill API が試験運用版 API になり、オプトインが必要になりました。(I0a1ec)
FocusRequester インスタンスを作成するための非構造化宣言を追加しました。(I35d84、b/174817008)
accessibilityLabel の名前を contentDescription に変更し、accessibilityValue の名前を stateDescription に変更しました。(I250f2)
SelectionRegistrar にいくつかの新しい関数を導入しました。また、onPositionChange の名前を notifyPositionChange に変更しました。(Ifbaf7)
AndroidOwner が内部に隠蔽されました。(Ibcad0、b/170296980)
InfiniteRepeatableSpec を作成するための新しい infiniteRepeatable 関数(I668e5)
Applier
インターフェースが変更され、トップダウンではなくボトムアップでツリーのビルドが簡素化されました。insert()
メソッドの名前がinsertTopDown()
に変更されました。新しいメソッド
insertBottomUp()
が追加されました。Applier は、編集対象のツリーにノードを挿入する際に、
insertTopDown()
またはinsertBottomUp()
のうちパフォーマンスが優れているほうを使用します。LayoutNode
やView
などの一部のツリーは、トップダウンよりボトムアップのほうが効率的にビルドできます。この変更の前は、ボトムアップを実装するために大量の挿入が必要でした。パフォーマンスを向上させるためにボトムアップの構築を必要とするすべての Applier にボトムアップをコピーする必要があったためです。この変更により、Applier
はinsertBottomUp()
とinsertTopDown()
をオーバーライドし、それぞれボトムアップとトップダウンでツリーをビルドするようになりました。(Icbdc2)ラスター化されたアセット形式(PNG など)または VectorDrawable からの Painter オブジェクトの不透明な読み込みを処理できるように、painterResource API を追加しました。コンシューマは事前にアセットのタイプを判別する必要がなくなり、このメソッドを呼び出して Image コンポーザブルまたは Painter 修飾子で使用する Painter オブジェクトを取得できます。(I2c703、b/173818471)
AnnotatedString を構築できるように、buildAnnotatedString ファクトリ関数を追加しました。annotatedString の構築関数を非推奨としました。(Idfe0b)
バージョン 1.0.0-alpha08
2020 年 12 月 2 日
androidx.compose.foundation:foundation:1.0.0-alpha08
と androidx.compose.foundation:foundation-layout:1.0.0-alpha08
がリリースされました。バージョン 1.0.0-alpha08 に含まれる commit については、こちらをご覧ください。
API の変更
CoreTextField
からmaxLines
パラメータを削除しました。テキスト フィールドの高さを行数で制限する場合は、代わりにBasicTextField
を使用してください。(Iec002)- ポインタの下移動を検出しないように
await*TouchSlop()
メソッドを変更し、名前を*OrCancellation
に変更しました。また、orientationLock
パラメータが不要になりました。(Ie96e1) - Compose のガイドラインとの整合性を確認するため、コンポーズ可能なラムダ パラメータの名前と位置に対する lint チェックを追加しました。また、lint チェックおよびガイダンスに従って、後置ラムダの名前として
children
を使用する一部の API をcontent
に移行しました。(Iec48e) foundation:foundation-text
の API をfoundation:foundation
に移動しました。パッケージ構造は変わりません。(Id3eb2)- 回転、ズーム、パンを検出するためのヘルパーを含む新しいマルチタッチ ジェスチャー検出器が追加されました。(Ic459d)
- 一時停止ポインタ入力 API を使用する新しいドラッグ ジェスチャー検出器が追加されました(方向のロックを含む)。(Icef25)
- VectorAsset の名前を ImageVector に変更しました。また、API 評議会のガイドラインに従い、VectorAsset を移動して名前を Builder に変更し、ImageVector の内部クラスにしました。compat 用の ImageVector.Builder にリンクする VectorAssetBuilder の型エイリアスを追加しました。(Icfdc8)
- ImageAsset と関連メソッドの名前を ImageBitmap に変更しました。(Ia2d99)
- foundation のセマンティクス プロパティを ui に移動しました。(I6f05c)
コルーチン ベースのスクロール API を追加しました。
LazyListState.snapToItem および LazyListState.smoothScrollBy とともに、スクロール制御用の低レベル API を追加しました。これらの API は、スクロールが終了するまで待機してから戻るスクロールを制御するための一次停止インターフェースを提供します。(Ie5642)
singeLine パラメータを BasicTextField、TextField、OutlinedTextField に追加しました。このパラメータを true に設定すると、テキスト フィールドが 1 行になり、水平方向にスクロール可能になります。(I57004、b/168187755)
新しい一時停止ポインタ入力を使用する、タップ、ダブルタップ、長押し、プレス操作のジェスチャー検出器が追加されました。ユーティリティもいくつか追加されたので、デベロッパーは独自のジェスチャー検出器を簡単に作成できます。(I00807)
Modifier.focusable が foundation に追加されました。これを使用して、適切なセマンティクスとユーザー補助機能を備えたフォーカス可能な動作をコンポーネントに追加できます。(I41eb9、b/152525426、b/162865824)
以前に非推奨になった API が削除されました。削除された Border の代わりには、BorderStroke を使用してください。削除された Modifier.drawBorder の代わりには、Modifier.border を使用してください。削除された Modifier.gravity の代わりには、Modifier.align を使用してください。削除された Stack の代わりには、Box を使用してください。(I32c2b、b/172470874)
AbsoluteArrangement の名前が Arrangement.Absolute に変更されました。(If26f2)
バグの修正
- 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)
- SubcomposeLayout 宣言から
<T>
が削除されました。現在は、タイプを指定せずにこれを使用できます。(Ib60c8) - PointerInputData の uptime フィールドと position フィールドを null 値非許容にしました。(Id468a)
- MaterialTheme は、選択ハンドルと選択背景に正しい色を設定するようになりました。非マテリアル アプリでは、AmbientTextSelectionColors を手動で使用して、選択用の色をカスタマイズできます。(I1e6f4、b/139320372、b/139320907)
- Box のアライメント パラメータの名前が contentAlignment に変更されました。(I2c957)
- offsetPx 修飾子の名前が offset に変更されました。現在は、State ではなくラムダ パラメータを取得します。(Ic3021、b/173594846)
- ホスト ウィンドウがフォーカスされているかどうかをチェックする WindowManager.isWindowFocused と、onWindowFocusChanged コールバックを提供する WindowFocusObserver を追加しました。(I53b2a、b/170932874)
- TextInputService#onStateUpdated に resetInput パラメータを追加しました(I3e8f5、b/172239032、b/171860947)
- TextFieldValue API の更新
- TextFieldValue.composition を読み取り専用にしました
- 無効な選択範囲に対してスローされる例外を削除しました(I4a675、b/172239032)
Ambient
という接尾辞を持つ Ambient が非推奨になり、その他の Ambient と Compose API のガイドラインに沿って、Ambient という接頭辞を持つ新しいプロパティに置き換えられました。(I33440)- Android Typeface ラッパーを追加しました。Android Typeface は、
typeface
関数(typeface(Typeface.DEFAULT)
)によって読み込むことができます。また、typefaceFromFontFamily()
の名前をtypeface()
に変更しました(I52ab7) - Modifier ファクトリが、
@Composable
とマークされているのではなく、androidx.compose.ui.composed {}
を内部的に使用していることを確認する lint チェックを追加しました。(I3c4bc) - Modifier ファクトリ関数が Modifier の拡張として定義され、スムーズに連鎖できるようになっているかどうかを確認する lint チェックを追加しました。(I07981)
- セマンティクス引数 mergeAllDescendants の名前が mergeDescendants に変更されました。(Ib6250)
- テストの時間制御(TestAnimationClock とその使用方法)が試験運用版になりました(I6ef86、b/171378521)
- 古い ui-test モジュールとそのスタブを削除しました(I3a7cb)
- 他の単位との整合性を図るため、TextUnit.Inherit の名前が TextUnit.Unspecified に変更されました。(Ifce19)
- Alignment インターフェースが更新され、機能するようになりました。(I46a07、b/172311734)
foundation:foundation-text
モジュールがfoundation:foundation
に統合されました。(Idac0f)- place(Offset) と placeRelative(Offset) を非推奨としました。代わりに int オフセットを含むオーバーロードを使用してください(I4c5e7)
LayoutIdParentData
用のid
の名前がlayoutId
に変更されました。Measurable.id
の名前がMeasurable.layoutId
に変更されました。(Iadbcb、b/172449643)
バージョン 1.0.0-alpha07
2020 年 11 月 11 日
androidx.compose.foundation:foundation:1.0.0-alpha07
、androidx.compose.foundation:foundation-layout:1.0.0-alpha07
、androidx.compose.foundation:foundation-text:1.0.0-alpha07
がリリースされました。バージョン 1.0.0-alpha07 に含まれる commit については、こちらをご覧ください。
API の変更
Modifier.fillMaxSize[Width|Height]
と同様に、LazyColumn/Row
の範囲内のModifier.fillParentMaxSize[Width|Height]
で分数がサポートされるようになりました(I797e2、b/166586426)- 公開 API から
KeyboardOptions.toImeOptions
を削除しました。(Ic2e45) - 基本の AmbientTextStyle、ProvideTextStyle、AmbientContentColor が非推奨になりました。代わりに、マテリアル ライブラリにある新バージョンを使用してください。マテリアル以外のアプリの場合は、独自のコンポーネントで使用できる、独自のデザイン システム固有のテーマ設定アンビエントを代わりに作成する必要があります。(I74acc、b/172067770)
- foundation.Text が非推奨になり、material.Text に置き換えられました。テーマの値を使用しない、基本的で独自性のないテキスト API については、androidx.compose.foundation.BasicText をご覧ください。(If64cb)
- maxLines を TextFields に追加しました(Ib2a5b)
- KeyboardOptions を受け入れるように TextFields を更新しました(Ida7f3)
- TextFields で使用する KeyboardOptions を追加しました(I9ca32)
- BasicTextField と並行して、デザインに独自性のないテキスト用の API として BasicText を追加しました。(I28268)
- 試験運用版 LazyDsl アノテーションを削除しました。@OptIn を追加せずに LazyColumn / LazyRow を使用できるようになりました(Idab7a、b/166584730)
- BaseTextField が非推奨になりました。代わりに BasicTextField を使用してください。(I896eb)
- CoreTextField と BaseTextField の両方に代わるものとして、BasicTextField が追加されました(Id4cea)
- 非推奨となった LazyColumnItems / LazyRowItems を削除しました(I1d8a8)
- 固有の測定値に対するサイズ変更のための、非推奨となったコンポーザブルを削除しました。(I18537、b/171811496)
- relativePaddingFrom の名前が paddingFrom に変更されました。レイアウト境界からテキスト ベースラインまでの距離を指定する際に便利なように、paddingFromBaseline 修飾子が追加されました。(I0440a、b/170633813)
- matchHeightConstraintsFirst パラメータを aspectRatio 修飾子に追加しました。これを使用すると、幅の対応を試す前に高さの制限に合わせてサイズ変更する修飾子を指定できます。(Ie7c43、b/155290593)
- 非推奨となった DpConstraints を削除しました。(I87884、b/171702471)
バグの修正
- スケーリングが不均一なユースケースに対応するために、互いに独立した水平軸と垂直軸のスケーリング ファクタを表す ScaleFactor インライン クラスが導入されました。
- computeScaleFactor メソッドを ContentScale に追加しました。
- 不均一なスケーリングを実施し、src 境界を拡大してデスティネーションを完全に占有する ContentScale.FillBounds を追加しました。
- Size パラメータを使用して ScaleFactor パラメータを計算する演算子メソッドを追加しました。
- (Ic96a6、b/172291582)
- captureToBitmap を captureToImage に移動しました。(I86385)
- CoreText を @InternalTextApi としてマークしました。代わりに BasicText を使用してください。(I6aaeb)
- KeyboardOptions の名前を ImeOptions に変更しました(I82f36)
- KeyboardType と ImeAction を KeyboardOptions に移動しました(I910ce)
- CoreTextField を @InternalTextApi としてマークしました。代わりに BasicTextField を使用してください(Ie2469)
- ExperimentalSubcomposeLayoutApi アノテーションを削除しました。@OptIn を追加せずに SubcomposeLayout を使用できるようになりました(I708ad)
- ui-test-junit4 モジュールを導入しました(Ib91f8)
- ColorFilter なしで指定したアセットまたはペインタを描画する色合いとして Color.Unspecified を取り込むように、Icon API を更新しました。以前は、Color.Unspecified による色合い調整を無視しようとすると、透明色で色合い調整され、最終的に何もレンダリングされませんでした。(I049e2、b/171624632)
- MeasureResult を MeasureScope の外に移動しました。(Ibf96d、b/171184002)
- いくつかのレイアウト関連シンボルを androidx.compose.ui から androidx.compose.layout.ui に移動しました。(I0fa98、b/170475424)
- androidx.ui.test を androidx.compose.ui.test に移動しました(I9ffdb)
- FirstBaseline と LastBaseline を androidx.compose.ui.layout パッケージに移動しました(Ied2e7)
- コールバックなしの SelectionContainer を追加しました(Ibfadb)
- SelectionContainer における SelectionHandles の位置のテストを追加しました。(Ie93db)
- キーボード自動修正の IME オプションを追加しました(I57b8d)
バージョン 1.0.0-alpha06
2020 年 10 月 28 日
androidx.compose.foundation:foundation:1.0.0-alpha06
、androidx.compose.foundation:foundation-layout:1.0.0-alpha06
、androidx.compose.foundation:foundation-text:1.0.0-alpha06
がリリースされました。バージョン 1.0.0-alpha06 に含まれる commit については、こちらをご覧ください。
API の変更
- androidx.compose.foundation.Icon を androidx.compose.material.Icon に移動しました。マテリアル ライブラリを使用しない場合は、Painter で Image コンポーネント / Modifier.paint() を使用することもできます。(I9f622)
- interactionState を Modifier.scrollable、ScrollableColumn、LazyColumnFor に追加しました(I81566、b/169509805)
- alignByBaseline が RowScope に追加され、alignWithSiblings の名前が alignBy に変更されました(I06503、b/170628732)
- Box がインライン関数になりました。(Ibce0c、b/155056091)
- maxLines を CoreTextField に追加しました(Ibee58、b/143687793)
- softwrap を CoreTextField に追加しました。(I21a4b)
バグの修正
- コンポーザブル API がコンポジション間でデータを保持するために「remember」を内部的に利用していることをわかりやすく示すために、VectorPainter が非推奨になり、rememberVectorPainter に置き換えられました。(Ifda43)
- ComposeTestRule で遷移が有効になりました。ComposeTestRule から、カーソルの点滅を有効にするオプションを削除しました。(If0de3)
- 単一行のキーボード オプションを CoreTextField に追加しました(I72e6d)
- Compose 全体での使用方法をわかりやすく表現するために、Radius API の名前を CornerRadius に変更しました。負のコーナー半径が 0 に固定されることを示すようにドキュメントを更新しました。(I130c7、b/168762961)
- コンポーズされた修飾子でインスペクタ情報を指定する機能を追加しました(Idee08、b/163494569)
- KeyboardCapitalization IME オプションを追加しました(I8ac38)
- Rtl ハンドル位置を修正しました。(I6e1e0)
- 互換性を破る変更: ポインタ イベントで変更できる必要がある唯一の値が消費データであるため、PointerInputFilter.onPointerEvent(...) からの戻り値を削除しました。PointerInputFilter.onPointerEvent(...) からデータを返すのではなく、渡された PointerEvents の消費データを変更するだけで済むようになりました。(I6acd0)
- SelectAll オプションを選択メニューに追加しました(Ief02b)
バージョン 1.0.0-alpha05
2020 年 10 月 14 日
androidx.compose.foundation:foundation:1.0.0-alpha05
、androidx.compose.foundation:foundation-layout:1.0.0-alpha05
、androidx.compose.foundation:foundation-text:1.0.0-alpha05
がリリースされました。バージョン 1.0.0-alpha05 に含まれる commit については、こちらをご覧ください。
API の変更
- CoreTextField でカーソル機能がサポートされるようになりました(Id23aa)
contentColor() API と currentTextStyle() API が非推奨になり、それぞれ AmbientContentColor アンビエントと AmbientTextStyle アンビエントに置き換えられました。他のアンビエントと同様、アンビエント プロパティで
.current
を使用する方法で現在の値にアクセスできるようになりました。これは、同じことを行う方法が複数にならないよう、一貫性を確保するために加えられた変更です。また、以下のように、目的を適切に表すために一部のアンビエント プロパティの名前が変更されました。- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme(I37b6d)
バグの修正
- インライン クラス向け標識値の標準化の一環として、他のインライン クラスと整合するよう Color.Unset が Color.Unspecified という名前に変更されました(I97611、b/169797763)
- コピー / 貼り付け / 切り取りのユーザー補助アクションが追加されました(I6db4f)
- TextOverflow.None が導入されました。オーバーフローが None の場合、Text はそれ以上オーバーフローを処理せず、実際のサイズを LayoutNode に報告するようになりました(I175c9、b/158830170)
- Float.POSITIVE_INFINITY ではなく Float.NaN になるよう Size.Unspecified パラメータが更新されました。無制限の Sizes だけでなく Size.Unspecified もチェックするよう Painter の実装が更新されました(I95a7e)
- Paging Compose モジュールとページング統合が追加されました(Ib85da)
- null 許容型の値を受け取るよう LazyListScope が変更されました(I1765b)
- OnPositionedModifier が OnGloballyPositionedModifier という名前に、onPositioned() が onGloballyPositioned() という名前に変更されました(I587e8、b/169083903)
- LazyColumn/Row のサンプルが追加されました(Idc16d)
- emptyList を使用できるよう items メソッドと itemsIndexed メソッドが修正されました(I06647)
- インスペクタ情報を指定するための DSL が追加されました(Ic9a22)
- LongPress が Text に移動されました(Iff2bc)
- Text での選択と、デモが無効になりました(Ie7e97)
- ユーザー補助のために AnnotatedString から SpannableString への変換がサポートされるようになりました(Ief907)
PointerInputFilter.onPointerInput(...)
が削除されました。代わりにPointerInputFilter.onPointerEvent(...)
を使用してください(I6f04a)
バージョン 1.0.0-alpha04
2020 年 10 月 1 日
androidx.compose.foundation:foundation:1.0.0-alpha04
、androidx.compose.foundation:foundation-layout:1.0.0-alpha04
、androidx.compose.foundation:foundation-text:1.0.0-alpha04
がリリースされました。バージョン 1.0.0-alpha04 に含まれる commit については、こちらをご覧ください。
API の変更
- Stack が Box に名前変更されました。compose.foundation.layout にある新しい Box を優先して、既存の Foundation.Box は非推奨になります。Box の子が複数ある場合、新しい Box は子を互いに重ね合わせるように動作します。これは、Column と同じように動作していた以前の Box とは異なります。(I94893、b/167680279)
- Box 装飾パラメータが非推奨になりました。Box に装飾やパディングを付ける場合は、代わりに修飾子を使用します。(Modifier.background、Modifier.border、Modifier.padding)(Ibae92、b/167680279)
- 新たに LazyListState クラスを追加しました。 これにより、LazyRow コンポーネントと LazyColumn コンポーネントのスクロール位置のモニタリングと制御が可能になります。rememberLazyListState() を使用してインスタンスを作成し、コンポーネントの state パラメータに渡します。現在この初期バージョンでは、最初に表示されるアイテムとオフセットをモニタリングできます。(Ic7cb7、b/159307669)
- Lazy リストの位置とスクロール オフセットが、アクティビティの再作成の前後で保存および復元されるようになりました。(Ie045f、b/166589058)
- 長いクリック セマンティクス アクションを追加しました。(I6281b、b/156468846)
- MutatorMutex ユーティリティを追加して、共有状態の単一のミューテータを長期にわたって維持し、競合するミューテータを優先度に基づいてキャンセルするようにしました。(I3f975)
- rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled、textInputServiceFactory を @VisibleForTesting でアノテーションし、内部 API 化して kdoc を非表示にしました。(I554eb、b/168308412)
- 文字列入力のテキストから inlineContent パラメータを削除しました。inlineContent が AnnotatedString と連動する必要があるため、このパラメータは使用されなくなります。(Ief403)
- 非推奨になっていたカスタム Arrangement API を削除しました。(Ic576d、b/168297922、b/168297923)
unbounded
パラメータを wrapContentSize 修飾子に追加しました。これにより、レイアウト要素を無制限で測定できるようになりました。(I77951、b/158559319)- レイアウト スコープのコンテンツ(RowScope の alignWithSiblings など)を静的にインポートできないようにしました。代わりに明示的なスコープ(
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
)を使用してください。(I216be、b/166760797)
バグの修正
- グラフィック 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)
- スクロールのたびに不要な再構成を行わないようにすることで、LazyColumnFor / LazyRowFor スクロールのパフォーマンスを最適化しました。(I64f65、b/168293643、b/167972292、b/165028371)
- スクロール後にアイテムが変更されたときの LazyColumnFor / LazyRowFor のクラッシュを修正して、以前に表示されていたアイテムが削除されたときに自動で上にスクロールするように実装し、最後に空の隙間が表示されないようにしました。(I220ab、b/161480164、b/167855468)
- ScrollableContainer や LazyColumnFor のような同じ方向にスクロールできるコンテナはネストできなくなりました。これまでもサポートはされておらず、LazyColumnFor のアイテムのフリングやすべての Lazy 機能の妨げとなっていました。(I6e101)
- グラフィック 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)
- セマンティクス プロパティに AccessibilityScrollState を追加しました。(Ifeda9)
- オブジェクト作成を回避するために、TextRange をインライン化しました。(Id034b)
- ParagraphConstraints を削除しました。幅が直接 Paragraph に渡されるようになりました。(Ica712)
バージョン 1.0.0-alpha03
2020 年 9 月 16 日
androidx.compose.foundation:foundation:1.0.0-alpha03
、androidx.compose.foundation:foundation-layout:1.0.0-alpha03
、androidx.compose.foundation:foundation-text:1.0.0-alpha03
がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。
API の変更
- InnerPadding の名前が PaddingValues に変更されました。(I195f1、b/167389171)
- レイアウト API の gravity の用法で、名前が align または alignment に一貫して変更されました。(I2421a、b/164077038)
- alignment パラメータが Stack に追加され、すべての Stack 子のデフォルトの配置を指定できるようになりました。(Ie80ca、b/164085265)
バグの修正
- DpConstraints とそれを使用する API が非推奨になりました。(I90cdb、b/167389835)
widthIn
のパラメータminWidth
とmaxWidth
の名前がmin
とmax
に変更されました。preferredWidthIn
、heightIn
、preferredHeightIn
も同様です。(I0e5e1、b/167389544)- 現在のグローバル メソッドが非推奨になるため、onNode などのグローバル メソッドが ComposeTestRule に追加されました。(Ieae36)
- 無効なスワイプ操作の生成を引き起こしていた、GestureScope でのサイズと位置の計算を修正しました(Iaf358、b/166589947)
createAndroidComposeRule
とAndroidInputDispatcher
をandroidx.ui.test.android
からandroidx.ui.test
に移動しました(Idef08、b/164060572)
バージョン 1.0.0-alpha02
2020 年 9 月 2 日
androidx.compose.foundation:foundation:1.0.0-alpha02
、androidx.compose.foundation:foundation-layout:1.0.0-alpha02
、androidx.compose.foundation:foundation-text:1.0.0-alpha02
がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。
バグの修正
- TestUiDispatcher は試験運用となりました(Iae99d、b/161247083)
特定のクロックのフレームを待機しているかどうかを確認するため、
ManualFrameClock.hasAwaiters
を追加しました。runWithManualClock
は ManualFrameClock を必要とするテストrunBlocking
に代わるものです。TestUiDispatcher.Main
はテストのメイン UI ディスパッチャへのアクセスを容易にします。例:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
バージョン 1.0.0-alpha01
2020 年 8 月 26 日
androidx.compose.foundation:foundation:1.0.0-alpha01
、androidx.compose.foundation:foundation-layout:1.0.0-alpha01
、androidx.compose.foundation:foundation-text:1.0.0-alpha01
がリリースされました。バージョン 1.0.0-alpha01 に含まれる commit については、こちらをご覧ください。
バージョン 0.1.0-dev
バージョン 0.1.0-dev17
2020 年 8 月 19 日
androidx.compose.foundation:foundation:0.1.0-dev17
、androidx.compose.foundation:foundation-layout:0.1.0-dev17
、androidx.compose.foundation:foundation-text:0.1.0-dev17
がリリースされました。バージョン 0.1.0-dev17 に含まれる commit については、こちらをご覧ください。
API の変更
- Row と Column に spacedBy Arrangement が追加され、間隔を固定してレイアウトの子を配置できるようになりました。また、aligned Arrangement が追加され、Alignment に従ってレイアウトの子を Row / Column に隣り合わせに配置できるようになりました。元の Arrangement.Vertical#arrange および Arrangement.Horizontal#arrange メソッドは非推奨になりました。将来、カスタム Arrangement の書き込みはサポートされなくなります。(I6733d、b/161985975)
- オフセットがインライン クラスになりました。(Iaec70)
- TextField から onFocusChanged コールバックを削除しました。代わりに Modifier.focusObserver を使用してください。(I51089、b/161297615)
- Modifier.drawBorder が非推奨になりました。代わりに Modifier.border を使用してください。Border データクラスは BorderStroke に置き換えられました。(I4257d、b/158160576)
- VerticalScroller と HorizontalScroller が削除されました。代わりに、ScrollableColumn/Row を使用してください。Modifier.drawBackground を削除しました。Modifier.background を使用してください。(I73b0d、b/163019183)
- 非推奨としてマークされている fillMax* 修飾子を LazyItemScope から削除しました。LazyColumnFor の直接の子ではないアイテムにそのような修飾子を正しく追加することが難しくなっているためです。(Ifa78d)
- DSL として LazyColumn/LazyRow の実装を追加しました。(I93cc6)
- Constraints がインライン クラスになりました。(I88736)
- fillMaxWidth、fillMaxHeight、fillMaxSize 修飾子を使用して、使用可能なスペースの一部にレイアウトのサイズを合わせる機能を追加しました。(I945bb、b/161562591)
バグの修正
- SelectionContainer に修飾子パラメータを追加しました。(I4aada、b/161487952)
- SemanticsPropertyKey に mergePolicy ラムダを追加しました。これを使用して、mergeAllDescendants セマンティクスのマージに関するカスタム ポリシーを定義できます。デフォルトのポリシーでは、すでに存在する場合は親の値が使用され、それ以外の場合は子の値が使用されます。(Iaf6c4、b/161979921)
PlacementScope.placeAbsolute()
の名前がPlacementScope.place()
に変更され、以前のPlacementScope.place()
の名前がPlacementScope.placeRelative()
に変更されました。その結果、PlacementScope.place()
メソッドは、右から左(RTL)へのコンテキストで、自動的に位置をミラーリングしなくなります。必要な場合は、代わりにPlacementScope.placeRelative()
を使用してください。(I873ac、b/162916675)- 非推奨となった FilledTextField コンポーネントを削除しました。代わりに TextField を使用して、塗りつぶしテキスト フィールドのマテリアル デザイン実装を取得してください。(I5e889)
- LinearProgressIndicator に backgroundColor パラメータを追加し、CircularProgressIndicator から内部パディングを削除しました。新しい ProgressIndicatorConstants.DefaultProgressAnimationSpec を追加しました。このプロパティは、値間の進捗をアニメーション化するときにデフォルトの AnimationSpec として使用できます。(If38b5、b/161809914、b/161804677)
- 明確化のため、
state { ... }
composable を非推奨とし、remember { mutableStateOf(...) }
の明示的な呼び出しに置き換えました。これにより、状態管理の API サーフェス全般とコンセプトの数が縮小され、クラス プロパティ委任のby mutableStateOf()
パターンと一致するようになります。(Ia5727) - compose の命名パターンに合わせて RRect を RoundRect に名前変更しました。RRect に類似する関数コンストラクタを作成し、RRect 関数コンストラクタを非推奨としました。(I5d325)
- onChildPositioned と OnChildPositionedModifier を削除しました。代わりに、子レイアウトで onPositioned と OnPositionedModifier を使用する必要があります。(I4522e、b/162109766)
- IntSize がインライン クラスになりました。(I2bf42)
- 空白の領域を長押しして編集します。(Ib1e5b)
- テキストをタップした後、FloatingToolbar を非表示にします。(If4525)
- 選択範囲を更新するときに FloatingToolbar を非表示にします。(I8444c)
- ぼかしの際に選択を解除します。(I781a2)
バージョン 0.1.0-dev16
2020 年 8 月 5 日
androidx.compose.foundation:foundation:0.1.0-dev16
、androidx.compose.foundation:foundation-layout:0.1.0-dev16
、androidx.compose.foundation:foundation-text:0.1.0-dev16
がリリースされました。バージョン 0.1.0-dev16 に含まれる commit については、こちらをご覧ください。
API の変更
- Lazy リストの itemContent パラメータとして LazyItemScope が追加されました。これにより、親の最大サイズを塗りつぶすための修飾子が提供されます。アイテムでビューポートを塗りつぶす必要があるが、アイテムが制約なしで測定されるため通常の Modifier.fillMaxSize() が機能しない事例を解決できます。(Ibd3b2、b/162248854)
- ダイアログを UI に移動しました。(I47fa6)
- LazyColumnForIndexed / LazyRowForIndexed を追加しました。itemCallback でインデックスとアイテムの両方を提供する LazyColumnFor / LazyRowFor のバージョンです。現在のアイテムに加えて、現在のインデックスも把握する必要がある場合に便利です。(I65ff3)
- Modifier.deternimateProgress の名前が Modifier.progressSemantics に変更されました。(I9c0b4)
- LazyColumnItems を LazyColumnFor に名前変更しました。LazyRowItems を LazyRowFor に名前変更しました。(I84f84)
- 推奨する方法を示すためにマークとアノテーションを追加しました。(I66b20)
- foundation.shape.corner パッケージが foundation.share にフラット化されました。(I46491、b/161887429)
- LazyRowItems / LazyColumnItems に交差軸の gravity パラメータを追加しました。LazyRowItems / LazyColumnItems はラップ コンテンツの動作をサポートするようになりました。(Ib39fc)
- ZoomableState の名前が ZoomableController に変更されました。smoothScale にカスタム曲線のサポートが追加されました。
enabled
とonZoomStarted
の機能が追加されました。(If8b8f) - material の FilledTextField を TextField に、foundation の TextField を BaseTextField に名前変更し、シンプルで望ましい API を簡単に見つけて使用できるようにしました。(Ia6242、b/155482676)
- 以前に非推奨となった AdapterList が削除されました。代わりに LazyColumnItems を使用してください。(I12b9b)
- Modifier.drawBackground の名前が Modifier.background に変更されました。(I13677)
- 以前の ConstraintLayout DSL は削除されました。ConstraintSet2 の名前が ConstraintSet に変更されました。(If58d1、b/162450908)
- Modifier.absoluteOffset() と Modifier.absoluteOffsetPx() を追加しました。オフセット修飾子とは異なり、絶対オフセット修飾子は、右から左へのコンテキストで自動ミラーリングされません。(I3aa21)
Row
とColumn
をインライン関数にしました。これにより、使用する際のオーバーヘッドが大幅に削減されます。(I75c10)
バグの修正
- 広範な 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 に名前変更して、未使用のメソッドを削除しました。
MonotonicFrameAnimationClock を追加して、MonotonicFrameClock を AnimationClockObservable として使用できるようにしました。これにより、新しいコルーチン ベースのクロックと、従来のコールバック ベースのクロックを使用している API との隙間が埋まりました。
ManualAnimationClock に相当する MonotonicFrameClock は ManualFrameClock になりました。(I111c7、b/161247083)
SemanticsNodeInteraction.performPartialGesture
が削除されました。代わりにSemanticsNodeInteraction.performGesture
を使用してください(Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
の名前をSemanticsNodeInteraction.getUnclippedBoundsInRoot()
に変更しました。(Icafdf、b/161336532)右から左(RTL)をサポートする API が更新されました。レイアウト方向の読み取りと変更に使用できる LayoutDirectionAmbient が追加されました。Modifier.rtl と Modifier.ltr が削除されました。(I080b3)
Modifier.plus が非推奨になりました。代わりに Modifier.then を使用してください。then により、順序が明確化され、
Modifier.padding().background() + anotherModifier
と書いてチェーンを分断し可読性を下げることが防止されます。(Iedd58、b/161529964)isFocused()
およびisNotFocused()
の SemanticsMatcher を追加しました。(I0b760)RemeasurementModifier が追加されました。レイアウトを同期的に再測定できるようになります。通常、再測定 / 再レイアウトは自動的に行われるため、この機能は必要ではありませんが、スクロール中に LazyColumnItems 内で使用できます。(I5f331、b/160791058)
最新のガイドラインに沿って、isSystemInDarkTheme は常にシステム全体のダークテーマ設定を考慮し、Q 以前の省電力ステータスを無視するようになりました。(I0c10c)
OnChildPositioned が非推奨になりました。代わりに、OnPositioned を子で使用してください。(I87f95、b/162109766)
AndroidComposeTestRule の名前を createAndroidComposeRule に変更しました。(I70aaf)
TextLayoutResult を取得するユーザー補助アクションを追加しました。(I9d6e6)
バージョン 0.1.0-dev15
2020 年 7 月 22 日
androidx.compose.foundation:foundation:0.1.0-dev15
、androidx.compose.foundation:foundation-layout:0.1.0-dev15
、androidx.compose.foundation:foundation-text:0.1.0-dev15
がリリースされました。バージョン 0.1.0-dev15 に含まれる commit については、こちらをご覧ください。
0.1.0-dev15
バージョンの Compose を使用するには、以下を行う必要があります。
依存関係の更新
0.1.0-dev15
バージョンの Compose を使用するには、上記の依存関係の宣言で示されている新しいコード スニペットに従って、依存関係を更新する必要があります。
API の変更
- ScrollableColumn / ScrollableRow の新しいパラメータと同様に、LazyColumnItems / LazyRowItems にも contentPadding パラメータが追加されました。このパラメータを使用することで、コンテンツがクリップされた後にそのパディングを追加できます。この操作は、修飾子パラメータだけでは実行できません。また、最初のアイテムの前または最後のアイテムの後にのみスペースを追加できます。(Ibc24e)
- テキスト フィールド内の onFocusChange コールバックの名前を onFocusChanged に変更しました。(Ida4a1)
- VerticalScroller と HoriziontalScroller が非推奨になりました。Column / Row の動作とパラメータの組み込みエクスペリエンスをサポートするには、ScrollableColumn と ScrollableRow を使用するか、独自の要素で Modifier.verticalScroll と Modifier.horizontalScroll を使用してください。同様に、ScrollerPosition が非推奨になり、ScrollState に置き換えられました。(I400ce、b/157225838、b/149460415、b/154105299)
- Modifier.draggable API と Modifier.scrollable API が改訂されました。DragDirection が削除され、Orientation に置き換えられました。scrollable に必要な状態が簡素化されました。ScrollableState の名前が ScrollableController に変更されました。(Iab63c、b/149460415)
- 単一値のセマンティクス プロパティで呼び出しスタイルが使用されるようになりました。たとえば、「semantics { hidden = true }」は、現在は
semantics { hidden() }
として記述されます。(Ic1afd、b/145951226、b/145955412) - RoundedCornerShape と CutCornerShape で使用する角のサイズを 50% より大きくできるようになりました。(Id2340、b/160400213)
- Image composable のデフォルトの ContentScale パラメータが Inside から Fit に変更されました。この変更は、レイアウト サイズが Painter の固有のサイズより大きい場合に、アスペクト比を維持しながら、基となる Painter を拡大する動作を取得するために行われました。この動作により、期待どおりに Image に固定サイズを指定できます。しかも、composable のサイズを計算するためにのみ固有のサイズを使用する場合でも、デフォルトの動作に影響しません。(I40ae3、b/159838006)
- 静的アニメーション仕様のコンセプトを明確化するため、最上位レベルの API で AnimationBuilder ではなく AnimationSpec を使用するようになりました。tween や spring などの AnimationSpec の作成に関するラムダ要件を削除することにより、遷移 DSL を改善しました。代わりに、それらはコンストラクタのパラメータを直接受け取ります。AnimationSpec の使いやすさを全面的に改善し、ビルダーに依存するのではなくコンストラクタを利用するようにしました。KeyFrames と Tween の期間と遅延を Int に変更しました。これにより、(Long と Int の両方をサポートするための)不要な型キャストとメソッドのオーバーロードがなくなります。(Ica0b4)
- Clickable が削除されました。Modifier.clickable を使用してください。(I84bdf)
- LazyRowItems が追加されました(LazyColumnItems の水平方向スクロール版)。(Ibbcf7)
- 低レベルのステートレス アニメーション API が導入されました。(I63bf7)
- androidx.ui.foundation.TextFieldValue と androidx.ui.input.EditorValue が非推奨になりました。この型を使用する TextField、FilledTextField、CoreTextField の各 composable も非推奨になりました。代わりに androidx.ui.input.TextFieldValue を使用してください。(I4066d、b/155211005)
- IntPx の使用を Int に置き換えました。IntPxPosition を IntOffset に置き換えました。IntPxSize を IntSize に置き換えました。(Ib7b44)
- androidx.ui.foundation.shape.RectangleShape が削除されました。androidx.ui.graphics.RectangleShape を使用してください。(I94939、b/154507984)
- サイズ設定情報を示す際に使用するクラスの数を整理統合するため、PxSize ではなく Size クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される幅と高さを示す 2 つの float 値をパックできるようになります。(Ic0191)
- 位置情報を示す際に使用するクラスの数を整理統合するため、PxPosition ではなく Offset クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される x オフセットと y オフセットを示す 2 つの float 値をパックできるようになります。(I3ad98)
- ピンチズーム機能用の Modifier.zoomable が追加されました。(Id5d63)
- Toggleable コンポーネントが非推奨になりました。代わりに Modifier.toggleable を使用してください。(I35220、b/157642842)
- MutuallyExclusiveSetItem が非推奨になりました。代わりに Modifier.selectable を使用してください。(I02b47、b/157642842)
- TestTag が非推奨になりました。代わりに Modifier.testTag を使用してください。(If5110、b/157173105)
- fontWeight パラメータが Text に追加されました。これまでは誤って追加されていませんでした。(I56937)
- ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I19d02)
- VerticalScroller は、すぐに利用可能な Column を提供するようになりました。HorizontalScroller は、すぐに利用可能な Row を提供するようになりました。(Ieca5d、b/157020670)
- ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Iede0b)
- Modifier.indication が基盤パッケージに追加されました。これを使用して、操作可能なカスタム要素に押下、ドラッグ、その他のインジケーションを表示できます。(I8425f、b/155287131)
- VerticalScroller と HorizontalScroller は、ScrollerPosition で isReversed が設定されている場合に逆スクロールをサポートするようになりました。(I953bd)
- テキスト レイアウトへの composable の追加がサポートされるようになりました。(I1373c)
- CanvasScope の実装を整理統合し、DrawScope と ContentDrawScope のみとしました。CanvasScope の名前を DrawScope に変更しました。DrawScope を更新して Density インターフェースを実装し、LayoutDirection を提供しました。ContentDrawScope の DrawScope サブクラスを削除しました。Painter と PainterModifier が更新され、RTL プロパティを自身で維持しなくなりました。これは DrawScope ですでに提供されているため、手動で提供する必要はありません。(I1798e)
- 非推奨となった DrawBackground API が削除され、Modifier の drawBackground 拡張機能 API に置き換えられました。色、ブラシ、ペイントに関する drawBackground 実装をリファクタリングし、コードパスを削減するとともに、コンポジションの一部として Modifier を作成する必要をなくしました。(I0343a)
- キャンバスを公開するハイレベルの Compose API を更新して、代わりに CanvasScope を公開するようにしました。これにより、ユーザーが独自の Paint オブジェクトを維持管理する必要がなくなります。引き続きキャンバスの利用が必要なユーザーは、drawCanvas 拡張メソッドを使用できます。このメソッドにより、対象のキャンバスに対して Draw コマンドを実行するコールバックが行われます。(I80afd)
- HorizontalScroller と VerticalScroller が、保存されたインスタンス状態を使用してスクロール位置を復元するようになりました。(Ia0fae、b/155075048)
- FocusManagerAmbient が削除されました。フォーカスを取得するには、FocusModifier.requestFocus を使用してください。(Ic4826)
- テーブル レイアウトは、更新された API で再び利用できるようになるまで、一時的に削除されました。(Id88a7)
Canvas オブジェクトをラップしてステートレスの宣言型描画 API サーフェスを公開する CanvasScope API を作成しました。変換は固有のレシーバ スコープ内に含まれます。また、サイズ設定情報のスコープは対応するインセット境界に設定されます。描画オペレーションを構成するためにコンシューマが独自の Paint 状態オブジェクトを維持する必要はありません。
CanvasScopeSample を追加しました。また、デモアプリを更新して、宣言型グラフィックのデモを追加しました。(Ifd86d)
ColoredRect が削除されました。代わりに、Box を drawBackground 修飾子とともに使用してください。(I983c7、b/152753731)
TextField にカーソルの色のカスタマイズを追加しました。(I6e33f)
onTextInputStarted コールバックで提供される SoftwareKeyboardController を使用して、ソフトウェア キーボードの表示 / 非表示を切り替えられるようになりました。(I8dc44、b/151860051)
TextField で使用される TextFieldValue は、次のように使用すると、アクティビティが再作成されても保持できるようになりました:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce、b/155075724)一般的に使用されるパラメータを Text() に追加しました。
Text(style = TextStyle(textAlign = TextAlign.Center))
のような少数のパラメータを渡すローカル テキスト スタイルを現在作成している場合、Text(textAlign = TextAlign.Center)
のようにパラメータを直接指定できます。(I82768)フォーカス サブシステムと統合するため、CoreTextField / TextField focusIdentifier パラメータを FocusNode に置き換えました。(I7ea48)
TextField の更新 - 水平方向のディメンションでは、許可されたすべての使用可能なスペースを占有します。(Ib08df、b/154638552)
InteractionState と Interaction が追加され、押下やドラッグなどの UI の状態の変化に反応するコンポーネントを簡単に作成できるようになりました。(Icfe25、b/152525426)
RectangleShape を androidx.ui.foundation.shape.* から androidx.ui.graphics.* に移動しました。(Ia74d5、b/154507984)
API 内のすべての null 値許容型の Color が null 値非許容型に置き換えられ、null の代わりに Color.Unset が使用されるようになりました。(Iabaa7)
TextField API の更新 - onFocus コールバックと onBlur コールバックを、パラメータを持つ単一の onFocusChange(Boolean) コールバックに統合しました。(I66cd3)
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 と同じ結果が得られることを示すドキュメントを追加しました。(I45f09、b/152842521)
ProvideContentColor を削除しました。代わりに
Providers
で ContentColorAmbient を直接使用してください。(Iee942)テキストに色パラメータを追加しました。これにより、テキスト スタイルの色をテーマのスタイルに手動で統合する必要がなくなります。(I41a66)
DrawModifier API の改善:
- draw() のレシーバ スコープを ContentDrawScope にしました。
- draw() のパラメータをすべて削除しました。
- DrawScope に以前の CanvasScope と同じインターフェースを設定しました。
- ContentDrawScope に drawContent() メソッドを追加しました。(Ibaced、b/152919067)
ColoredRect が非推奨になりました。代わりに
Box(Modifier.preferredSize(width, height).drawBackground(color))
を使用してください。(I499fa、b/152753731)マテリアル デザイン仕様に従ってシェイプテーマ設定システムを更新しました。ほとんどのコンポーネントで使用できる小、中、大のシェイプを提供できるようにしました。(Ifb4d1)
修飾子と演算子を工場出荷時の拡張機能に置き換えました(I225e4)
Draggable を修飾子に移動しました。(ID9b16、b/151959544)
Text
を androidx.ui.core から androidx.ui.foundation パッケージに移動しました。(I87ce5)Checkbox、Switch、Toggleable に
enabled
パラメータを追加しました。(I41c16)リップルを Modifier に変更しました。Clickable はまだ変換されていませんが、推奨される使用法は
Clickable(onClick = { ... }, modifier = ripple())
です。(Ie5200、b/151331852、b/150060763)ベクター グラフィック用の既存のサブコンポジション API に代えて、VectorPainter API を追加しました。サブコンポジションの結果は、DrawModifier ではなく VectorPainte オブジェクトになります。以前の DrawVector composable を非推奨とし、VectorPainter に置き換えました。
Image(Painter)
API の名前をPaintBox(Painter)
に変更しました。ImageAsset の代わりに VectorAsset を使用する点を除いて Image composable と同様に動作する Vector composable を作成しました。(I9af9a、b/149030271)指定された ImageAsset を画面に描画するとともに、サイズ設定とレイアウトを処理する Image composable を作成しました。この composable は、固有のサイズを基準とする任意の Painter インスタンスの描画をサポートするだけでなく、指定された固定サイズまたは最小サイズもサポートします。(Ibcc8f)
Button、FloatingActionButton、Clickable に個別の
enabled
パラメータを追加しました。Button の一部のパラメータの名前と順序を変更しました。(I54b5a)Image の名前を ImageAsset に変更し、レイアウトへの参加とコンテンツの描画に使用される Image データと今後使用される Image composable を区別しやすくしました。
android.graphics.Bitmap に対する拡張メソッド
Bitmap.asImageAsset()
を作成しました。これにより、従来の Android アプリ開発と compose フレームワークを組み合わせるために役立つ ImageAsset のインスタンスを作成できます。(Id5bbd)DrawImage composable を削除しました。既存のレイアウト上に画像を描画する場合は ImagePainter を、スペースを占有する Image を導入する場合は SimpleImage を使用してください。(I595e1、b/149827027)
Stack コンポーネントが右から左への方向性をサポートするようになりました。(Ic9e00)
Icon、IconButton、IconToggleButton を追加し、AppBarIcon を削除しました。AppBarIcon の既存の用法を IconButton に直接置き換えることにより、正しいタッチ ターゲットを追加できます。使用法についてはサンプルをご覧ください。また、これらのコンポーネントで直接使用できる、マテリアル アイコンのアイコンをご覧ください。(I96849)
DrawShape composable が削除されました。代わりに DrawBackground 修飾子を使用してください。(I7ceb2)
AdapterList を追加しました。これは、表示されるアイテムのみを作成して配置するスクロール リスト コンポーネントです。現在の既知の問題は、垂直方向のみであること、子への変更のすべてのケースを完全に処理できないことなどです。(Ib351b)
Scrollable コンポーネントが追加され、カスタムの Scroller / List を作成できるようになりました。(I5fd37)
background の名前が DrawBackground に変更され、デフォルトで記憶されるようになりました。(Ia0bd3)
Box にパディング、枠線、シェイプ、背景のパラメータを追加しました。(I05027、b/148147281)
Canvas コンポーネントを追加しました。この composable はある程度のサイズ(ユーザーが指定するサイズ)を占有するので、CanvasScope による描画が可能になります。(I0d622)
Border
修飾子の名前をDrawBorder
に変更しました。(I8ffcc)レイアウトを結合して共通機能を描画するための Box コンポーネントが追加されました。(I6e2a7)
スクローラーが Android のネイティブ フリング モーション動作を示すようになりました。(I922af、b/147493715)
DrawBorder が Border 修飾子に置き換えられました。(Id335a)
Modifier.testTag との混同を避けるため、Modifier.tag の名前が Modifier.layoutId に変更されました。(I995f0)
ConstraintLayout ガイドラインを作成する際の percent パラメータの名前が fraction に変更されました。(Ida2db)
ConstraintLayout 境界線のマージンのサポートが追加されました。(I47ffe)
ConstraintLayout 内の RTL サポートが修正されました。RTL 非認識型 API が追加されました。(I3b1c7)
ConstraintLayout 用の新しい DSL が追加されました。詳細については、サンプルをご覧ください。(Icaa9a)
@ExperimentalLayout アノテーションが追加されました。ConstraintLayout、FlowRow、FlowColumn に、API が変更されることを示すタグが付けられています。(I412a8)
Modifier.padding(InnerPadding)
が追加されました。(I94985、b/157133803)Row と Column で、非推奨となった RowAlign と ColumnAlign を削除しました。(If60d4、b/155858731)
非推奨となった LayoutTag() を削除しました。代わりに Modifier.tag() を使用してください。非推奨となった Modifier.matchParent() を削除しました。代わりに Modifier.matchParentSize() を使用してください。(If8044)
offsetPx レイアウト修飾子を追加しました。これを使用して、px 単位で(動的)オフセットを定義できます。(I5af57)
AlignmentLineOffset composable が非推奨になりました。代わりに relativePaddingFrom() 修飾子を使用してください。CenterAlignmentLine composable が削除されました。(I60107)
対応する受信制約が指定されていない場合にのみ、ラップされたレイアウトにサイズ制約を設定する defaultMinSizeConstraints レイアウト修飾子を追加しました(最小制約の場合は 0、最大制約の場合は無限大)。(I311ea、b/150460257)
Container が削除されました。代わりに Box を使用してください。(Ibbc2b、b/151407926)
非推奨となった LayoutWidth、Height、Size 修飾子を削除しました。(Ib0bc1)
オフセット修飾子のデフォルト パラメータ値を追加しました。(I37f06)
対称パディング修飾子を追加しました。(I39840)
非推奨となった LayoutAspectRatio 修飾子を削除しました。(I65a74)
非推奨となった LayoutAlign 修飾子を削除しました。(I10877)
ラップされたレイアウトが反対軸の制約なしで測定される原因となっていた、幅と高さの修飾子のバグを修正しました。(I210b8、b/154797971)
verticalGravity パラメータと horizontalGravity パラメータをそれぞれ Row と Column に追加しました。(I7dc5a)
任意の Alignment ではなく垂直方向または水平方向の Alignment を受け入れるように、wrapContentWidth と wrapContentHeight を更新しました。垂直方向または水平方向の Alignment を受け入れるように、重力修飾子を更新しました。カスタムの連続 Alignment をサポートすることを目的として Row、Column、Stack を更新しました。(Ib0728)
Alignment を任意の値でインスタンス化できるようになりました。1D Alignment を追加しました。(Ia0c05)
EdgeInsets の名前を InnerPadding に変更しました。MaterialButtons の innerPadding パラメータの名前を padding に変更しました。(I66165)
alignToSiblings が Placeable ではなく Measured を受け入れるようになりました。(I5788d)
固有の測定値に対するサイズ変更の修飾子を追加し、この目的のためのコンポーネントを非推奨にしました。(I8295d)
ConstraintLayout の子のサイズをカスタマイズするためのサポートを追加しました。(Idb1a5)
非推奨となった Wrap composable と Center composable を削除しました。(I29e23)
レイアウト修飾子を定義する新しい API として LayoutModifier2 を追加し、LayoutModifier を非推奨としました。(If32ac)
RowScope と ColumnScope のメンバーに、行と列の外部からアクセスできるようになりました。(I3a641)
Container が非推奨になりました。代わりに Box を使用してください。(I675ce、b/151407926)
レイアウト位置をオフセットするための LayoutOffset 修飾子を追加しました。(I0b8a3)
Compose レイアウトでの RTL の初期サポート。(Ia5519)
LayoutAlign が空き容量を占有しないように更新しました。(I2b14f)
AspectRatio composable を削除し、修飾子を使用するようにしました。廃止された FlexColumn、FlexRow composable、Spacing 修飾子を削除しました。(Iec8a7)
行と列の LayoutInflexible 修飾子が削除されました。(I0d820)
TextField の選択を変更するには、Drag 選択ハンドルを実装してください。(I27032)
TextField の選択用に LongPressAndDrag を実装しました。(I17919)
バグの修正
- FocusModifier が非推奨になり、Modifier.focus、Modifier.focusRequester、Modifier.focusObserver に置き換えられました。FocusState と FocusDetailedState が非推奨になり、FocusState2 に置き換えられました。(I46919、b/160822875、b/160922136)
runOnIdleCompose
の名前がrunOnIdle
に変更されました。(I83607)- いくつかのテスト API の名前がより直感的にわかりやすいものになりました。findXYZ API という名前はすべて onNodeXYZ に変更されました。doXYZ API という名前はすべて performXYZ に変更されました。(I7f164)
- 非推奨となった Modifier.ripple を削除しました。clickable はデフォルト インジケーションとしてリップルを使用するようになりました(アプリ内で MaterialTheme {} を設定している場合)。そのため、ほとんどのケースでは clickable を使用するだけでリップル インジケーションを無料で利用できます。リップルの色 / サイズ / 境界パラメータをカスタマイズする必要がある場合は、RippleIndication を手動で作成して、インジケーション パラメータとして clickable に渡します。(I663b2、b/155375067)
- 古いサイズテスト API を削除しました。(Iba0a0)
- LayoutNode API が試験運用版になりました。(I4f2e9)
- スクロール方向ロック機能のバージョン 1 が Compose に実装されました。(I1ce7a、b/150289741)
- ポップアップ、ダイアログ、メニューがコンテキストに応じた MaterialTheme を継承するようになりました。(Ia3665、b/156527485)
- Layout() 関数の測定ブロックからレイアウト方向のパラメータを削除しました。ただし、測定スコープ オブジェクトを介してコールバック内でレイアウト方向を使用できます。(Ic7d9d)
- AbsoluteArrangement を追加しました。これにより、RTL の自動ミラーリングを行わずに Row 内に子を配置することができます。(I3a1df)
- @Untracked アノテーションが非推奨になりました。@ComposableContract(tracked=false) に置き換えます。(Id211e)
- この変更が行われる前、compose コンパイラ プラグインは、スコープ内の解決された「composer」に「emit 演算子」メソッドが見つかった場合、@Composable 関数内のコンストラクタの呼び出しに対して自明でないインターセプトを実行していました。(I5205a、b/158123804)
viewModel()
composable を追加しました。アクティビティ内やフラグメント内と同様に、ViewModel の作成や、作成済み ViewModel の取得を行うことができます。(I5fdd1)Radius クラスをインライン クラスにリファクタリングしました。コンパニオン作成メソッドを削除し、関数コンストラクタに置き換えました。この関数コンストラクタは、デフォルト パラメータで、y 軸沿いの半径が、必須の x 軸半径パラメータの半径と一致するようになっています。
DrawScope.drawRoundRect を更新し、2 つの float 値を使用して x 軸沿いと y 軸沿いの半径を個別に示すのではなく、単一の Radius パラメータを使用するようにしました。(I46d1b)
ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。Px クラス全体が削除されています。(I3ff33)
ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I086f4)
ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Id3434)
ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I97a5a)
TextField のカーソルが、点滅アニメーションで表示されるようになりました。(Id10a7)
部分的ジェスチャーが、GestureToken を順に渡していく必要がなくなりました。(Id7ae5)
ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I57bff)
Modifier.semantics の非推奨が解除され、高レベルのコンポーネントでの使用が可能になりました。(I4cfdc)
AnnotatedString.Builder.addAnnotationString の名前を addStringAnnotation に変更しました。(I5059e)
Alignment API を更新し、絶対アライメント(RTL コンテキストで自動ミラーリングを行わない)のサポートを追加しました。(I38cd3)
Layout と LayoutModifier の子を異なるレイアウト方向で測定できるようになりました。(Ibd731)
基になる ImageAsset のサブセクションの描画をサポートするため、オプションの rect パラメータを ImagePainter に追加しました。(I0ea9e)
アイテムを削除する際に AdapterList でクラッシュする問題を修正しました。(Ic64b0、b/153195921)
activity.setContent { } ブロックの中に配置した最初のレイアウトの測定方法を変更しました。以前は、アクティビティ画面全体を表示していましたが、レイアウトを Stack の中に配置するようにしました。画面よりも小さくすることができ、画面の左上に配置されます。以前の動作が必要な場合は、レイアウトに Modifier.fillMaxSize() を適用できます。(Ie88a7、b/153453714)
ui-text-compose モジュールの名前が ui-text に変更されました。ui-text には、現在 CoreText composable と CoreTextField composable が含まれています。(Ib7d47)
ui-text モジュールの名前が ui-text-core に変更されました。(I57dec)
ui-framework の下の CoreText composable と CoreTextField composable を ui-text-compose の下に移動しました。プロジェクトに ui-text-compose を含めることができます。(I32042)
runOnIdleCompose
とrunOnUiThread
が ComposeTestRule のメソッドではなくグローバル関数になりました。(Icbe8f)[Mutable] State プロパティ デリゲート演算子が、Kotlin 1.4 のプロパティ デリゲート最適化に対応するため、拡張機能に移動されました。
by state { ... }
またはby mutableStateOf(...)
を引き続き使用するには、呼び出し元でインポートを追加する必要があります。(I5312c)DrawLayerModifier と drawLayer() で、clipToBounds と clipToOutline のデフォルト値が false になりました。(I0eb8b、b/152810850)
LayoutResult の名前を MeasureResult に変更しました。(Id8c68)
Center composable が非推奨になりました。LayoutSize.Fill + LayoutAlign.Center 修飾子に置き換えるか、適切な修飾子が適用された Box composable または Stack composable に置き換える必要があります。(Idf5e0)
LayoutFlexible の名前を LayoutWeight に変更しました。このパラメータを補うために tight パラメータの名前を変更しました。(If4738)
DrawVector は、通常のコンポーズ可能な関数から変更され、レイアウトの背景としてベクトルを描画する修飾子 drawVector() を返すようになりました。(I7b8e0)
コンポーズ可能な関数 Clip を修飾子 drawClip() に置き換えました。DrawClipToBounds は、四角形のレイヤ境界にクリップするだけでよい場合に便利な修飾子です。(If28eb)
コンポーズ可能な関数 DrawShadow を drawShadow() 修飾子に置き換えました。シャドウは、LayerModifier の一部として描画されるようになりました。(I0317a)
androidx.compose.ViewComposer が androidx.ui.node.UiComposer に移動され、androidx.compose.Emittable が削除されました。これは ComponentNode と重複していました。androidx.compose.ViewAdapters が削除されました。サポート対象のユースケースではなくなりました。Compose.composeInto が非推奨になりました。代わりに
setContent
またはsetViewContent
を使用してください。Compose.disposeComposition が非推奨になりました。代わりに、setContent
が返すComposition
のdispose
メソッドを使用してください。androidx.compose.Compose.subcomposeInto は androidx.ui.core.subcomposeInto に移動されました。ComponentNode#emitInsertAt の名前が ComponentNode#insertAt に変更されました。ComponentNode#emitRemoveAt の名前が ComponentNode#removeAt に変更されました。ComponentNode#emitMode の名前が ComponentNode#move に変更されました。(Idef00)Wrap composable が非推奨になりました。これは、LayoutAlign 修飾子または Stack composable で置き換えることができます。(Ib237f)
レイアウトの方向を親レイアウト ノードから子レイアウト ノードに伝えるようにしました。レイアウト方向修飾子を追加しました。(I3d955)
新しく作成された Modifier に複数の Modifier インスタンス間で共有できる元の Painter への参照があるため、Painter.toModifier の名前を Painter.asModifier に変更しました。(I7195b)
LayoutPadding 修飾子で右から左方向をサポートするようになりました。(I9e8da)
Density と DensityScope が 1 つのインターフェースに統合されました。ambientDensity() ではなく、DensityAmbient.current を使用できるようになりました。withDensity(density)ではなく、with(density)だけになりました。(I11cb1)
ValueHolder クラスを削除しました。サブクラスで値の更新を監視できるよう、アニメーション値のフィールドを抽象化するために、AnimatedValue クラスと AnimatedFloat クラスを再構成しました。
- AnimatedValue、AnimatedFloat などで使用するモデルクラスを追加しました。
- 値を更新する間にアニメーションを表示するための、軽量の新しい @Composable API セットを追加しました。
- (I79530)
アンビエント API を大幅に変更しました。詳細については、ログと
Ambient<T>
のドキュメントをご覧ください(I4c7ee、b/143769776)Placeable#get(AlignmentLine) から返されるアライメント ラインの Int 位置が非 null になりました。クエリされたアライメント ラインが見つからなかった場合は、AlignmentLine.Unspecified が返されます。(I896c5、b/158134875)
再コンポーズ時にクラッシュを引き起こす ConstraintLayout バグを修正しました。(Ibee5a、b/158164341)
WithConstraints 後置ラムダ API が変更されました。2 つのパラメータに代わってレシーバ スコープが設けられ、constraints と layoutDirection に加えて、Dp 単位で指定する minWidth、maxWidth、minHeight、maxHeight プロパティが用意されました。(I91b9a、b/149979702)
LayoutModifier2 の名前が LayoutModifier に変更されました。(Id29f3)
Layout と LayoutModifier2 の組み込み測定関数に IntrinsicMeasureScope レシーバを追加しました。これにより、暗黙的に伝播されるレイアウト方向を持つ組み込みクエリ API が提供されます。(Id9945)
LayoutDirectionAmbient が非推奨になりました。ロケールで定義されたレイアウト方向を読み取るには、ConfigurationAmbient の localeLayoutDirection を使用します。(I851b1)
LayoutCoordinates に positionInParent と boundsInParent を追加しました。(Icacdd、b/152735784)
ParentData composable が非推奨になりました。測定ブロック内で認識するためにレイアウトの子にタグを付ける必要がある場合は、ParentDataModifier インターフェースを実装する修飾子を作成するか、LayoutTag 修飾子を使用してください。(I51368、b/150953183)
コンポーズ可能な関数 OnPositioned および OnChildPositioned に代えて、OnPositionedModifier と OnChildPositionedModifier を追加しました。(I2ec8f)
LayoutPadding の負のパディングは使用できなくなりました。負の位置オフセットには LayoutOffset を使用してください。(Ifb5b1)
WithConstraint に LayoutDirection パラメータが追加されました(I6d6f7)
ComposeFlags.COMPOSER_PARAM
フラグをtrue
に更新しました。これにより、compose プラグインのコード生成方法が変更されます。概略としては、ランタイムが実行を適切に管理できるようにするため、@Composable 関数が追加の合成パラメータで生成され、このパラメータがその後の @Composable 呼び出しに渡されます。これは互換性を破る重大なバイナリの変更ですが、compose のすべての許可される使用方法でソースレベルの互換性が保持されます。(I7971c)LayoutCoordinates を変更して providedAlignmentLines を Map ではなく Set にし、LayoutCoordinates が値を取得するために get() 演算子を実装するようにしました。これにより、修飾子ごとに新しいコレクションを作成しなくても、複数の修飾子で 1 つ以上のまとまった値を変更することが容易になります。(I0245a)
LayoutCoordinates に位置プロパティがなくなりました。LayoutModifier、回転、スケーリングを考慮すると、位置プロパティは妥当ではありません。代わりに、デベロッパーは parentCoordinates と childToLocal() を使用して、ある LayoutCoordinate から別の LayoutCoordinate への変換を計算する必要があります。
LayoutCoordinates は、サイズ プロパティに PxSize ではなく IntPxSize を使用します。レイアウトでは整数のピクセルサイズを使用するため、すべてのレイアウト サイズで浮動小数点値ではなく整数を使用する必要があります。(I9367b)
Constraints の API サーフェスの改善。(I0fd15)
TextDirection.Content を追加しました。(I48f36)
ツールバー メニューを調整して、コピー、切り取り、貼り付けが適切に表示されるようにしました。(Id3955)
TextField の選択用に FloatingToolbar を追加しました。(Ie8b07)
TextDirectionAlgorithm の名前が TextDirection に変更されました。(I75ce8)
TextDirection の名前が ResolvedTextDirection に変更されました。(I3ff38)
TextField の選択に HapticFeedback を追加しました。(I58050)
Copy、Cut、Paste の各メソッドを TextField の選択に追加しました。(Idb70b)
TestTag と Semantics が削除されました。代わりに Modifier.testTag と Modifier.semantics を使用してください。(I15ff0、b/158841414)
Locale と LocaleList のパッケージ名を androidx.ui.text から androidx.ui.intl に変更しました。(I8132c)
API の変更:
AnnotatedString(builder: Builder)
の名前をannotatedString(builder: Builder)
に変更しました。(Ia6377)API の変更:
AnnotatedString.Item
の名前をAnnotatedString.Range
に変更しました。(I2d44d)テキスト関連の操作用のツールバーを追加しました。(I49d53)
新しい LifecycleOwnerAmbient を利用できるようになりました。Compose UI で使用している Activity は、androidx.activity.ComponentActivity(または AppCompatActivity)を拡張する必要があります。android.app.Activity に対する setContent は非推奨になりました。(Idb25a、b/153141084)
androidx ポリシーに合わせて、ui-android-text パッケージ名(androidx.text)を androidx.ui.text.platform に置き換えました。(I42711)