Compose Foundation

すぐに使用できるビルディング ブロックで Jetpack Compose アプリを作成し、基盤を拡張して独自のデザイン システム要素を構築します。
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2024 年 11 月 13 日 1.7.5 - - 1.8.0-alpha06

構造

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

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

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

依存関係の宣言

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

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

Groovy

dependencies {
    implementation "androidx.compose.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 修飾子を追加します。(Iff20ab/331289114
  • AnchoredDraggableStateconfirmValueChange を非推奨にしました。状態の変更を拒否するのではなく、許可されていないアンカーをアクティブなアンカーセットに含めず、OverscrollEffect を使用して、リクエストされたアクションが使用できないことを示します。(Ia717f
  • 自動入力マネージャーをインターフェースに変更しました。(I84914b/376080755
  • OverscrollEffect#withoutDrawing API と OverscrollEffect#withoutEventHandling API を追加しました。これらの API は、イベントを描画または処理しない、指定されたオーバースクロール効果のラップでインスタンスを作成します。これにより、イベントをディスパッチするコンポーネントとは別のコンポーネントでオーバースクロールをレンダリングできます。たとえば、遅延リスト内のオーバースクロールの描画を無効にして、オーバースクロールを別途上部または他の場所に描画します。(Idbb3db/266550551b/204650733b/255554340b/229537244
  • テキスト ツールバーに自動入力のサポートを追加しました。(Ie6a4c
  • OverscrollConfigurationLocalOverscrollConfiguration のサポートが終了し、rememberPlatformOverscrollFactory が追加されました。これにより、デフォルトのオーバースクロール実装のインスタンスを作成したり、パラメータをカスタマイズしたりできるようになりました。オーバースクロールを無効にするには、LocalOverscrollConfiguration provides null ではなく LocalOverscrollFactory provides null を使用します。グローの色やパディングを変更するには、LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) ではなく LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) を使用します。(Ie71f9b/255554340b/234451516
  • 他の API と整合性を保つため、OverscrollEffecteffectModifier プロパティを node: DelegatableNode に変更しました。(Ic0b46b/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 など)に渡すと、テキストサイズが利用可能なスペースに適応します。(Ice7e0b/139320827
  • OverscrollFactory API と LocalOverscrollFactory API を追加し、階層内でのオーバースクロールを構成できるようにしました。LocalOverscrollFactory で指定された値は、デフォルトで OverscrollEffect の作成に使用されます。指定された現在のファクトリーからエフェクトを作成して記憶するには、rememberOverscrollEffect() を使用します。(I51ca4b/255554340

API の変更

  • 自動入力の入力成功ハイライトの色相を変更するために使用できる CompositionLocal を導入。(I32092
  • ScrollableDefaults.overscrollEffect を削除しました。代わりに rememberOverscrollEffect を使用してください。これにより、LocalOverscrollFactory で提供されている現在のオーバースクロール実装のインスタンスが作成されます。(I1651ab/255554340)、(b/234451516
  • ユーザーの自動入力フローを微調整できる新しい AutofillManager インターフェースと、この新しいバージョンの自動入力を有効にする isSemanticAutofillEnabled フラグを導入しました。(I9d484
  • CombinedClickableNode を削除します。この試験運用版 API は、パフォーマンス作業をブロックしないように一時的に公開されていましたが、現在は必要ありません。代わりに、他の修飾子 API と同様に Modifier.combinedClickable を直接使用する必要があります。(I4b658
  • horizontalScrollverticalScrollLazyColumnLazyRowLazyHorizontalGridLazyVerticalGridLazyHorizontalStaggeredGridLazyVerticalStaggeredGridHorizontalPagerVerticalPager にオーバーロードを追加し、カスタム OverscrollEffect の指定をサポートしました。指定された OverscrollEffect はイベントを受信し、これらのコンポーネントの境界内にレンダリングされます。同じ OverscrollEffect を 2 回描画することはサポートされていません。したがって、これらのコンポーネントのいずれかに指定した同じ OverscrollEffectModifier.overscroll で別々に描画することはできません。これらのコンポーネントの境界外にオーバースクロールを描画するユースケースについては、今後別途対応する予定です。(I2dc42b/266550551b/234274772b/224572538b/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 コールバックを追加し、これらの変更時にノードの状態を更新できるようにしました。(I04f3eb/340662451
  • 段落と ParagraphIntrinsics は、AnnotatedString に適用されているすべてのアノテーションのリストを受け取るようになりました。以前は、SpanStyles のリストのみを受け取っていました。(I12f80
  • PointerInputModifierNode#touchBoundsExpansion を導入しました。これにより、単一のポインタ入力修飾子のタップ境界を拡大できます。(Iccf02b/335339283

バグの修正

  • 一部のシナリオで、AnchoredDraggableDefaults.flingBehavior に渡された位置のしきい値が正しく考慮されないバグを修正しました。(Ifdf0db/367660226
  • フリングの進行中にノードツリーから削除されるネストされたスクロール可能な要素の修正を導入しました。これで、これらのノードはフリングをキャンセルし、残りの速度で onPostFling イベントを正しく送信します。また、リグレッションが発生した場合の動作を制御するフラグ NewNestedScrollFlingDispatchingEnabled も導入します。このフラグはベータ版の前に削除されます。(I05c37b/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 という新しいセマンティクス ロールを導入しました。(Id354bb/354109776b/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.StartEllipsisTextOverflow.MiddleEllipsis が使用可能になり、1 行テキストの行の最初または中央に省略記号を配置できるようになりました。(I38913b/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 が含まれています。

バグの修正

  • テキスト フィールドでまれにクラッシュするバグを修正しました。(I475c6b/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.clickableModifier.focusableModifier.indicationModifier.scrollableModifier.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 を使用してください。
  • TextFieldState を使用する BasicTextField は安定しており、すべての呼び出しサイトで BasicTextField(value, onValueChange) から BasicTextField(TextFieldState) への移行を開始することをおすすめします。
  • ClickableText のサポートを終了しました。クリック可能なリンクをテキストに追加するには、AnnotatedString で新しい LinkAnnotation アノテーションを使用して BasicText を使用します。LinkAnnotation を使用すると、リンクの状態(フォーカス、ホバーなど)に基づいてカスタム スタイルを設定できます。
  • MaxLinesOverflowContextualFlowRowEnhanced FlowRow/Column を導入しました。試験運用版の FlowRowFlowColumn が強化され、maxLines とオーバーフローのサポートが追加されました。また、ContextualFlowRowContextualFlowColumn も新たに導入されました。この更新は、パフォーマンスに最適なコンポーネントを提供するように設計されています。ContextualFlow* は、小さな maxLines 構成と動的 +N 表示ボタンを使用して多数のアイテムを表示する場合に最適です。FlowRowFlowColumn は、100 個未満のアイテムを表示する場合に最適です。重要: FlowRow または FlowColumn の既存の動作(すべてのアイテムが、クロス軸の最大値に収まるかどうかに関係なく合成される)を維持するには、初期化時にオーバーフローを FlowRowOverflow.Visible または FlowColumnOverflow.Visible に設定します。ContextualFlowRowSampleFlowRowSample で、これらの新機能の使用例を確認してください。(Ib9135b/293577082
  • アイテムの表示と非表示のアニメーションのサポートを LazyColumnLazyRow に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするために Modifier.animateItemPlacement() 修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem() という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(I2d7f7b/150812265
  • 公式の Android API(ScrollCaptureCallback)を使用して、Compose スクロール コンテナでの長いスクリーンショットの試験運用版サポートを実装しました。
  • NestedScroll ソースのドラッグとフリングは、アニメーション(副作用)とマウスホイールおよびキーボード(UserInput)が含まれるようにソースの定義が拡張されたため、UserInputSideEffect に置き換えられます。
  • 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 関数 performTextReplacementperformTextInputperformTextClearance は、読み取り専用の 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 を val isEditable に変更しました。このプロパティはブール値になり、常にテキスト フィールドで指定されます。(I8acd8
  • basicMarquee のデフォルト値を MarqueeDefaults オブジェクトに移動しました。(I12ff6
  • basicMarquee delayMillis パラメータの名前を repeatDelayMillis に変更しました。(I12ff6
  • リンクのスタイル設定用の API を更新しました。TextLinkStylesTextStyle に移動し、マテリアルから TextDefaults を削除しました。(I5477b

バグの修正

  • LayoutCoordinates.introducesFrameOfReference の名前を LayoutCoordinates.introducesMotionFrameOfReference に変更し、目的をより明確にしました。そのフラグに基づいて座標を計算する関連関数の名前を変更しました。(I3a330
  • MarqueeDefaults プロパティから「デフォルト」を削除しました。(I1d8a0
  • MarqueeDefaults プロパティから「Marquee」を削除しました。(Iad4f4
  • TextStyle クラスから TextLinkStyles を削除しました。代わりに、TextLinkStylesLinkAnntation コンストラクタと AnnotatedString.fromHtml メソッドの一部になっています(I90b2b
  • 境界に到達した状態で境界に向かってスワイプすると、Pager がスナップするバグを修正しました。(I9f373b/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.hasEqualsAnnotationshasEqualAnnotations に変更(I685c0
  • テキスト内のマテリアル テーマのリンクを取得する API を更新しました。具体的には、テーマ設定された LinkAnnotations の作成と、テーマ設定されたリンクを含む HTML の解析を行うメソッドを TextDefaults から削除しました。代わりに、Text コンポーザブルにパラメータとしてリンクのスタイルを設定できる TextLinkStyles クラスを追加しました。(I31b93
  • onDragStartedonDragStopped を非停止コールバックに置き換えました。(I59de8

バグの修正

  • contentPadding が受信制約よりも大きい場合に Pager がクラッシュするバグを修正しました。Pager は、PageSize から返された負の値を 0 に強制変換するようになりました。(Iba5d8b/314008560

バージョン 1.7.0-alpha08

2024 年 5 月 1 日

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

新機能

  • BasicTextFieldSelectionContainer に右クリック コンテキスト メニューを追加し、切り取り、コピー、貼り付け、すべて選択のアクションの項目を追加しました。(If8c93Ia2b49I6f268

API の変更

  • LazyLayout プリフェッチ リクエストを緊急としてマークできるようになりました。これは、このアイテムが次のフレームで必要になると予想され、フレーム バジェットを無視して、事前により多くの処理を行うことを意味します(Id513f
  • isPositionedByParentWithDirectManipulation の名前を introducesFrameOfReference に変更しましたただし、このプロパティの効果は逆になりました。つまり、デフォルトではほとんどの LayoutCoordinates が参照フレームを導入し、直接操作された場合にのみ false になります。参照フレームを導入する位置のみをクエリするには、positionInLocalFrameOfReference(...) を使用します。または LookaheadScope から positionInLocalLookaheadFrameOfReference を減算します。(Ifc5f7
  • LinkInteractionListener 内で onClicked の名前を onClick に変更しました(Iaa35c
  • API 評議会のフィードバックに基づいて、getScrollViewportLength のアクション ラムダを変更。(Ibc74a
  • タッチペン手書き委任 API の名前を変更しました。(Ica45fb/327271923
  • TextInclusionStrategy.isInsideisIncluded に変更しました。Paragraph/MultiParagraph#getRangeForRect() の戻り値の型を null 値を許容しない型にします。(I51f26

バグの修正

  • SelectionContainer のすべてのテキスト コンテキスト メニューに [すべて選択] を追加しました。(Ib750eb/240143283
  • reverseScrolling=true でスクロール コンテナの長いスクリーンショットのキャプチャを修正しました。(I7c59c
  • 状態の境界に近づくと AnchoredDraggableStatecurrentValue が変更される問題を修正しました。(Iea30bb/333846848

外部からの協力

  • 責任をより明確に反映するため、PrefetchExecutorPrefetchScheduler に変更しました。(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 オブジェクトを追加しました。(I98532b/139312671
  • アイテムの表示と非表示のアニメーションのサポートを LazyVerticalGridLazyHorizontalGrid に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするために Modifier.animateItemPlacement() 修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem() という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(Ib7d12b/330510929
  • アイテムの表示と非表示のアニメーションのサポートを LazyVerticalStaggeredGridLazyHorizontalStaggeredGrid に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするために Modifier.animateItemPlacement() 修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem() という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(I69bc9b/330511290

API の変更

  • ContextMenuColors と関連する LocalContextMenuTheme ProvidableCompositionLocal を追加します。テキスト フィールドと選択可能なテキストのコンテキスト メニューの色は、コンポジション ローカルを指定して変更できます。(Ifa154
  • テキストリンクに、通常のスタイル設定、ホバー状態、フォーカス状態に加えて、押下状態のスタイル設定オプションが追加されました。(I5f864b/139312671
  • 手書きジェスチャーの ViewConfiguration.HandwritingGestureLineMargin を導入。BasicTextField の手書きジェスチャーをサポート。(Ie6e13b/325660505
  • 関連する API サーフェスの残りの部分を安定させる時間がないため、1.7 リリースで DelegatableNode.scrollIntoView を削除しました。この機能は 1.8 で再導入されます。(I6cf61b/333421581b/332900232
  • レイアウト座標をクエリするときに、excludeDirectManipulationOffset 引数を使用して、Placeable.PlacementScope.withDirectManipulationPlacement を使用して子を配置した親レイアウトによって設定されたオフセットを除外できるようになりました。同様に、子の位置を頻繁に変更するレイアウトは、withDirectManipulationPlacement(デフォルトで実装されているスクロールなど)を使用して配置できるようになりました。これにより、approachLayout ベースのアニメーションをより直感的に作成できるようになります。アニメーション化するオフセットと、アニメーション化する際に直接適用する内容を区別できるようになりました。(I60ec7
  • LazyStaggeredGridrequestScrollToItem を導入。測定パスごとに、クライアントは requestScrollToItem を呼び出して、キーに基づくインデックスの維持をオプトアウトできるようになりました。requestScrollToItem が呼び出されない限り、既存の動作は変更されません。(I63983
  • Pager に requestScrollToPage を導入しました。測定パスごとに、クライアントは requestScrollToPage を呼び出して、キーに基づくインデックスの維持をオプトアウトできるようになりました。requestScrollToPage が呼び出されない限り、既存の動作は変更されません。(Ic4213
  • LazyGrids 用に requestScrollToItem を導入しました。測定パスごとに、クライアントは requestScrollToItem を呼び出して、キーに基づくインデックスの維持をオプトアウトできるようになりました。requestScrollToItem が呼び出されない限り、既存の動作は変更されません。(I0a7a0
  • ClickableText は非推奨とみなされています。テキストにリンクを追加するには、リンクに対応する LinkAnnotation を使用して AnnotatedString を作成し、この AnnotatedStringText コンポーザブルに渡します。(I34d4bb/323346994
  • UrlAnnotation は非推奨です。代わりに LinkAnnotation.Url を使用してください。マテリアル テーマ設定を使用している場合は、TextDefaults オブジェクトを使用して、マテリアル テーマ設定が適用されたアノテーションを作成します。(I8d180b/323346545
  • String.parseAsHtml の名前が AnnotatedString.Companion.fromHtml に変更されました。(I43dcd
  • スタイル設定引数(linkStylefocusedLinkStylehoveredLinkStyle)とリンク操作リスナーを parseAsHtml メソッドに追加しました。<a> タグを含む HTML タグ付き文字列を解析すると、このメソッドはそのようなタグごとに LinkAnnotation.Url を構築し、スタイリング オブジェクトとリンク インタラクション リスナーを各アノテーションに渡します。(I7c977
  • LinkAnnotation が、状態ベースのスタイル設定引数と LinkInteractionListener を受け取るようになりました。このアノテーションを AnnotatedString に追加してハイパーリンクを取得します。focusedStatehoveredState を渡すことで、リンクがフォーカスされているときやホバーされているときのリンクの視覚的な構成を定義できます。(I81ce4b/139312671
  • 長いスクリーンショットの機能フラグが削除されました。(I28648b/329128246
  • LazyColumn で、長いスクリーンショットで固定ヘッダーが正しくレンダリングされるようになりました。(I8d239b/329296635
  • 新しい BasicTextField で導入された残りの試験運用版 API の大部分を安定化しました。(I714e2
  • コンテンツの難読化に使用する文字を制御する textObfuscationCharacter パラメータを BasicSecureTextField に追加しました。(I0588b
  • NestedScroll ソースのドラッグとフリングの定義が拡張され、アニメーション(副作用)、マウスホイール、キーボード(UserInput)が含まれるようになったため、これらのソースの定義を変更し、UserInputSideEffect に置き換えました。(I40579
  • LocalBringIntoViewSpec を導入しました。これは、Scrollable 修飾子レイヤで適用される、プラットフォーム依存のフォーカス スクロール動作です。(I27aa5b/317453911
  • TextFieldCharSequence を削除しました。TextFieldBuffer.originalValuesTextFieldBuffer.originalTextTextFieldBuffer.originalSelection に置き換えられます。(I2c7d6
  • ImeOptions.hintLocales は null 許容ではなくなりました。空の言語 / 地域リストを渡す場合は、LocaleList.Empty を使用します。(Ic5bc4
  • getOffsetFractionForPage の名前を getOffsetDistanceInPages に変更しました(Ia05e2

バグの修正

  • InputTransformationsnext と結合された場合、新しい KeyboardOptions.merge メソッドを使用して、個々のオプションで KeyboardOptions が適切に統合されるようになりました。(Ie5304b/295951492
  • AnchoredDraggableStatetargetValue で、位置情報のしきい値が考慮されなくなりました。暗黙的なしきい値が 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 はこちらをご覧ください。

新機能

  • アイテムの表示と非表示のアニメーションのサポートを LazyColumnLazyRow に追加しました。以前は、プレースメント(並べ替え)アニメーションをサポートするために Modifier.animateItemPlacement() 修飾子を追加できました。この修飾子は非推奨となり、Modifier.animateItem() という新しい非試験運用版の修飾子が導入されました。これにより、表示(フェードイン)、非表示(フェードアウト)、並べ替えの 3 種類のアニメーションをすべてサポートできるようになりました。(I2d7f7b/150812265
  • LazyColumn/LazyRow のクライアントは、非停止の LazyListState.requestToScroll を呼び出して、今後の測定パスのキーに基づくインデックスの維持をオプトアウトできるようになりました。(I98036b/209652366
  • スタイル設定された文字列の parseAsHtml メソッドを追加しました。これにより、HTML タグでマークされた文字列を AnnotatedString に変換できます。なお、サポートされているタグは一部です。たとえば、箇条書きリストはまだ表示できません。(I84d3d
  • 公式の Android API(ScrollCaptureCallback)を使用して、Compose スクロール コンテナ内の長いスクリーンショットの試験運用版サポートを実装しました。この機能は試験運用版であり、現在はすべてのケースを正しく処理できない場合があります。そのため、現在はデフォルトで無効になっています。オプトインするには、ComposeFeatureFlag_LongScreenshotsEnabled フラグを true に設定します。このフラグは 1.7 ベータ版より前に削除されます。(I2b055b/329296471
  • 新しい GraphicsLayer API を導入し、GraphicsLayer インスタンスの配置とレンダリングをより柔軟に行うことができます。また、Composable 実装と調整して GraphicsLayer 修飾子インスタンスを指定しなくても、組み込みレンダリング機能をサポートできます。

API の変更

  • すべての KeyboardOptions パラメータのデフォルト値が未指定になりました。KeyboardOptions.merge メソッドを追加しました。
  • KeyboardOptions.autoCorrect の名前を autoCorrectEnabled に変更し、null 可能にしました。null は値が指定されていないことを示します。(Ia8ba0b/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: 「偽の」テキスト入力フィールドでのタッチペン手書き入力をサポートします。(I9c09cb/327271923
  • KeyboardOptions.shouldShowKeyboardOnFocus の名前を showKeyboardOnFocus に変更しました(Ib4b7ab/295951492
  • Modifier.contentReceiver から hintMediaTypes パラメータを削除しました。デベロッパーは、受信した TransferableContent のメディアタイプが、構成された hintMediaTypes と互換性がない可能性があるため、そのチェックをすでに推奨されていました。(I82f99
  • BasicSecureTextField のパラメータの順序を変更しました。keyboardType パラメータと imeAction パラメータを削除し、KeyboardOptions クラス全体を採用しました。BasicSecureTextField に適したデフォルトはそのままにします。また、scrollState パラメータが不要になりました。(Ibbfa9
  • TextFieldState.text の型は TextFieldCharSequence から CharSequence に変更されました。そのため、TextFieldState.selection: TextRangeTextFieldState.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
  • TextFieldStateTextFieldBuffer の Codepoints 関連のメソッドとプロパティを削除しました。また、残りの選択と合成に関連する API から inChars 接尾辞を削除しました。(Ief7ce
  • アンカーポイントを通過するときに、AnchoredDraggablecurrentValue が更新されるようになりました。settledValue を使用して以前の currentValue セマンティクスを受け取ります。更新はアンカーで停止したときにのみ行われます。進行状況は、プロパティではなく関数として公開されるようになりました(開始点と終了点が必要です)。(Ibe6e8b/318707189b/298271489b/294991954
  • BasicTextField(state)TextFieldStateInputTransformationOutputTransformationTextFieldLineLimitsTextFieldDecorator が安定版に移行されました。(I9582b
  • 低レベルの IME 関連テストやその他の低レベルの IME ユースケースの作成に役立つ InterceptPlatformTextInput を導入しました。PlatformTextInputTestOverride は非推奨になりました。(I862edb/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
  • KeyboardOptionshintLocales を追加し、TextFields に特定のロケールを使用して IME にヒントを提供して、優先言語をプリセットする機能を追加しました。(Id18c2
  • value: String パラメータと onValueChange: () -> String パラメータを受け入れる試験運用版の BasicTextField2BasicSecureTextField のオーバーロードを削除しました。(I568b4
  • InputTransformation にオプションの applySemantics 関数を追加して、適用される BasicTextField2 のセマンティクスに影響を与えます。(I74a2fb/170648072
  • この CL では、GetScrollViewportLength セマンティック アクションを追加して、Compose でスクロールされるコンポーネントに関する情報を a11y システムにパイプアップできるようにします。この CL では、Foundation のスクロール可能なリストでもこのプロパティを使用できるようにします。(Ic5fa2
  • BasicTextField2 の名前が BasicTextField に変更されました。(Ie5713
  • FocusRequester.createRefs が安定版になりました。(I4d92cb/261436820
  • 修飾子ノードが scrollIntoView リクエストを直接実行できるように DelegatableNode.scrollIntoView() を導入しました。(I2b3b7b/299939840
  • DelegatableNode.requireView() を導入し、修飾子ノードがコンポジション ローカルを読み取らずに現在の Android View を取得できるようにしました。(I40768
  • コンテキスト フロー行スコープとコンテキスト フロー列スコープ内にコンテキスト レイアウト情報を導入しました。行番号、位置、指定された位置に留まるための最大幅と高さの制約が含まれます。最大幅または最大高さを超えるアイテムは、オーバーフロー設定に基づいて次の行に流れ込むか、省略される場合があります。(Id13f8b/292114798

バグの修正

  • 特定の状況で TextFieldenabled 属性または 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
  • BasicTextField2CodepointTransformation パラメータを受け入れなくなりました。BasicSecureTextField または OutputTransformation を使用します。(Id34ff
  • 2 つの AnnotatedStrings のアノテーションのみを比較するメソッドを追加しました。(I32659
  • MaxLinesOverflowContextualFlowRow と拡張 FlowRow/Column を導入しました。試験運用版の FlowRowFlowColumn が強化され、maxLines とオーバーフローのサポートが追加されました。また、ContextualFlowRowContextualFlowColumn も新たに導入されました。この更新は、パフォーマンスに最適なコンポーネントを提供するように設計されています。ContextualFlow* は、小さな maxLines 構成と動的 +N 表示ボタンを使用して多数のアイテムを表示する場合に最適です。FlowRowFlowColumn は、100 個未満のアイテムを表示する場合に最適です。重要: FlowRow または FlowColumn の既存の動作(すべてのアイテムが、クロス軸の最大値に収まるかどうかに関係なく合成される)を維持するには、初期化時に overflowFlowRowOverflow.Visible または FlowColumnOverflow.Visible に設定します。ContextualFlowRowSampleFlowRowSample で、これらの新機能の使用例を確認してください。(Ib9135b/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 の変更

  • HorizontalPagerVerticalPagerPagerState が安定版に昇格しました。(I67660b/316966909
  • アプリ全体の Text 内のリンクのスタイルを変更できる LocalTextLinkStyle コンポジション ローカルを追加しました。アプリで独自のテーマを使用している場合は、テーマ設定に応じてこのコンポジション ローカルを設定する必要があります。マテリアル テーマを使用する場合、リンクの色はデフォルトでマテリアルのプライマリ カラーに設定されます。(I7eb10
  • Jetpack Compose でリッチ コンテンツを受信する方法として、receiveContent 修飾子を導入しました。
  • receiveContentBasicTextField2 と統合され、ソフトウェア キーボードまたはクリップボードの貼り付けアクションから提供されるリッチ コンテンツを受け入れます。(I81b72
  • この変更では、他のユースケースを可能にし、柔軟性を高めるために、ページャーで SnapFlingBehaviorTargetedFlingBehavior に置き換えます。(I762ea
  • この変更により、Snapping API が安定版になりました。また、一部のテストコードをクリーンアップし、スナップ機能にサンプルを追加しました。(Id8da9
  • TargetedFlingBehavior を導入します。これは、進行中のアニメーションの状態とそのターゲット スクロール オフセットに関する情報を伝播できる FlingBehavior です。(I6a207

バグの修正

  • BasicTextField2 で、カーソルがスクロールしてビューの外に移動した場合や、入力によってビューの外に移動する場合でも、入力中にカーソルがビュー内に保持されるようになりました。(Ieb856b/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 で、指定された IndicationIndicationNodeFactory の場合、Indication は必要に応じてのみ遅延作成されるため、パフォーマンスが向上します。ホイスティングせずに MutableInteractionSource を使用する場合は、null を渡すことをおすすめします。

API の変更

  • AnchoredDraggableDecayAnimation を導入しました。この変更により、AnchoredDraggabledecayAnimationSpec パラメータが追加され、いずれかのアンカーに落ち着くときに減衰アニメーションを使用できるようになりました。また、各仕様のユースケースを理解しやすくするため、既存の animationSpec の名前を snapAnimationSpec に変更しました。
  • BasicTextField2 は試験運用版で使用できます。BasicTextField とほぼ同等の機能を備え、本番環境で使用できる動作になっている必要があります。ただし、現時点では API は試験運用版のままです。安定化する前に、名前が BasicTextField に変更され、同じパッケージに移動されます。
  • BasicTextField2OutputTransformation API の最初のドラフトを導入しました。この API は、古い BasicTextFieldVisualTransformation のユースケースのほとんどに代わるものです。ただし、まだ完成しておらず、一部の機能が正しく動作しない場合があります。ユースケースでの API の使い勝手について、フィードバックをお寄せいただければ幸いです。(aosp/2708848
  • テキストにリンクやクリック可能な要素を追加できる LinkAnnotation を導入しました。リンク機能はまだ完成しておらず、今後も API の変更が予定されています。
  • Jetpack Compose でリッチ コンテンツを受信する方法として、receiveContent 修飾子を導入しました。
  • receiveContentBasicTextField2 と統合されており、ソフトウェア キーボードから提供されるリッチ コンテンツや、クリップボードからの貼り付けを受け入れます。
  • KeyboardOptions.shouldShowKeyboardOnFocus を使用すると、フォーカス時にソフトウェア キーボードをリクエストする BasicTextField のデフォルトの動作を無効にできます。
  • TextInputServiceLocalTextInputService のサポートは終了しました。代わりに、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 が含まれています。

バグの修正

  • 特定の状況で TextFieldenabled 属性または readOnly 属性を切り替えるとクラッシュが発生するバグを修正しました。(Iae17b

バージョン 1.6.5

2024 年 4 月 3 日

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

バグの修正

  • 行/列で再現しにくいバグにデバッグログを追加しました。(b/300280216b/297974033

バージョン 1.6.4

2024 年 3 月 20 日

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

バグの修正

  • 長押ししてからドラッグする選択ジェスチャーで、ドラッグの最初のフレームでテキストのレイアウト境界外に移動しても、クラッシュしなくなりました。(Icdf90b/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 が過剰にキャッシュに保存される問題を修正しました。(3cd398b/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 からの移行方法については、移行ガイドをご覧ください。
  • アプリとコンポーネント間でのドラッグ&ドロップ機能が追加されました。DragAndDropTargetModifier.dragAndDropSource などの API を参照して、使用を開始する
  • Modifier.draggable2D は、2D ドラッグを簡単にサポートできる新しい修飾子です。サンプルをご覧ください。
  • コンポーズでサーフェスドリブン コンポーネントを簡単に追加できるように、AndroidExternalSurfaceAndroidEmbeddedExternalSurface を追加しました
  • PagersnapFlingBehaviour のさまざまな 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 については、こちらをご覧ください

バグの修正

  • 無限の制約で測定された非常に大きなテキストに影響するクラッシュを修正しました。(I1a7dfb/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 ModifieracceptsDragAndDropTransfer が追加されました。このラムダは、ドラッグ&ドロップ セッションに関心がある場合に、有効な DragAndDropTarget を返します。ドラッグ イベントを処理する他のラムダは、これに置き換えられています。

    ドラッグ&ドロップ セッションから受け取る DragAndDropTarget ファクトリ関数が追加されました。(Iebf3a

  • AnchoredDraggablestartDragImmediately を公開すると、使用時にドラッグ ジェスチャーを検出するためのコントロールが提供されます。ウィジェットがターゲット アンカーにアニメーション化するときに設定すると便利です。サンプルをご覧ください。(Ie6d13b/285139987

  • Foundation Tooltip API が @ExperimentalFoundationApi になりました。(I30b0b

  • DragAndDropInfo を削除しました。DragAndDropModifierNode.drag は、transferData、装飾サイズ、ドラッグ装飾の DrawScope ラムダのパラメータを受け取るようになりました

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

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

    DragAndDropEventType を削除しました。(I645b1

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

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

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

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

  • Modifier.magnifierclippingEnabled パラメータの名前が clip に変更されました。

  • Modifier.magnifiermagnifierCenter パラメータは、同じデフォルトの動作を維持しながら null 可能になりました。(I6aa66

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

バグの修正

  • PageSize.Fixed の equals とハッシュコードを実装します。(Ie3edeb/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 ドラッグを簡単にサポートできる新しい修飾子です。サンプルをご覧ください(Id95f5b/214412658

API の変更

  • Modifier.dragAndDrawSourceonDrawDragShadow ラムダの名前が drawDragDecoration に変更され、DragAndDropInfo のサイズ パラメータの名前が dragDecorationSize に変更されました。(Id0e30b/303904810
  • BasicTextField2decorationBox パラメータの名前を decorator に変更しました。その型も、同等の fun インターフェース TextFieldDecorator に変更されています。(I23c1c

バグの修正

  • onValueChange の要件に関する BasicTextField のドキュメントを改善しました。(I90fc9b/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 修飾子を追加しました。(Ib7828b/286038936
  • SnapPositionInLayout のドキュメントと位置情報の取得方法を更新しました。SnapPositionInLayout の位置メソッドにコンテンツのパッディングを導入しました。(Id7938b/300116110
  • TextFieldStateUndoState を追加し、ユーザーが行った変更を元に戻す/やり直す機能を追加しました。(Icc024

バグの修正

  • 速度の変更後に basicMarquee がアニメーション化されない問題を修正しました。(Id2e77b/297974036

バージョン 1.6.0-alpha06

2023 年 9 月 20 日

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

新機能

  • SurfaceViewTextureView: GraphicsSurface()EmbeddedGraphicsSurface() の新しいコンポーザブル ラッパー。これは試験運用版の API であり、変更や修正を受ける可能性があります。(I9ddb2
  • Modifier.magnifier() が安定版 API になりました。これには、MagnifierStyle を削除し、修飾子自体にインライン パラメータを追加することが含まれます。(I83becb/298381260b/262367109b/261438887

API の変更

  • ScrollScopeupdateCurrentPageupdateTargetPage を導入しました。これらは、PagerState.scroll でアニメーション スクロールをカスタマイズするために必要な最後の要素です。(I9cad5b/267744105b/243786897
  • SnapFlingBehavior から密度を削除しました。SnapLayoutInfoProvider のすべての実装にはすでに密度にアクセスする方法が用意されているため、レシーバ スコープを削除できます。これにより、SnapFlingBehaviorSnapLayoutInfoProviders の両方の実装が複雑さを軽減できます。(I153c3
  • 安定しているものとしてマークされた修飾子がさらに増えました。(I56af1b/298046462
  • SnapStepSizeSnapLayoutInfoProvider から削除しました。計算は、アプローチまたはスナップ オフセットで提供されるレイアウト情報を使用して行います。(If320c

動作の変更

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

バグの修正

  • ツールチップで rememberSaveable の使用を削除しました。(Icc131b/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 以降でフローティング ウィンドウを避けることを優先するコンポーザブルとしてマークします。(Ib51d5b/297260115
  • ScrollViewRecyclerView などの View コンポーネントのフリング速度は ViewConfiguration.ScaledMaximumFlingVelocity に制限されます。Compose に独自のバージョンの maximumFlingVelocity が含まれるようになり、Draggable に適用されるようになりました。(Ibf974
  • 非推奨の PagerPagerState のオーバーロードを削除しました。(Iea07e
  • BasicTooltipBoxcompose.foundation に追加し、PlainTooltipBoxRichTooltipBox を更新して、新しい PlainTooltipRichTooltip コンポーザブルで TooltipBox を使用できるようにしました。(I79e1d

バージョン 1.6.0-alpha04

2023 年 8 月 23 日

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

API の変更

  • サブコンポジションのライフサイクルと再利用を管理する ReusableComposition インターフェースを追加しました(I812d1b/252846775)。
  • Modifier.focusGroup が安定版 API に昇格しました。(I7ffa3
  • 現在の BasicTextField API と同様に、不変の値とその値を変更するコールバックを受け入れる BasicTextField2 のオーバーロードを追加します。(I3f2b8
  • GridItemSpan::currentLineSpan が安定版 API になりました。(Icc29c
  • contentDescription を受け取る Canvas が安定版 API になりました。(Ib3d29
  • ScrollStateviewportSize を導入しました。これは、測定後に ScrollState を使用するコンポーネントの viewPort サイズを確認する方法です。(I8b85ab/283102682
  • Pager でのプリフェッチがビューの動作と一致しない問題を修正しました。(I93352b/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 に変更されたときにキーボードが表示されない問題も修正しました。(I34a19b/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 を導入しました。(Iad003b/283098900
  • コンポーザブルに許可される入力を指定する追加のアノテーション(I51109
  • テストでフォーカスをリクエストするより便利で見つけやすい方法として、SemanticsNodeInteraction.requestFocus を追加しました。(Ie8722
  • PlatformTextInput* API を完全に再設計しました。(I6c93ab/274661182b/267235947b/277380808
  • SoftwareKeyboardControllerLocalSoftwareKeyboardController は試験運用版ではなくなりました。LocalSoftwareKeyboardController も適切な CompositionLocal になりました。(I4c364
  • Modifier.transformablecanPan パラメータにパンのデルタが提供されるようになりました。これにより、パンの方向を決定してパンを許可または禁止できます。(I692aab/266829800
  • 修飾子 consumeWindowInsets を更新して、スーパークラス AbstractComposeView を拡張しました。(Iacd74b/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 を導入しました。BringIntoViewCalculatorBringIntoViewScroller に更新しました。(Idb741
  • ビットマップ アセットの読み込み時にスローされたスローアブルをラップし、読み込みに失敗したアセットパスの説明を追加するために、ResourceResolutionException タイプを追加しました。(I19f44b/230166331b/278424788
  • テキスト翻訳をサポートするセマンティクス プロパティとアクションを追加しました。(I4a6bc
  • Scrollable などのコンポーネントが bringIntoView リクエストに応答する方法をカスタマイズするために使用できる BringIntoViewCalculator API を導入しました。scrollable のオーバーロードを変更し、必要に応じて BringIntoViewCalculator のインスタンスを受け入れるようにしました。(Iaf5af

バグの修正

  • 変更可能な状態 / Animatable の作成に関する lint チェックと同様に、コンポジションで MutableInteractionSource を作成して記憶していない場合に警告する lint チェックを追加しました。(I5daae
  • マウスによる選択のサポートを追加しました。タップベースの選択では、単語単位で選択範囲が拡張され、文字単位で選択範囲が縮小されます。(Ic0c6cb/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 に変更されたときにキーボードが表示されない問題も修正しました。(I34a19b/246909589

バージョン 1.5.0

2023 年 8 月 9 日

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

1.4.0 以降の重要な変更

  • Modifier.clickableModifier.draggableModifier.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-alpha04androidx.compose.foundation:foundation-layout:1.5.0-alpha04 がリリースされました。バージョン 1.5.0-alpha04 に含まれる commit については、こちらをご覧ください

API の変更

  • 完全なパラメータリストを含む最適化された TextStyle.merge(...) を追加しました。(Iad234b/246961787
  • LazyGridState で使用できる SnapLayoutInfoProvider を導入しました。(I92134b/269237141b/260914964
  • 遅延スクロールのグリッドアイテム スコープに試験運用版の Modifier.animateItemPlacement() が追加されました。アイテムに適用して、自動化された位置変更/並べ替えアニメーションを実現できます。(I4b62db/257034719
  • GridCells.FixedSize を安定版に昇格しました。FixedSize は、各セルが交差軸で正確なサイズを取り、残りのスペースが交差軸の配置によって分散される LazyGrid を定義します。(I8542f
  • Pager の受信スコープ PagerScope と、特定のページ オフセットを計算するユーティリティ関数を導入しました。(If2577
  • スナップ フリング動作を作成するときに snapPositionalThreshold を導入します。このパラメータを使用して、Pager での短いスナップへの位置しきい値を指定します。(If8f7f
  • SnapLayoutInfoProvider.calculateSnappingOffsetBoundscalculateSnappingOffset に変更されました。この新しい方法では、スナップする次のオフセットをリクエストするだけです。境界の計算は実装レベルで行う必要があります。これは、スナップ方法によって異なる可能性があるためです。(I923a4
  • LazyStaggeredGrid API が安定版に昇格しました。(I633a5
  • Horizontal/VerticalPager から pageCount を削除しました。これは状態の作成時に指定する必要があります。pageCount を受け入れるように PagerStaterememberPagerState を更新しました。(Ieb52db/266965072
  • Horizontal/VerticalPager から pageCount を削除しました。これは状態の作成時に指定する必要があります。pageCount を受け入れるように PagerStaterememberPagerState を更新しました。(Ifa3cbb/266965072
  • Pager の SnapFlingBehaviorshortSnapVelocityThreshold を導入します。(I7379eb/275579012
  • FlowRowScopeFlowColumnScope を追加します。(I54fe2

バグの修正

  • 制約に minWidthminHeight がある場合に Text のセマンティクスを取得する呼び出しがクラッシュしなくなりました。(Ibd072
  • Dialog コンポーザブルによって作成されていないダイアログ内のテキスト フィールドにキーボードが表示されない回帰を修正しました。(I82551b/262140644

バージョン 1.5.0-alpha03

2023 年 4 月 19 日

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

このリリースでは、Compose の新しいテキスト レンダリング スタックを有効にします。新しいスタックはパフォーマンスが最適化されているため、目に見える変化はありません。

レンダリングされたテキストに変更が見られる場合、NewTextRendering1_5 = false を設定して動作の違いを確認することでデバッグできます。これを設定すると、強制的に再コンポーズされます。動作の違いはバグとして報告してください。

デバッグフラグは 1.5 beta01 リリース前に削除されます。(Iada23b/246960758

API の変更

  • FlowColumn/FlowRow をインラインにしました。(Idab37

バージョン 1.5.0-alpha02

2023 年 4 月 5 日

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

API の変更

  • LazyGrid で固定サイズのセルと、セルをクロス軸配置で配置する機能のサポートを追加しました。(I83ed9b/235121277b/267942510
  • LazyStaggeredGrid で固定サイズのレーンのサポートを追加し、クロス軸配置で並べ替えられるようにしました。(I7d519
  • AnnotatedStringUrlAnnotationTalkBack などのユーザー補助サービスで開くことができるようになりました。(If4d82b/253292081
  • テキスト フィールドの InsertTextAtCursor セマンティクス アクションを追加しました。(I11ed5
  • テキスト関連のテスト アクション(performTextInput など)は、フィールドをクリックするのではなく、セマンティクス アクションを使用してフォーカスを直接リクエストするようになりました。(I6ed05
  • FlowRowverticalArrangementFlowColumnhorizontalArrangement を使用して、軸をまたぐ間隔や配置のサポートを追加しました。また、FlowRow/FlowColumn の最上位の verticalAlignmenthorizontalAlignment も削除します。デベロッパーは代わりに Modifier.align を使用できます。これにより、verticalAlignmentverticalArrangement の命名規則の混同を軽減できます。(I87b60b/268365538

バージョン 1.5.0-alpha01

2023 年 3 月 22 日

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

API の変更

  • テキストと BasicText がリファクタリングされ、新しい修飾子システムを使用するようになりました。これにより、多くの場合、パフォーマンスが大幅に向上します。変更は表示されません。(If1d17b/246961435
  • テキスト エディタ ノードで IME アクションを呼び出すための PerformImeAction セマンティクス アクションを追加しました。(Ic606fb/269633506

バグの修正

  • Modifier.hoverable の内部を更新しました。hoverable 修飾子は、有効になっている場合にのみインスペクタに表示されます。(I82103

バージョン 1.4

バージョン 1.4.3

2023 年 5 月 3 日

androidx.compose.foundation:foundation:1.4.3androidx.compose.foundation:foundation-layout:1.4.3 がリリースされました。変更はありません(バージョンのみが引き上げられています)。

バージョン 1.4.2

2023 年 4 月 19 日

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

バージョン 1.4.1

2023 年 4 月 5 日

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

バージョン 1.4.0

2023 年 3 月 22 日

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

1.3.0 以降の重要な変更

  • 絵文字互換の統合が TextTextField に加えて下位の Paragraph にも追加されました。絵文字互換の統合は emojicompat の設定時にデフォルトで有効になります。
  • PlatformParagraphStyle を使用する特定の Text で EmojiCompat を設定できるようになりました。
  • LazyStaggeredGrid に全行スパンへの対応を追加しました(I28252)
  • 試験運用版の onHoverClickableText に追加しました (I6938f)
  • CoroutineContext パラメータを受け入れる runComposeUiTest 関数と create*ComposeRule 関数に新しい試験運用版のオーバーロードを導入しました。コンテキストは、テスト コンポジションと、そのコンポジション内のすべての LaunchedEffectrememberCoroutineScope() の呼び出しで使用されます(I10614b/265177763
  • FlowRowFlowColumn@ExperimentalFoundationApi として利用できるようになりました。これにより、主軸に十分なスペースがない場合に改行を入れる、より柔軟な行と列に基づくコンポーネントのレイアウトが可能になります。(I3a7b2
  • Modifier.basicMarquee() が、スクロールするマーキー効果を使用したコンテンツを表示するために試験的に利用できます。(I2df44b/139321650

バージョン 1.4.0-rc01

2023 年 3 月 8 日

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

API の変更

  • プラットフォーム API と直接やり取りするカスタム テキスト入力の実装を構築するための新しいローレベルの PlatformTextInputAdapter API を導入しました。(I58df4
  • LazyStaggeredGrid にリバース レイアウトのサポートを追加しました。(I3ef4a

バグの修正

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

バージョン 1.4.0-beta02

2023 年 2 月 22 日

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

API の変更

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

バグの修正

  • 選択ハンドルを調整する際に、部分文字を選択できなくなりました。(Idedd1
  • 空の TextField で Ctrl + Backspace キーを押したときにクラッシュする問題を修正しました。(I0427fb/244185537

バージョン 1.4.0-beta01

2023 年 2 月 8 日

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

新機能

  • 1.3 から、絵文字互換の統合が TextTextField に加えて下位の Paragraph にも追加されました。絵文字互換の統合は emojicompat の設定時にデフォルトで有効になります。
  • PlatformParagraphStyle を使用する特定の Text で EmojiCompat を設定できるようになりました。

API の変更

  • コンポジションを終了するが引き続きアクティブである必要があるアイテムを保持するために、すべての LazyLayouts で使用される PinnableContainer API の一般的な実装を追加しました。(If45a4
  • PinnableContainer.PinnedHandle.unpin()release() に変更しました。(I4667a

外部からの協力

  • mainAxisItemSpacing プロパティを LazyListLayoutInfoLazyGridLayoutInfoLazyStaggeredGridItemInfo に追加しました(I52fad

バージョン 1.4.0-alpha05

2023 年 1 月 25 日

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

新機能

  • LazyStaggeredGrid に全行スパンへの対応を追加しました(I28252
  • 試験運用版の onHoverClickableText に追加しました(I6938f
  • CoroutineContext パラメータを受け入れる runComposeUiTest 関数と create*ComposeRule 関数に新しい試験運用版のオーバーロードを導入しました。コンテキストは、テスト コンポジションと、そのコンポジション内のすべての LaunchedEffectrememberCoroutineScope() の呼び出しで使用されます(I10614b/265177763

API の変更

  • OverscrollEffect の前または後の API を、「デコレータ」の applyToScroll 関数と applyToFling 関数に統合しました。新しい API の形でオーバースクロール効果を実装する方法の例については、ドキュメントの更新済みのサンプルをご覧ください(I8a9c4b/255554340
  • インライン関数または非推奨になった非表示関数の型や null 可能性を拡大しました(I24f91
  • TextStyleLineBreak API と Hyphens API が安定版に移行しました(Ic1e1d

バグの修正

  • アニメーションを無効にしても、テキスト フィールドのカーソルが引き続き点滅するようになりました(I95e70b/265177763
  • Modifier.basicMarquee はシステム設定でアニメーションを無効にしても、アニメーション表示されるようになりました(I23389b/262298306b/265177763

外部からの協力

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

バージョン 1.4.0-alpha04

2023 年 1 月 11 日

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

新機能

  • FlowRowFlowColumn@ExperimentalFoundationApi として利用できるようになりました。これにより、主軸に十分なスペースがない場合に改行を入れる、より柔軟な行と列に基づくコンポーネントのレイアウトが可能になります。(I3a7b2
  • Modifier.basicMarquee() が、スクロールするマーキー効果を使用したコンテンツを表示するために試験的に利用できます。(I2df44b/139321650

API の変更

  • FocusRequesterModifier が非推奨になり、FocusRequesterNode に置き換えられました(I7f4d7b/247708726b/255352203b/253043481b/247716483b/254529934b/251840112b/251859987 b/257141589
  • variationSettings を指定された AndroidFont のコンストラクタが安定版 API になり、これを使用して新しい種類のフォント記述子を作成できるようになりました。(I5adccb/261565807
  • コンポジション ローカルを介して遅延リストで伝播される PinnableContainer API を導入し、現在のアイテムを固定できるようになりました。このため、該当アイテムはビュー外にスクロールされても破棄されません。たとえば、Modifier.focusable() では、この方法で現在フォーカスされているアイテムを固定します。(Ib8881b/259274257b/195049010
  • スクロール可能なものが bringIntoViewRequesters とフォーカス可能なものに応答する方法を書き換えて、これらの操作の複雑さをより適切にモデル化して、対応できるエッジケースを増やしました。(I2e5feb/241591211b/192043120b/237190748b/230756508b/239451114
  • 非推奨になった非表示関数の戻り値の型の null 可能性を拡大しました。(Ibf7b0
  • Text を Static(default) または Animated のいずれかに定義するために、試験的な TextMotionTextStyle に追加しました。アニメーションを使って 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-alpha03androidx.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 パラメータを追加しました。(Idb413b/254115946b/222093277b/255802670
  • ページのユーザー補助アクション PageUpPageDownPageLeftPageRight を導入しました。これらは API 29 からのみ利用可能です。(Ida4ab
  • コンポーザブルをページャー形式で表示する HorizontalPagerVerticalPager を導入しました。ページャーを制御し、ページャーの現在の状態に関する情報をクエリする PagerState を導入しました。ページャーのページサイズを制御する PageSize を導入しました。これを使用してページャーなどのカルーセルを作成できます。ページャーがフリングされたときのスナップ動作を制御する PagerSnapDistance を導入しました。(I01120
  • フリングが終わる地点を認識しやすくするため、SnapFlingBehavior.performFling にオーバーロードを導入しました。(I569f6
  • OverscrollEffect#isEnabled を削除しました。このフラグを覚えて設定する必要はありません。オーバースクロール効果を使用しない場合は(たとえば、ScrollableState#canScrollForward/backward の両方が false を返す)、オーバースクロール効果にイベントをディスパッチしないようにするだけです。(I1a4b0b/255554340b/255557085
  • ScrollableState#canScrollForwardScrollableState#canScrollBackward が追加され、いずれかの方向にスクロールするスペースが ScrollableState にあるかどうか(範囲内の最小値または最大値でないか)をクエリできるようになりました。ScrollableState の既存の実装との下位互換性を維持するため、これはデフォルトで true になります。これを使用して、スクロールするスペースがまだあることをユーザーに示すことができます。また、特定の方向にスクロールするスペースがない ScrollableStates に相対値をディスパッチしないようにして、不要な処理を減らすこともできます。(Idf1a0b/255557085
  • 祖先のスクロール情報をクエリするための Modifier API を追加しました。(I2ba9db/203141462
  • ジェスチャーがスクロール イベントになる可能性がある場合にタップ操作を正しく遅延させるために Clickable で使用します。
  • Scrollable ViewGroup 内で使用する場合に Clickables がリップルを正しく遅延しない問題を修正しました。
  • ジェスチャーがスクロール イベントになる可能性がある場合にタップを正しく遅延するように Drawers と Sheets を更新しました。
  • SnapLayoutInfoProvider の他のメソッドと一貫性を持たせるため、snapStepSize の命名を更新しました。(Ife67c
  • EmojiCompatCompose に追加しました(Ibf6f9b/139326806
  • 修飾子 consumedWindowInsets() の名前を consumeWindowInsets() に、withConsumedWindowInsets() の名前を onConsumedWindowInsetsChanged() に変更し、公開しました。(Ie44e1

バグの修正

  • Modifier.animateItemPlacement() と Lazy グリッドでのクラッシュを修正しました。これは、新しいアイテムの数が前のアイテムの数より少ない状況で発生していました。(I0bcacb/253195989

バージョン 1.4.0-alpha02

2022 年 11 月 9 日

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

API の変更

  • 柔軟性を高めるため、awaitFirstDownwaitForUpOrCancellationPointerEventPass を受け取るようになりました。(I7579ab/212091796
  • beyondBoundCount API を Lazy* API から元に戻しました(I12197
  • ビューポートのアイテムの外にコンポーズして配置するパラメータを Lazy API に導入しました(I69e89b/172029355
  • minLines パラメータを BasicTextBasicTextField に追加しました。これにより、これらのコンポーザブルの最小の高さを行数で設定できるようになりました。(I24294b/122476634

バージョン 1.4.0-alpha01

2022 年 10 月 24 日

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

API の変更

  • ジェスチャー検出器の新しいメソッド awaitEachGesture() が追加されました。これは forEachGesture() と同じように動作しますが、ジェスチャーのループは AwaitPointerEventScope 内で完全に動作するため、反復処理間でイベントが失われることはありません。
  • ジェスチャー間でイベントが失われてしまうため、forEachGesture() が非推奨になり、awaitEachGesture() に置き換えられました。(Iffc3fb/251260206
  • アニメーションの進行状況を判断し、アニメーション完了後の IME の位置を把握できるように、WindowInsets.imeAnimationSource と WindowInsets.imeAnimationTarget を追加しました。(I356f1b/217770337

バージョン 1.3

バージョン 1.3.1

2022 年 11 月 9 日

androidx.compose.foundation:foundation:1.3.1androidx.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.0androidx.compose.foundation:foundation-layout:1.3.0 がリリースされました。バージョン 1.3.0 に含まれる commit については、こちらをご覧ください

1.2.0 以降の重要な変更

  • LazyVerticalStaggeredGridLazyHorizontalStaggeredGrid の試験運用版が導入されました。
  • SnapFlingBehaviorrememberSnapFlingBehavior、および対応する他の API を試験運用版として追加しました。
  • リモコンのキーボードまたは D-pad をクリックすると、Modifier.clickableModifier.toggleableModifier.selectable の波紋が表示されるようになりました。

バージョン 1.3.0-rc01

2022 年 10 月 5 日

androidx.compose.foundation:foundation:1.3.0-rc01androidx.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-beta03androidx.compose.foundation:foundation-layout:1.3.0-beta03 がリリースされました。バージョン 1.3.0-beta03 に含まれる commit については、こちらをご覧ください

API の変更

  • Text の改行をカスタマイズするオプションを追加しました。(I86907
  • BringIntoViewResponder が、リクエストの処理中に最新の境界を取得できるようになりました。(If86a5b/241591211
  • 試験運用版の Staggered Grid でアイテム間のスペースがサポートされるようになりました。(I10b82
  • 試験運用版の Staggered Grid にコンテンツのパディングが導入されました。(I342ea
  • 最小幅の制約をサポートするよう、TextMeasurer.measure メソッドの size:IntSize 引数を constraints: Constraints に変更しました。(I37530b/242707525
  • Modifier.withConsumedWindowInsets() が追加され、WindowInsets を消費して windowInsetsPadding の外部で使用できるようになりました。
  • MutableWindowInsets が追加され、再コンポーズなしで WindowInsets を簡単に変更できるようになりました。(I7fd28b/237019262b/243119659

バージョン 1.3.0-beta02

2022 年 9 月 7 日

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

API の変更

  • 試験運用版 StaggeredGrid の初期バージョン(Ia48be
  • FocusDirection.InFocusDirection.Out の名前を FocusDirection.EnterFocusDirection.Exit に変更しました(Ia4262b/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-beta01androidx.compose.foundation:foundation-layout:1.3.0-beta01 がリリースされました。バージョン 1.3.0-beta01 に含まれる commit については、こちらをご覧ください

API の変更

  • OverscrollEffect から pointerPosition を削除しました。ポインタ位置を重視するエフェクトでは effectModifierModifier.pointerInput { } を使用して、現在のポインタ位置を代わりに取得できます。(I9f606b/241239306
  • より複雑なジェスチャー検出の構成要素として AwaitPointerEventScope#awaitLongPressOrCancellation を公開しました。(I04374b/181577176
  • Lazy リストのスナップを可能にする lazyListSnapLayoutInfoProvider を導入しました。(I3ecdf
  • リストのスナップを可能にするフリング動作である SnapFlingBehavior が導入されました。スナップ レイアウトに関する情報を含む SnapLayoutInfoProvider のインスタンスを提供します。(Ie754c

バージョン 1.3.0-alpha03

2022 年 8 月 10 日

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

API の変更

  • リソース フォントが、フォント バリエーションの設定をサポートするようになりました(API 26 以上)。(I900ddb/143703328
  • DeviceFontFamilyNameFont で可変フォントがサポートされるようになりました。(Ic1279b/143703328
  • PlatformTextStyle および LineHeightStyle から試験運用版アノテーションを削除しました。(I64bef
  • VisualTransformation によって提供される OffsetMapping が無効なインデックスを返す場合に、テキスト フィールドで詳細な例外がスローされるようになりました。(Ie73f9b/229378536
  • Lazy レイアウト間でアイテム プロバイダ ロジックを共有するための試験運用版 API を導入しました。(Ic891c
  • ScrollableDefaults.reverseDirection() は試験運用版ではなくなりました。(Iba646
  • SemanticsModifier.id のサポートを終了し、セマンティクス ID を LayoutInfo.semanticsId に移動しました。(Iac808b/203559524
  • checkScrollableContainerConstraints() は試験運用版ではなくなりました。(I2c290
  • Modifier.clipScrollableContainer() は試験運用版ではなくなりました。(Ia2b44
  • TextInputService.show|hideSoftwareKeyboard のサポートが終了しました。代わりに、アプリコードでは SoftwareKeyboardController、IME 管理コードでは TextInputSession を使用してください。(I14e4cb/183448615

バージョン 1.3.0-alpha02

2022 年 7 月 27 日

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

API の変更

  • CanvasdrawBehind のような DrawScope で動作するコンポーザブルや修飾子に、マルチスタイルのテキストを描画できるように、DrawScopedrawText 拡張関数を追加しました。(I16a62b/190787898

バグの修正

  • フォーカスされているテキスト欄が無効になると、ソフト キーボードも非表示とするようにしました。(I6e3e4b/237308379
  • 速度トラッカーに InputEventChange イベントを追加する際に位置ではなく差分を考慮することで、ターゲット要素が移動した場合も含めて、すべてのケースで速度が正確に計算されるようにしました。(Icea9db/216582726b/223440806b/227709803
  • スクロール可能なオブジェクトに、フォーカスされた子がある場合、サイズが縮小されても、アニメーションでサイズが変更されても、正しくスクロールして、フォーカスされた子を常に表示するようにしました。(I80867b/230756508b/220119990
  • 選択が有効なときに、TextField がクリアされて再入力されるクラッシュを修正しました。(I1235bb/208655565b/214253689

バージョン 1.3.0-alpha01

2022 年 6 月 29 日

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

API の変更

  • AnnotatedStringTalkBack のリンクをサポートするために、UrlAnnotation のアノテーション タイプと関連メソッドを導入しました。(I1c754b/231495122

バグの修正

  • カーソル タイマーを再起動せずに BasicTextField cursorBrush をアニメーション化できるようになりました。(I812e6b/236383522

バージョン 1.2

バージョン 1.2.1

2022 年 8 月 10 日

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

バージョン 1.2.0

2022 年 7 月 27 日

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

1.1.0 以降の重要な変更

  • LazyVerticalGridLazyHorizontalGrid が安定版になりました。
  • 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-rc03androidx.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-rc02androidx.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-rc01androidx.compose.foundation:foundation-layout:1.2.0-rc01 がリリースされました。バージョン 1.2.0-rc01 に含まれる commit については、こちらをご覧ください

API の変更

  • カスタムのオーバースクロール効果とそれを受け入れる Modifier.scrollable のオーバーロードを可能にするために、試験運用版の OverscrollEffect が導入されました。
  • 試験運用版の LocalOverScrollConfigurationfoundation.gesture から foundation パッケージに移動し、名前を LocalOverscrollConfiguration に変更しました。(If19fbb/204650733
  • compose ライブラリのインターフェースが jdk8 デフォルト インターフェース メソッドを使ってビルドされるようになりました。(I5bcf1
  • スクロール可能なコンテナがネストされていないことを確認できるように、試験運用版の API checkScrollableContainerConstraints() が導入されました。スクロール可能な遅延レイアウトを LazyLayout で独自に作成する場合に使用できます。(Id6fabb/233352497
  • サポートが終了した LazyVerticalGridandroidx.compose.foundation.lazy パッケージから削除しました。新しい安定版 API は androidx.compose.foundation.lazy.grid にあります。(I73c76b/225192009

バージョン 1.2.0-beta03

2022 年 6 月 1 日

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

API の変更

  • 新しい試験運用版の IntervalListMutableIntervalList を追加しました。これにより、複数の間隔を通じて、いくつかの値の一覧を表示できます。LazyColumn で使用されるものと同様の DSL を独自に定義して、複数のアイテム呼び出しを通じてリスト アイテムを定義できるようにしたい場合に便利です。(I2d05eb/228580728

バグの修正

  • WindowInsets.ime のドキュメントを明確化し、ime インセットについて、レポート作成は API 23 までさかのぼれるが、アニメーション表示は 30 以降でしかできないことを明記しました。Ia7fc0b/230756508
  • カーソルがテキスト フィールドの末尾にあるときに Delete キーを押してもクラッシュしなくなりました。
  • DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand において、コンストラクタ引数が負数でないことが必須になりました。(Ica8e6b/199919707

バージョン 1.2.0-beta02

2022 年 5 月 18 日

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

  • 以前に Text または TextField のレイアウト サイズを変更していないダウンロード可能なフォント解像度が再描画されないため、フォントの表示が古くなります。このバグ修正により、テキスト レイアウトは常に再描画をトリガーするようになります(b/229727404)。(I1d49eb/229727404

バージョン 1.2.0-beta01

2022 年 5 月 11 日

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

新機能

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

API の変更

  • 試験運用版の BeyondBoundsInterval を追加しました。これは、LazyList のカスタム実装が可視境界を超えてアイテムをレイアウトする際に使用できます。(Ifabfbb/184670295
  • LineHeightBehavior の名前が LineHeightStyle に変更されました。
  • LineVerticalAlignment の名前が LineHeightStyle.Alignment に変更されました。
  • LineHeightTrim の名前が LineHeightStyle.Trim に変更されました。
  • LineHeightStyle のデフォルトのコンストラクタ値が削除されました。(I582bfb/181155707
  • LazyLayoutItemProvider インターフェースの省略可能なメンバーのデフォルト値を追加しました。(Iba8a0
  • LazyLayoutItemProvider API に、インデックスでコンポーズ可能なラムダを返すファクトリの代わりとして、インデックスを受け入れるシンプルなコンポーズ可能な関数 Item を追加しました。(Id2196
  • LazyLayoutItemsProvider の名前が LazyLayoutItemProvider に変更されました。(I0638c
  • LazyLayoutItemsProvider.itemsCount の名前が itemCount に変更されました。(Id409c
  • グラデーション カラーを使用してテキストを描画できるように、TextStyleSpanStyle にブラシを追加しました。(I53869b/187839528
  • LineHeightBehavior の属性 trimFirstLineToptrimLastLineBottom を単一の列挙型 LineHeightTrim に変更しました。LineHeightTrim には、2 つのブール値(FirstLineTopLastLineBottom)、Both、None によって定義される 4 つの状態の値があります。(Ifc6a5b/181155707
  • TextStyleParagraphStyle. LineHeightBehaviorLineHeightBehavior を追加しました。これは、行の高さを最初の行の最上部と最後の行の最下部に適用するかどうかを制御します。また、TextStyle(lineHeight) によって指定されるスペース内の行の配置も定義します。

    たとえば、CSS で LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) により定義される動作と同様の動作を実現できます。

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

  • デベロッパーがスクロールによって IME を制御できるように、試験運用版の imeNestedScroll() 修飾子を追加しました。(I60759

バグの修正

  • フォーカスされているときにコンポジションから削除された場合、テキスト フィールドがキーボードを隠さない回帰を修正しました。(I7a410b/230536793b/225541817
  • 高さに制限があり、テキスト行の全体が収まらない場合に、省略記号を使用できるようになりました。(Ie528cb/168720622
  • BringIntoViewRequester.bringIntoView は、リクエストが完了するか、より新しい重複しないリクエストによって中断されるまで、常に一時停止するようになりました。重複するリクエストはキューに入れられます。(I43e7fb/216790855
  • 完全に重なっている長方形に対する BringIntoViewRequester.bringIntoView の同時実行呼び出しで、大きい方の長方形のリクエストのみが考慮されるようになりました。(I34be7b/216790855b/184760918
  • デフォルトで includeFontPadding がオンになります。TextStyle.platformTextStyle 属性を使用すると includeFontPadding をオフにできます。近い将来、デフォルトの動作が変更されますが、それまではこの方法で行の高さを改善し(aosp/2058653)、TextField のクリッピングの問題を解決できます。(I01423b/171394808
  • Modifier.bringIntoViewRequesteronGloballyPositioned を使用しなくなりました。(I630f5

外部からの協力

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

バージョン 1.2.0-alpha08

2022 年 4 月 20 日

androidx.compose.foundation:foundation:1.2.0-alpha08androidx.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 のみがサポートされていたため、動作が変更されます。(I380feb/156048036b/226441992
  • Paragraph と MultiParagraph が Constraints パラメータを受け入れるようになりました。現時点では Constraints.maxHeight を渡しても機能しませんが、今後、高さに基づいて省略するなど、いくつかの計算を行うことが可能になる予定です。(I6afeeb/168720622
  • SubcomposeSlotReusePolicy.getSlotsToRetain() は、新しいアイテムの追加を許可しない MutableSet のようなカスタムクラスを受け入れるようになりました。(Icd314
  • PointerInputChange での部分的な消費(down または position)が非推奨になりました。consume() を使用すると、変更を完全に使用できます。isConsumed を使用すると、以前にその変更が他のユーザーに使われたかどうかを確認できます。
  • PointerInputChange::copy() が常にシャローコピーを作成するようになりました。つまり、PointerInputChange のコピーのいずれか 1 つが使用されると、以降はそれらのコピーが使用されます。バインドされていない PointerInputChange を作成するには、代わりにコンストラクタを使用します。(Ie6be4b/225669674
  • 新しい試験運用版の LazyLayout API が導入されました。これにより、LazyVerticalGridLazyColumn のような独自のコンポーネントを構築できます。この API は初期段階にあるため、今後のリリースで変更される可能性があります。(Iba2bcb/166591700
  • AndroidFont は、typefaceLoader をコンストラクタ パラメータとして受け取るようになりました。(I2c971
  • WindowInsets コンパニオンは、デバイスで利用できるが現在アクティブではない場合、可視性(ウィンドウと交差しているかどうかに関係なく、画面上にあるかどうか)と可能なサイズを示すようになりました。(I65182b/217770337

バージョン 1.2.0-alpha07

2022 年 4 月 6 日

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

API の変更

  • 現在コンポーズされているアイテムが破棄されるのを Lazy レイアウトの子が阻止できるようにする PinnableParent API を追加しました。(Ibbdd0b/184670295
  • LazyListLayoutInfoLazyGridLayoutInfobeforeContentPadding フィールドと afterContentPadding フィールドを追加しました。(I3b628b/200920410
  • IME に小数点記号を含めるために、Keyboard.Number の代わりとして KeyboardType.Decimal を追加しました。(Iec4c8b/209835363
  • 新しいフォント記述子 Font(DeviceFontFamilyName) を追加し、フォントのフォールバック チェーン中にシステムがインストールしたフォントを必要に応じて検索できるようにしました。(I30468b/219754572
  • PointerEventType.ScrollPointerEvent.scrollDelta が安定版 API になりました。(I574c5b/225669674
  • TextStyle/ParagraphStyle. includeFontPaddingincludeFontPadding のために一時的な互換性設定が追加され、TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) を介して変更できるようになりました。これは移行を可能にするための一時的な設定オプションで、後で削除されます。(If47beb/171394808
  • システム全体における太字テキストのユーザー補助設定を統合するように FontFamily.Resolver を更新しました。(I6c1e7
  • ComposeViewconsumeWindowInsets 拡張プロパティを使用すると、デベロッパーは Android WindowInset の消費を無効にできます。これにより、階層内の個々の ComposeViews が互いに干渉することなく、それぞれ WindowInsets を適用できます。(I0ef08b/220943142

バージョン 1.2.0-alpha06

2022 年 3 月 23 日

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

API の変更

  • フォーカス可能なターゲットでフォーカスをリクエストするための RequestFocus セマンティクス アクションを追加しました。(I17b71
  • FocusOrderFocusProperties に統合して、focusProperties()focusOrder() のすべての機能が含まれるようにしました。FocusOrderfocusOrder() が非推奨になりました。focusRequester を受け取る focusOrder() は、focusRequester() 修飾子と focusProperties() の組み合わせに置き換える必要があります。これにより、懸念事項である修飾子の区別がより強力になります。(I601b7
  • WindowInsets.asPaddingValues(Density) を追加し、デベロッパーが変換を行う際にコンポジション内である必要をなくしました。(I94c35
  • ベクター型ドローアブルの解析を更新して、現在のレイアウト方向が RTL の場合に VectorPainter のコンテンツを切り替える自動ミラーリングをサポートするようにしました。(I79cd9b/185760237

バグの修正

  • スクロール領域のサイズが変更され、フォーカスされているコンポーザブルが変更前は表示されていた場合に、フォーカスされていたコンポーザブルを表示し続けるよう、スクロール修飾子(Modifier.verticalScroll()Modifier.horizontalScroll()Modifier.scrollable())がスクロールするようになりました。
  • TextField が非遅延スクロール可能領域の内側にあり、ソフト入力モードが ADJUST_RESIZE のときに、TextField がフォーカスされてキーボードが表示された場合、TextField が隠れないようキーボードの上に保持されるようになりました。(I4a485b/190539358b/192043120b/216842427

バージョン 1.2.0-alpha05

2022 年 3 月 9 日

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

API の変更

  • LazyVerticalGridLazyHorizontalGrid が安定版になりました。(I307c0
  • LazyGridItemInfo.UnknownLazyGridItemInfo.UnknownRowLazyGridItemInfo.UnknownColumn に分けて置き換えられました。(I56d51
  • LazyVerticalGrid / LazyHorizontalGrid とすべての関連 API を .grid サブパッケージに移動しました。インポートを androidx.compose.foundation.lazy から androidx.compose.foundation.lazy.grid に更新してください。(I2d446b/219942574
  • テキスト: includeFontPadding がデフォルトでオフになりました。includeFontPadding=false の結果として起きるクリッピングの問題は対処され、縦長文字ではクリッピングが起きなくなりました。(I31c84b/171394808
  • Measured インターフェースが parentData プロパティを公開するようになりました。(I3313f
  • 試験運用版の Modifier.onFocusedBoundsChanged が導入され、子の focusable の境界を監視できるようになりました。(I14283b/220030968b/190539358b/192043120b/216842427
  • LazyHorizontalGrid を追加しました。(I61ae7b/191238807
  • 交差軸のサイズを定義する LazyVerticalGrid API を新たに追加しました。(I17723
  • FocusGroup 修飾子を追加しました。(I64bc0b/213508274b/184670295

バグの修正

  • WindowInsets.toString() に正しい値が表示されるようになりました。(I1585d

外部からの協力

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

バージョン 1.2.0-alpha04

2022 年 2 月 23 日

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

API の変更

  • BringIntoViewResponders で、リクエストを親レスポンダに手動で渡す必要がなくなりますが、代わりに親を表示する長方形を直ちに返す必要があります。(I8e66a
  • Text の非同期フォント読み込みをサポートしました(I77057b/214587005
  • LazyVerticalGrid で、スパンが現在の行内に収まらないアイテムの前で line breaking をサポートするようになりました。(I05c40b/207462103
  • excludeFromSystemGestures の名前が systemGesturesExclusion に変更されました。(I19526
  • LazyVerticalGrid が reverseLayout をサポートするようになりました。(I6d7d7b/215572963b/211753558
  • WindowInsets.only() メソッドを追加して、デベロッパーが WindowInsets からのディメンションのみを含めることができるようになりました。(I14c94b/217768486
  • ComposableTargetComposableTargetMarkerComposableOpenTarget を追加しました。使用が想定されていない Applier を対象としてコンポーズ可能な関数が呼び出された場合について、コンパイル時のレポートが可能になります。

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

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

バグの修正

  • LazyGridState.scrollToItem()LazyGridState.animateScrollToItem() に負のスクロール オフセットを渡せるようになりました。(I025c6b/211753558
  • TextField の非同期フォント読み込みをサポートしました。(Icc4bfb/214587005

バージョン 1.2.0-alpha03

2022 年 2 月 9 日

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

API の変更

  • TextInputSessionTextInputServicenotifyFocusedRect メソッドが非推奨となり、呼び出されなくなりました。代わりに BringIntoViewRequester を使用してください。(Ia4302b/192043120b/216842427b/178211874
  • Modifier.animateItemPlacement() を使用して遅延グリッドのアイテムをアニメーション化できるようになりました。(Ib6621b/211753218
  • BringIntoViewRequester が、ホストの Android View にリクエストを伝えるようになりました。(Ia7a51
  • FontFamilyResolverLocalFontFamilyResolver.current から利用できるようになりました
    • Compose の使用以外で新しい FontFamily リゾルバを作成するための createFontFamilyResolver(context)createFontFamilyResolver(context, coroutineScope) を追加しました。
    • Paragraph と MultiParagraph が FontFamily.Resolver を使用するようになりました
    • TextLayoutResult.layoutInput.fontFamilyResolver に、このレイアウトで使用されるリゾルバが含まれるようになりました。TextLayoutResult.layoutInput.resourceLoader は使用されなくなったため、非推奨になりました。(Id5a45b/174162090
  • AndroidFont を追加しました。これは、Android で新しいタイプのフォント リソース記述子を提供するための新しい低レベル API です。たとえば、アプリ固有のバックエンドからフォントを読み込む、必要に応じてデバイスにプリインストールされているフォントを見つける、現在のフォント ファクトリでは提供されないリソースからフォントを読み込むといったことが可能です。
    • Font.ResourceLoaded API が拡張され、フォントの非同期読み込みのオプションがサポートされるようになりました。アプリ デベロッパーがこの API を直接使用することは推奨されません。新しいタイプのフォントを追加するには、AndroidFont をご覧ください。
    • Font.AndroidResourceLoader 拡張関数を使用すると、コンポジションの外部で Font.ResourceLoader を作成できます。
    • リソースベースのフォントに loadingStrategy パラメータを追加しました。これにより、ダウンロード可能なフォントの XML をリソース フォントが参照する場合の非同期読み込みが可能になります。(Ie5aeab/174162090
  • Typeface(FontFamily) コンストラクタが非推奨となりました。これは以前、フォントのプリロードに使用されていましたが、ダウンロード可能なフォントでは最大で 10 秒ほどかかることがあります。ダウンロード可能なフォントに使用する場合、この呼び出しによって 10 秒間のブロックが発生する可能性があります。代わりに、FontFamilyResolver.preload を使用してください
    • fontResource(FontFamily): Typeface のサポートが終了しました。これは以前、フォントのプリロードに使用されていましたが、ダウンロード可能なフォントでは最大で 10 秒ほどかかることがあります。代わりに、FontFamilyResolver.preload を使用してください(If8e7cb/174162090
  • LazyVerticalGrid のアイテムのコンテンツ タイプを指定できるようになりました。LazyGridScope のアイテムの関数が、このパラメータを受け入れるようになりました。このような情報を提供することで、アイテム コンポジションの再利用ロジックが効率化され、類似したタイプのアイテム間でのみコンテンツが再利用されるようになります。(I7b355b/215372836
  • LazyListLayoutInfoLazyGridLayoutInfo に新しいプロパティ viewportSizeorientationreverseLayout が追加されました(Ifc8edb/200920410
  • LazyColumn / LazyRow のアイテムのコンテンツ タイプを指定できるようになりました。LazyListScope のアイテムの関数が、このパラメータを受け入れるようになりました。このような情報を提供することで、アイテム コンポジションの再利用ロジックが効率化され、類似したタイプのアイテム間でのみコンテンツが再利用されるようになります。(I26506
  • maxSlotsToRetainForReuse を受け入れる SubcomposeLayoutState コンストラクタのサポートが終了しました。代わりに、SubcomposeSlotReusePolicy を受け入れる新しいコンストラクタが追加されました。これは、将来の再利用のために保持するスロットをきめ細かく制御できる新しいインターフェースです。(I52c4d
  • WindowInsets の修飾子を、パディングとサイズ調整の両方に追加しました。これにより、一部のコンテンツをインセット領域内に拡張しつつ、主要なコンテンツをインセット領域外に置くことができます。たとえば、windowInsetsPadding を使用すると、完全にまたは部分的に覆われる可能性のある領域を避けるよう、コンテンツ領域にパディングを設定できます。(Id0395b/213942085

バグの修正

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

バージョン 1.2.0-alpha02

2022 年 1 月 26 日

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

API の変更

  • 複雑なロジックのない既存メソッドのオーバーロードであるメソッドに、NonRestartableComposable を追加しました。これにより、呼び出し先の内部関数で繰り返される、すべてのパラメータに対するコンパイラ生成のメモ化チェック(equals)を減らすことができます。(I90490
  • Android の setSystemGestureExclusionRects に簡単にアクセスできるように excludeFromSystemGesture Modifier を追加しました。(I46f07

バグの修正

  • テキスト選択拡大鏡の動作を、プラットフォームの拡大鏡に合わせて改良しました。(Idd918b/206833278
  • LazyColumnLazyRowModifier.verticalScroll など、Modifier.scrollable を使用するコンテナが、マウスホイールによるスクロールをサポートするようになりました。(I2b5e1b/198214718

バージョン 1.2.0-alpha01

2022 年 1 月 12 日

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

API の変更

  • ユーザーがタップ操作またはユーザー補助アクションを介して開始したスクロールを一時的または恒久的に無効にできるようにするため、新しいパラメータ userScrollEnabledLazyColumnLazyRowLazyVerticalGrid に追加されました。状態でのメソッドを介するプログラミングによるスクロールは認められます。(I7eae9b/201150093
  • magnifier 修飾子に onSizeChanged コールバックを追加しました。(I6879f
  • SelectionContainer で選択ハンドルをドラッグするときに magnifier ウィジェットが表示されるようになりました。(I30b38b/139320979

バグの修正

  • ビューの外にスクロールしても非表示にならない TextField カーソル ハンドルを修正しました。(I14552b/208883748

依存関係の更新

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

バージョン 1.1

バージョン 1.1.1

2022 年 2 月 23 日

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

バグの修正

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

バージョン 1.1.0

2022 年 2 月 9 日

androidx.compose.foundation:foundation:1.1.0androidx.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-rc03androidx.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-rc01androidx.compose.foundation:foundation-layout:1.1.0-rc01 がリリースされました。バージョン 1.1.0-rc01 に含まれる commit については、こちらをご覧ください。

バグの修正

  • LazyListState.scrollToItem()LazyListState.animateScrollToItem() に負のスクロール オフセットを渡せるようになりました。(Iceb90b/184252837
  • ユーザー補助のスクロール操作がなくなるバグを修正しました。(I7cbfb

バージョン 1.1.0-beta04

2021 年 12 月 1 日

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

新機能

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

API の変更

  • androidx.core.view の null 値許容をクリーンアップしました。(I7078ab/204917439
  • 試験運用版の API が追加され、PointerInputchange をまとめて使用したり、使用されているかどうかをチェックしたりできるようになりました。(I2e59d
  • テキスト フィールド内のカーソルまたは選択ハンドルをドラッグしたときに、拡大鏡ウィジェットが表示されるようになりました。(I5391eb/203781358

バグの修正

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

バージョン 1.1.0-beta03

2021 年 11 月 17 日

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

API の変更

  • LazyVerticalGrid に水平スパンのサポートを追加しました。(I7e2fab/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 を通じてキーを提供すると、この修飾子によってアイテムの並べ替えアニメーションが有効になります。配置や位置揃えの変更などのイベントによって発生するその他の位置変更はすべて、アイテムの並べ替えとは別にアニメーション化されます。(I59e7bb/150812265

バージョン 1.1.0-beta02

2021 年 11 月 3 日

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

バグの修正

  • リップルなどの表示は、ダウンイベントで常に遅延する代わりに、Modifier.scrollable() コンテナ内にある場合にのみ遅延するようになります。(Ibefe0b/203141462
  • 試験運用版の BringIntoView API を追加しました。この API を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918db/195353459

外部からの協力

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

バージョン 1.1.0-beta01

2021 年 10 月 27 日

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

バグの修正

  • 試験運用版の BringIntoView API を追加しました。この API を使用すると、親にリクエストを送信して、スクロールによってアイテムを表示できるようになります。(Ib918db/195353459

バージョン 1.1.0-alpha06

2021 年 10 月 13 日

androidx.compose.foundation:foundation:1.1.0-alpha06androidx.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-alpha05androidx.compose.foundation:foundation-layout:1.1.0-alpha05 がリリースされました。バージョン 1.1.0-alpha05 に含まれる commit については、こちらをご覧ください

API の変更

バグの修正

  • スクロールに関して、スクロール可能(遅延と非遅延の両方)のユーザー補助サポートを修正しました。(I6cdb0

バージョン 1.1.0-alpha04

2021 年 9 月 15 日

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

API の変更

  • performGestureGestureScope が非推奨になり、それぞれ performTouchInputTouchInjectionScope に置き換えられました。(Ia5f3f, b/190493367
  • タップ ターゲットの最小サイズが含まれる touchBoundsInRootSemanticsNode に追加しました。これにより、デベロッパーはタップ ターゲットがユーザー補助の最低条件を満たすことができます。(I2e14bb/197751214

バグの修正

  • Android 12 デバイスで、ストレッチ オーバースクロールのサポートを追加しました。(Iccf3cb/171682480

バージョン 1.1.0-alpha03

2021 年 9 月 1 日

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

新機能

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

API の変更

  • スクロール向けのグロー効果が追加されました。オーバースクロール視覚効果の構成を可能にする新しい試験運用版 OverScrollConfiguration API が追加されました。オーバースクロール効果をオフにするには、null を指定します。(I0c304b/171682480
  • AwaitPointerEventScope に withTimeout() と withTimeoutOrNull() が追加されました。(I507f0b/179239764b/182397793
  • クリップされた境界を取得するテストメソッドを追加しました。(I6b28e
  • ユーザー補助機能を保証するため、セマンティクスとポインタ入力で使用する最小タップ ターゲット サイズを ViewConfiguration に追加しました。(Ie861c

バージョン 1.1.0-alpha02

2021 年 8 月 18 日

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

API の変更

  • Modifier.sizerequiredSize の DpSize バージョンを追加しました。(I3fc7eb/194219828

バージョン 1.1.0-alpha01

2021 年 8 月 4 日

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

API の変更

  • 送信元と送信先の長方形を使用する DrawScope#drawImage メソッドを更新し、オプションの FilterQuality パラメータを使用します。これは、ピクセルベースのアートに合わせてスケールアップする際にピクセル化されるピクセルアートに対して有用です。オプションの FilterQuality パラメータを使用するように BitmapPainter と Image composable を更新しました。(Ie4fb0b/180311607
  • TextField は、[戻る] ボタンが押されたときに選択をクリアするようになりました。これは Android EditText の動作と一致します。(I3ca16b/174173645
  • カーソル ハンドルを追加しました。(I07a82b/173016579

バグの修正

  • 遅延リストと通常のスクロール コンポーネントに対するセマンティクス アクションによるスクロールがアニメーション化されるようになりました。(Id9066b/190742024

外部からの協力

  • LazyVerticalGrid が水平方向と垂直方向の両方のレイアウト パラメータを受け入れるようになりました。(If9c92

バージョン 1.0

バージョン 1.0.5

2021 年 11 月 3 日

androidx.compose.foundation:foundation:1.0.5androidx.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.4androidx.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.3androidx.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.2androidx.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.1androidx.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.0androidx.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 と AGP 7.1 で修正される予定です。(b/194289155

バージョン 1.0.0-rc02

2021 年 7 月 14 日

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

  • 固定サイズで定義されたパスの問題に対処するために、汎用シェイプの境界レンダリングを更新しました。(aosp/1748871b/191817116

バージョン 1.0.0-rc01

2021 年 7 月 1 日

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

API の変更

  • Canvas がユーザー補助用の contentDescription パラメータをサポートするようになりました。(Ib547c

バグの修正

  • 無効化されたボタン、カード、チェックボックスなど Modifier.clickable(enabled=false) はすべて、親に移動しようとするクリックをブロックするようになります。(Ic2c3bb/183908811

バージョン 1.0.0-beta09

2021 年 6 月 16 日

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

API の変更

  • ManualFrameClock を削除しました。アニメーションを制御する必要がある場合は、代わりに composeTestRule.mainClock を使用してください。(I3c3e8b/189951065
  • 列挙型の Role と LiveRegionMode を、プライベート コンストラクタを含むインライン クラスに変更しました(Id1890
  • KeyboardCapitalization をインライン クラスに変換しました。(Id5a1c
  • TextOverflow をインライン クラスに変更しました。(I433af

バグの修正

  • LazyColumn/Row アイテムに一意のキーを指定すると、キーに基づいてスクロール位置が維持されるようになりました。つまり、現在表示されているアイテムの前でアイテムを追加または削除すると、指定されたキーを持つアイテムが最初に表示されるアイテムとして保持されます。(Id263fb/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> には、このメソッドに「ホット」、「起動」、または「起動後」のフラグを付ける場合にそれぞれ文字 HSP(1 つまたは複数)を入力します。

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

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

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

ルールの機能

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

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

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

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

ルールの仕組み

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

バージョン 1.0.0-beta08

2021 年 6 月 2 日

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

API の変更

  • NestedScrollSource 列挙型がインライン クラスに置き換えられました。(Ie321bb/187055290
  • 列挙型の使用をインライン クラスにリファクタリングして、新しい列挙値の追加時に網羅的な when ステートメントの問題を回避できるようにしました。(I2b5eb
  • clickable と toggleable にタップ タイムアウトを追加して、スクロールやドラッグの際にリップルが表示されないようにしました。(Ia2704b/168524931
  • ContentDescription と Text のセマンティクス プロパティが、単一の値ではなくリストになり、連結ではなくそのまま結合できるようになりました。また、これらの変更を活用できるように改善されたテスト API も提供されています。(Ica6bfb/184825850
  • Modifier.focusModifier() が非推奨となり、Modifier.focusTarget() に置き換えられました。(I6c860
  • KeyboardType 列挙型は、インライン クラスに置き換えられました。(I73045b/187055290
  • FocusState 列挙型が FocusState インターフェースに置き換えられました。(Iccc1ab/187055290
  • ImeAction 列挙型がインライン クラスに置き換えられました。(I18be5b/187055290
  • AnnotatedString.withAnnotation 関数が ExperimentalComposeApi ではなく ExperimentalTextApi になりました。(I0cd0a
    • TextUnitType が指定された TextUnit コンストラクタが、ExperimentalComposeApi ではなく ExperimentalTextApi になりました。
  • PaddingValues が @Immutable ではなく @Stable になりました。(I88c50

バグの修正

  • 空でないテキストの空白の領域を長押しするとクラッシュする問題を修正しました。(I33ab5b/187437299
  • SelectAll の後にツールバーが表示されるようになりました。(I495d9b/185919613
  • スクロール可能なコンテナが交差軸上の子をクリッピングする問題を修正しました。これは Card アイテムを含む LazyRow がある場合に容易に再現できましたが、今後はシャドウがクリップされなくなります。(Icb635b/186318448
  • Modifier.combinedClickable の使用時に、リップルなどのインジケーションを長押しクリックすると停止することがある問題を修正しました。(I2298cb/186223077
  • detectDragGesuresdetectVerticalGesturesdetectHorizontalGestures が位置変更を自動的に使用するようになり、onDrag コールバックで change.consumePositionChange を呼び出す必要がなくなりました(I42fc4b/185096350b/187320697
  • Modifier.onGloballyPositioned() は、すべての修飾子を適用した後のレイアウト座標ではなく、修飾子チェーン内のこの修飾子の座標を報告するように変更されました。これにより、報告される座標が、修飾子の順序の影響を受けるようになりました。(Ieb67db/177926591

バージョン 1.0.0-beta07

2021 年 5 月 18 日

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

API の変更

  • 次に表示されるアイテムをプリフェッチするロジックが LazyColumn/Row に導入されました。(I8a4bcb/184940225
  • クリップ選択ハンドルが追加されました。(Iff80db/183408447

バグの修正

  • LazyColumn/Row は、スクロールされて画面から消えたときでも、前に表示されていたアクティブな(破棄されていない)アイテムを最大 2 つまで維持するようになりました。これにより、スクロールのパフォーマンスを改善する新しいアイテムをコンポーズする必要がある場合に、コンポーネントがアクティブなサブコンポジションを再利用することが可能になります。(Ie5555
  • paintBackground を削除しました。(I38660
  • DrawScope を使用して選択範囲の背景を描画するようにしました。(I73c61b/186674472
  • spacedBy 調整を使用して重み付けされた子をレイアウトする Row/Column に影響する beta06 回帰を修正しました。(Ifaf8cb/187326588

バージョン 1.0.0-beta06

2021 年 5 月 5 日

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

API の変更

  • ナビゲーション ジェスチャーとの競合を解決しました(I1145e
  • コレクションとそのアイテムをユーザー補助サービスに指定できる CollectionInfo と CollectionItemInfo ユーザー補助 API を追加しました(Id54efb/180479017
  • インデックス登録されたアイテムのリストを特定のインデックスを付加されたアイテムにスクロールする SemanticsActions.ScrollToIndex と、キーを持つアイテムを使用してリスト内のアイテムのインデックスを取得する SemanticsProperties.IndexForKey を追加しました。どちらのアクションも LazyList によって実装されます。
    • 指定されたインデックスにリストをスクロールする SemanticsNodeInteraction.performScrollToIndex と、指定されたキーを持つアイテムにリストをスクロールする SemanticsNodeInteraction.performScrollToKey を追加しました。(I4fe63b/178483889b/161584524
  • AnnotatedString による TextFieldValue.Saver へのサポートが追加されました。AnnotatedString.Builder に addTtsAnnotation と withAnnotation のユーティリティ関数を追加しました(I8cbdcb/178446304
  • デフォルトの 0.dp パラメータ値が PaddingValues(horizontal, vertical) に追加されました。(I05571b/181336792

バグの修正

  • weight(fill = false) の行と列の子が、使用可能なメイン軸のスペース全体を親に入力させる動作を示さなくなりました。(Ied94db/186012444b/184355105

バージョン 1.0.0-beta05

2021 年 4 月 21 日

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

API の変更

  • FlingBehavior インターフェースが @Stable としてマークされるようになりました。すべての実装は、@Stable の契約を遵守している必要があります。(I93354b/184830577

バグの修正

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

バージョン 1.0.0-beta04

2021 年 4 月 7 日

androidx.compose.foundation:foundation:1.0.0-beta04androidx.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
  • RowScopeColumnScopeBoxScopeBoxWithConstraintsScope のパブリック インスタンスが削除されました。(I4e83eb/181869067

バグの修正

  • エッジの LazyColumn/LazyRow のアイテムが高速フリングの後に正しく配置されない問題を修正しました。(Ie4d13b/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-beta03androidx.compose.foundation:foundation-layout:1.0.0-beta03 がリリースされました。バージョン 1.0.0-beta03 に含まれる commit については、こちらをご覧ください

API の変更

  • DefaultMonotonicFrameClock が非推奨となりました。MonotonicFrameClock を指定せずに withFrameNanos または Recomposer.runRecomposeAndApplyChanges を呼び出すと、IllegalStateException がスローされるようになりました。(I4eb0d

バグの修正

  • 速度が 0 の場合でも、FlingBehavior.performFling() が呼び出されるようになりました(I0b6e5b/181237123

バージョン 1.0.0-beta02

2021 年 3 月 10 日

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

API の変更

  • LazyColumn 測定ロジックに複数の小規模な最適化を追加しました(Ic6889
  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I5951eb/168778053
  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I84472b/168778053

バグの修正

  • 試験運用版 API の一般使用に対する制限を適用します(I6aa29b/174531520

バージョン 1.0.0-beta01

2021 年 2 月 24 日

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

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

API の変更

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

    このメソッドは、リスト内の特定のアイテムにスクロールします。(I4bfd7

  • ScrollableState.smoothScrollBy() の名前を animateScrollBy() に変更しました LazyListState.snapToItemIndex() の名前を scrollToItem() に変更しました ScrollState.smoothScrollTo() の名前を animateScrollTo() に変更しました(I35ded

  • Modifier.zoomable を Modifier.transformable に置き換えました。特定の機能として、smoothPanBy と smoothRotationBy を追加しました。(Ifc32bb/175294473

  • compositionLocalOfstaticCompositionLocalOfdefaultFactory は、オプションではなく必須になりました。

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

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

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

  • Indication#createIndication()Indication#rememberUpdatedIndication(InteractionState) に変更し、IndicationInstance#drawIndication() から InteractionState パラメータを削除しました。IndicationInstance は、視覚効果の描画のみを担当し、InteractionState の変更に応じてアニメーションまたは書き込みの状態を開始することはできません。これらのアニメーションと状態の書き込みは、代わりに rememberUpdatedIndication() の中で行う必要があります。Modifier.indicationindication パラメータも必須パラメータに変更しました。(Ic1764b/152525426

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

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

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

  • smoothScrollBy メソッドと scrollBy メソッドのパッケージを androidx.compose.foundation.gestures.* に変更しました(I3f7c1b/175294473

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

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

  • defaultMinSizeConstraints の名前を defaultMinSize に変更しました。(I4eaae

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

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

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

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

  • drawerState.open() と drawerState.close() が suspend 関数になりました。コンポジションのスコープを取得して呼び出しを行うには、rememberCoroutineScope() を使用します(I16f60b/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 のファイルクラス セマンティクスにより、バイナリとの互換性は損なわれますがソースコードとの互換性は維持されるので、多くのユーザーにとって問題にはなりません。
    • I99b7db/177245490
  • Modifier.scrollable を再構築しました。ScrollableController クラスの代わりにスクロール可能なインターフェースを使用するようになりました(I4f5a5b/174485541b/175294473

  • Modifier.draggable は、単純なラムダの代わりに、DraggableState を受け入れるようになりました。rememberDraggableState { delta -> } を介して状態を作成し、以前と同じ動作を実現できます(Ica70fb/175294473)。

  • 必要な組み込みサイズに変更するために、requiredWidth(IntrinsicSize) 修飾子と requiredHeight(IntrinsicSize) 修飾子を追加しました。(I0a6b4

  • 非推奨となった emptyContent() を削除しました。代わりに {} を使用してください。(Idb33fb/179432510

  • これまでに非推奨となった API をいくつか削除しました(Ice5dab/178633932

バグの修正

  • TextField の以前の SoftwareKeyboardController インターフェースを置き換える、新しい LocalSoftwareKeyboardController コンポジション ローカル API を追加しました。(I658b6b/168778053

バージョン 1.0.0-alpha12

2021 年 2 月 10 日

androidx.compose.foundation:foundation:1.0.0-alpha12androidx.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 を使用してください(If0bbdb/179071523
  • ImageBitmap や ImageVector の命名規則に合うように、ImagePainter の名前を BitmapPainter に変更し、VectorPainter と名前を揃えました。(Iba381b/174565889
  • 部分文字列を引数として使用する部分文字列のテスト API を改善しました(Icbe78
  • 無限アニメーションに適用される InfiniteAnimationPolicy コルーチン コンテキスト要素を導入しました。ComposeTestRule を使用してテストを実行する場合を除き、デフォルトではポリシーはインストールされません。(I50ec4b/151940543
  • Animatable.snapTo と Animatable.stop が suspend 関数になりました(If4288
  • ComponentActivity.setContent を androidx.activity:activity-compose モジュールの androidx.activity.compose.setContent に移動しました。(Icf416
  • destructuring と copy() メソッドを、これらをほとんど使用しないクラスから削除しました。(I26702b/178659281
  • LazyColumn / LazyRow のカスタムキーのサポートを追加しました。これにより、アイテムの並べ替えをよりスマートに処理できます。要素を並べ替える際、または中央からアイテムを削除した際に、remember {} ブロックに保存した状態がアイテムと一緒に移動するようになります。

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Indication#createInstance を @Composable に変更し、LocalIndication を () -> Indication ではなく Indication を含むように変更しました。(I5eeeab/157150564

  • Constraints.enforceConstraints.constrain に置き換えました。(I8b8ea

  • loadFontResource が非推奨になりました。代わりに fontResource を使用してください。imageResource、loadImageResource、vectorResource、loadVectorResource が非推奨になりました。代わりに painterResource を使用してください。(I6b809

  • パフォーマンス上の理由から、ScrollAxisRange セマンティクスは、浮動小数点値を直接使用するのではなく、浮動小数点数を返すラムダを使用するようになりました。(If4a35b/178657186

  • ユーザー補助機能のために、テキスト フィールドの編集可能な入力をマークする EditableText セマンティクスを追加しました。セマンティクスを確認するための対応するテストメソッドを追加しました(I8e07a

  • Modifier.clickable でダブルクリックと長押しクリックのサポートが終了しました。この機能を実現するには Modifier.combinedClickable を使用してください。(Iafad1

  • toIntPx() の名前を roundToPx() に変更しました(I9b7e4b/173502290

  • IntBounds の名前を IntRect に変更し、API を改善しました。(I1f6ff

  • Modifier.dragGestureFilter が非推奨になりました。代わりに Modifier.pointerInput { detectDragGestures (...)} を使用してください。または、単軸のドラッグには Modifier.draggable を使用します(I0ba93b/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)) } のようになります(Ib4c26b/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 を試験運用版としてマークしました(Ia53e3b/178519862

  • rememberSavedInstanceState() の名前を rememberSaveable() に変更して androidx.compose.runtime.saveable パッケージに移動しました。(I1366eb/177338004

  • RestorableStateHolder の名前を SaveableStateHolder に変更して androidx.compose.runtime.saveable パッケージに移動しました。内部メソッド RestorableStateProvider の名前を SaveableStateProvider に変更しました。汎用型が削除されたため、Any をキーとして渡すことができます。試験運用版のアノテーションは不要になりました。(I0902eb/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 を導入しました。(I61040b/152756983

  • canDrag を Modifier.scrollable から削除しました。(Id66e7b/175294473

  • Compose コンパイラ プラグインの対象となる API は、具象クラスではなくインターフェースを使用するようにリファクタリングされました。また、それらのインターフェースは、タイプ パラメータを使用しなくなりました。

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

  • Modifier.scaleGestureFilter を削除しました。代わりに Modifier.zoomable を使用してください。または、Modifier.pointerInput { detectMultitouchGestures { ... }} を使用します(Id5da1b/175294473

  • AnimatedValue/Float が非推奨になりました。代わりに Animatable を使用してください。(I71345b/177457083

    • CoreText と CoreTextField を公開 API から削除しました
    • 非推奨の SelectionContainer オーバーロードを削除しました(I99c19
  • 非推奨の non-suspend バージョンのスクロール関数が削除されます。前回のリリースから変更を継続し、non-suspend バージョンのスクロール関数を完全に削除しました。同じ名前の suspend 関数に変換してください。コルーチン スコープは rememberCoroutineScope() で取得できます。(I3d39cb/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 関数とともに使用してください。(I6baf9b/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-alpha11androidx.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 から削除されました(Ic4becb/175294473

  • FlingConfig を受け入れる AnimatedFloat.fling が削除されました。代わりに suspend バージョンの Animatable.animateDecay を使用してください。(I4659bb/177457083

  • 次のクラスから data class を削除しました。

    • InlineTextContent
    • LocaleList
    • I605c7
  • clickable、toggleable、selectable が、コンポジションの外部でも作成できるようになりました(I0a130b/172938345b/175294473)。

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

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

  • 非推奨となった AbsoluteArrangement が削除されました。(Iffa96b/177641870

  • 受信の最小制約を Box のコンテンツに渡すかどうかを指定するため、propagateMinConstraints パラメータを追加しました。デフォルトは false です。(I0125bb/152613457

バグの修正

  • onCommit、onDispose、onActive を非推奨にし、SideEffect API と DisposableEffect API に置き換えました。(If760e
  • WithConstraints は BoxWithConstraints として再構築され、founds.layout に移動しました。(I9420bb/173387208
  • Font / FontFamily / Typeface のファクトリ関数の変更

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

  • animateAsState が animateFooAsState になりました。Foo は、たとえば Float、Dp、Offset など、アニメーション化する変数の型を意味します。(Ie7e25

  • Density が Arrangement インターフェースのレシーバ スコープになりました。(I18aad

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

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

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

  • Duration と Uptime は Long ミリ秒に置き換えられます。これにより、これらのクラスに対するポインタ入力の依存関係が解消します。(Ia33b2b/175142755b/177420019

  • RememberObserver が CompositionLifecycleObserver に置き換わり、CompositionLifecycleObserver が非推奨になりました。

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

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

  • TransformedText.transformedText の名前を TransformedText.text に変更しました。

    • TransformedText はデータクラスではなくなりました。(Ie672a
  • 次のクラスはデータクラスではなくなりました。

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput(Iaff99
  • 試験運用版の monotonicFrameAnimationClockOf メソッドを削除しました(Ib753fb/170708374

  • グローバル座標メソッドを非推奨とし、ウィンドウに基づく座標メソッドを新たに作成しました。(Iee284

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

    • ImeAction.Unspecified の代わりに ImeAction.Default を使用してください。(Ie1bcc
  • FocusRequester.createRefs は変更の可能性があるため、試験運用版としてマークされるようになりました。(I2d898b/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 で使用されることがないため、内部化しました。(Ifff97b/175142755

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

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

バージョン 1.0.0-alpha10

2021 年 1 月 13 日

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

API の変更

  • ImeOptions と KeyboardOptions がデータクラスではなくなりました(I3c898b/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 に変更しました(Ia4502b/171464963
  • LazyColumn/LazyRow 用に試験運用版の stickyHeader メソッドを追加しました。(I0a81d
  • Color.useOrElse() の名前を Color.takeOrElse() に変更しました。(Ifdcf5
  • TestUiDispatcher を非推奨としました。代わりに Dispatchers.Main を使用してください。(Ic171fb/175385255
  • foundation の Strings.kt に切り替えを追加しました。(I4a5b7b/172366489
  • nativeClass を ui モジュールに移動し、内部化しました。equals 実装での nativeClass の使用を更新して、代わりに「is MyClass」を使用するようにしました。(I4f734)。
  • FlowRow と FlowColumn が非推奨になりました。代わりにカスタム レイアウトを使用してください。(I09027)。
  • Modifier.focus() と Modifier.focusRequester() が非推奨になりました。代わりに Modifier.focusModifier() と Modifier.focusReference() を使用してください。(I75a48b/175160751b/175160532b/175077829
  • Selectable の更新を SelectionManager に通知するために SelectionRegistrar.notifySelectableChange を導入しました。(I6ff30b/173215242
  • fun Dp.isFinite()val Dp.isFinite に変更しました。(I50e00
  • Constraints#satisfiedBy の名前を isSatisfiedBy に変更しました。(I9cf5c
  • Unspecified 定数を持つインライン クラスに isSpecified、isUnspecified、useOrElse を追加しました。(I93f7bb/174310811

バグの修正

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

バージョン 1.0.0-alpha09

2020 年 12 月 16 日

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

API の変更

  • Scrollable インターフェースの追加

    これにより、ScrollState と LazyListState を共通のタイプとして扱い、両方のタイプにカスタム スクロールを実装できるようになります。

    また、これにより smoothScrollBy が Scrollable の拡張関数に移動し、この機能を利用するようになります。(I2153b

  • LazyVerticalGrid が追加されています。(I17267b/162213211

  • LazyColumnFor、LazyRowFor、LazyColumnForIndexed、LazyRowForIndexed を非推奨としました。代わりに LazyColumn と LazyRow を使用してください。(I5b48c

  • 一時停止ポインタ入力 API について、HandlePointerInputScope の名前を AwaitPointerEventScope に変更し、handlePointerInput() の名前を awaitPointerEventScope() に変更しました。(Idf0a1b/175142755

  • 現在表示されているアイテムのサイズとオフセットのリストを公開する LazyListState.layoutInfo を追加しました。(If8678b/170472532

  • ExperimentalPointerInput アノテーションを削除しました。(Ia7a24

  • TextField に InteractionState のサポートを追加しました。(I61d91

  • LazyColumn/Row に reverseLayout パラメータを追加しました。true の場合、アイテムは下から上にコンポーズされ、LazyListState.firstVisibleItemIndex == 0 は最初のアイテムが一番下にあることを示します。(I552aeb/166589935

  • verticalArrangement パラメータが LazyColumn に追加されました。horizontalArrangement パラメータが LazyRow に追加されました。Arrangement を使用すると、アイテム間にスペースを追加し、最小サイズをすべて埋めるアイテムがない場合のアイテムの配置を指定できます。(Icf79ab/170394300

  • detectMultitouchGestures が重心、パン、ズーム、回転のパラメータの組み合わせに 1 つのコールバックを使用するにようになりました。(Ie6e1c

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

バグの修正

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

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

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

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

  • Modifier.focusObserver が非推奨になりました。代わりに Modifier.onFocusChanged または Modifier.onFocusEvent を使用してください。(I30f17b/168511863b/168511484

  • Autofill API が試験運用版 API になり、オプトインが必要になりました。(I0a1ec

  • FocusRequester インスタンスを作成するための非構造化宣言を追加しました。(I35d84b/174817008

  • accessibilityLabel の名前を contentDescription に変更し、accessibilityValue の名前を stateDescription に変更しました。(I250f2

  • SelectionRegistrar にいくつかの新しい関数を導入しました。また、onPositionChange の名前を notifyPositionChange に変更しました。(Ifbaf7

  • AndroidOwner が内部に隠蔽されました。(Ibcad0b/170296980

  • InfiniteRepeatableSpec を作成するための新しい infiniteRepeatable 関数(I668e5

  • Applier インターフェースが変更され、トップダウンではなくボトムアップでツリーのビルドが簡素化されました。

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

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

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

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

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

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

バージョン 1.0.0-alpha08

2020 年 12 月 2 日

androidx.compose.foundation:foundation:1.0.0-alpha08androidx.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 行になり、水平方向にスクロール可能になります。(I57004b/168187755

  • 新しい一時停止ポインタ入力を使用する、タップ、ダブルタップ、長押し、プレス操作のジェスチャー検出器が追加されました。ユーティリティもいくつか追加されたので、デベロッパーは独自のジェスチャー検出器を簡単に作成できます。(I00807

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

  • 以前に非推奨になった API が削除されました。削除された Border の代わりには、BorderStroke を使用してください。削除された Modifier.drawBorder の代わりには、Modifier.border を使用してください。削除された Modifier.gravity の代わりには、Modifier.align を使用してください。削除された Stack の代わりには、Box を使用してください。(I32c2bb/172470874

  • AbsoluteArrangement の名前が Arrangement.Absolute に変更されました。(If26f2

バグの修正

  • DrawModifier API を androidx.compose.ui パッケージから androidx.compose.ui.draw パッケージに移動しました。非推奨となった API から現在の API への移行に役立つ型エイリアス / ヘルパー メソッドを含む DrawModifierDeprecated.kt ファイルを作成しました。(Id6044b/173834241
  • Modifier.drawLayer の名前を Modifier.graphicsLayer に変更しました。また、API 評議会のフィードバックに従って、関連するクラスを GraphicsLayer に更新しました。(I0bd29b/173834241
  • SubcomposeLayout 宣言から <T> が削除されました。現在は、タイプを指定せずにこれを使用できます。(Ib60c8
  • PointerInputData の uptime フィールドと position フィールドを null 値非許容にしました。(Id468a
  • MaterialTheme は、選択ハンドルと選択背景に正しい色を設定するようになりました。非マテリアル アプリでは、AmbientTextSelectionColors を手動で使用して、選択用の色をカスタマイズできます。(I1e6f4b/139320372b/139320907
  • Box のアライメント パラメータの名前が contentAlignment に変更されました。(I2c957
  • offsetPx 修飾子の名前が offset に変更されました。現在は、State ではなくラムダ パラメータを取得します。(Ic3021b/173594846
  • ホスト ウィンドウがフォーカスされているかどうかをチェックする WindowManager.isWindowFocused と、onWindowFocusChanged コールバックを提供する WindowFocusObserver を追加しました。(I53b2ab/170932874
  • TextInputService#onStateUpdated に resetInput パラメータを追加しました(I3e8f5b/172239032b/171860947
  • TextFieldValue API の更新
    • TextFieldValue.composition を読み取り専用にしました
    • 無効な選択範囲に対してスローされる例外を削除しました(I4a675b/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 とその使用方法)が試験運用版になりました(I6ef86b/171378521
  • 古い ui-test モジュールとそのスタブを削除しました(I3a7cb
  • 他の単位との整合性を図るため、TextUnit.Inherit の名前が TextUnit.Unspecified に変更されました。(Ifce19
  • Alignment インターフェースが更新され、機能するようになりました。(I46a07b/172311734
  • foundation:foundation-text モジュールが foundation:foundation に統合されました。(Idac0f
  • place(Offset) と placeRelative(Offset) を非推奨としました。代わりに int オフセットを含むオーバーロードを使用してください(I4c5e7
  • LayoutIdParentData 用の id の名前が layoutId に変更されました。Measurable.id の名前が Measurable.layoutId に変更されました。(Iadbcbb/172449643

バージョン 1.0.0-alpha07

2020 年 11 月 11 日

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

API の変更

  • Modifier.fillMaxSize[Width|Height] と同様に、LazyColumn/Row の範囲内の Modifier.fillParentMaxSize[Width|Height] で分数がサポートされるようになりました(I797e2b/166586426
  • 公開 API から KeyboardOptions.toImeOptions を削除しました。(Ic2e45
  • 基本の AmbientTextStyle、ProvideTextStyle、AmbientContentColor が非推奨になりました。代わりに、マテリアル ライブラリにある新バージョンを使用してください。マテリアル以外のアプリの場合は、独自のコンポーネントで使用できる、独自のデザイン システム固有のテーマ設定アンビエントを代わりに作成する必要があります。(I74accb/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 を使用できるようになりました(Idab7ab/166584730
  • BaseTextField が非推奨になりました。代わりに BasicTextField を使用してください。(I896eb
  • CoreTextField と BaseTextField の両方に代わるものとして、BasicTextField が追加されました(Id4cea
  • 非推奨となった LazyColumnItems / LazyRowItems を削除しました(I1d8a8
  • 固有の測定値に対するサイズ変更のための、非推奨となったコンポーザブルを削除しました。(I18537b/171811496
  • relativePaddingFrom の名前が paddingFrom に変更されました。レイアウト境界からテキスト ベースラインまでの距離を指定する際に便利なように、paddingFromBaseline 修飾子が追加されました。(I0440ab/170633813
  • matchHeightConstraintsFirst パラメータを aspectRatio 修飾子に追加しました。これを使用すると、幅の対応を試す前に高さの制限に合わせてサイズ変更する修飾子を指定できます。(Ie7c43b/155290593
  • 非推奨となった DpConstraints を削除しました。(I87884b/171702471

バグの修正

  • スケーリングが不均一なユースケースに対応するために、互いに独立した水平軸と垂直軸のスケーリング ファクタを表す ScaleFactor インライン クラスが導入されました。
    • computeScaleFactor メソッドを ContentScale に追加しました。
    • 不均一なスケーリングを実施し、src 境界を拡大してデスティネーションを完全に占有する ContentScale.FillBounds を追加しました。
    • Size パラメータを使用して ScaleFactor パラメータを計算する演算子メソッドを追加しました。
    • Ic96a6b/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 による色合い調整を無視しようとすると、透明色で色合い調整され、最終的に何もレンダリングされませんでした。(I049e2b/171624632
  • MeasureResult を MeasureScope の外に移動しました。(Ibf96db/171184002
  • いくつかのレイアウト関連シンボルを androidx.compose.ui から androidx.compose.layout.ui に移動しました。(I0fa98b/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-alpha06androidx.compose.foundation:foundation-layout:1.0.0-alpha06androidx.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 に追加しました(I81566b/169509805
  • alignByBaseline が RowScope に追加され、alignWithSiblings の名前が alignBy に変更されました(I06503b/170628732
  • Box がインライン関数になりました。(Ibce0cb/155056091
  • maxLines を CoreTextField に追加しました(Ibee58b/143687793
  • softwrap を CoreTextField に追加しました。(I21a4b

バグの修正

  • コンポーザブル API がコンポジション間でデータを保持するために「remember」を内部的に利用していることをわかりやすく示すために、VectorPainter が非推奨になり、rememberVectorPainter に置き換えられました。(Ifda43
  • ComposeTestRule で遷移が有効になりました。ComposeTestRule から、カーソルの点滅を有効にするオプションを削除しました。(If0de3
  • 単一行のキーボード オプションを CoreTextField に追加しました(I72e6d
  • Compose 全体での使用方法をわかりやすく表現するために、Radius API の名前を CornerRadius に変更しました。負のコーナー半径が 0 に固定されることを示すようにドキュメントを更新しました。(I130c7b/168762961
  • コンポーズされた修飾子でインスペクタ情報を指定する機能を追加しました(Idee08b/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-alpha05androidx.compose.foundation:foundation-layout:1.0.0-alpha05androidx.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 という名前に変更されました(I97611b/169797763
  • コピー / 貼り付け / 切り取りのユーザー補助アクションが追加されました(I6db4f
  • TextOverflow.None が導入されました。オーバーフローが None の場合、Text はそれ以上オーバーフローを処理せず、実際のサイズを LayoutNode に報告するようになりました(I175c9b/158830170
  • Float.POSITIVE_INFINITY ではなく Float.NaN になるよう Size.Unspecified パラメータが更新されました。無制限の Sizes だけでなく Size.Unspecified もチェックするよう Painter の実装が更新されました(I95a7e
  • Paging Compose モジュールとページング統合が追加されました(Ib85da
  • null 許容型の値を受け取るよう LazyListScope が変更されました(I1765b
  • OnPositionedModifier が OnGloballyPositionedModifier という名前に、onPositioned() が onGloballyPositioned() という名前に変更されました(I587e8b/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-alpha04androidx.compose.foundation:foundation-layout:1.0.0-alpha04androidx.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 とは異なります。(I94893b/167680279
  • Box 装飾パラメータが非推奨になりました。Box に装飾やパディングを付ける場合は、代わりに修飾子を使用します。(Modifier.background、Modifier.border、Modifier.padding)(Ibae92b/167680279
  • 新たに LazyListState クラスを追加しました。 これにより、LazyRow コンポーネントと LazyColumn コンポーネントのスクロール位置のモニタリングと制御が可能になります。rememberLazyListState() を使用してインスタンスを作成し、コンポーネントの state パラメータに渡します。現在この初期バージョンでは、最初に表示されるアイテムとオフセットをモニタリングできます。(Ic7cb7b/159307669
  • Lazy リストの位置とスクロール オフセットが、アクティビティの再作成の前後で保存および復元されるようになりました。(Ie045fb/166589058
  • 長いクリック セマンティクス アクションを追加しました。(I6281bb/156468846
  • MutatorMutex ユーティリティを追加して、共有状態の単一のミューテータを長期にわたって維持し、競合するミューテータを優先度に基づいてキャンセルするようにしました。(I3f975
  • rootAnimationClockFactory、transitionsEnabled、blinkingCursorEnabled、textInputServiceFactory を @VisibleForTesting でアノテーションし、内部 API 化して kdoc を非表示にしました。(I554ebb/168308412
  • 文字列入力のテキストから inlineContent パラメータを削除しました。inlineContent が AnnotatedString と連動する必要があるため、このパラメータは使用されなくなります。(Ief403
  • 非推奨になっていたカスタム Arrangement API を削除しました。(Ic576db/168297922b/168297923
  • unbounded パラメータを wrapContentSize 修飾子に追加しました。これにより、レイアウト要素を無制限で測定できるようになりました。(I77951b/158559319
  • レイアウト スコープのコンテンツ(RowScope の alignWithSiblings など)を静的にインポートできないようにしました。代わりに明示的なスコープ(with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) })を使用してください。(I216beb/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 拡張関数をプロパティに移行しました。
    • I8f5c7b/168762961
  • スクロールのたびに不要な再構成を行わないようにすることで、LazyColumnFor / LazyRowFor スクロールのパフォーマンスを最適化しました。(I64f65b/168293643b/167972292b/165028371
  • スクロール後にアイテムが変更されたときの LazyColumnFor / LazyRowFor のクラッシュを修正して、以前に表示されていたアイテムが削除されたときに自動で上にスクロールするように実装し、最後に空の隙間が表示されないようにしました。(I220abb/161480164b/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 を非推奨としました。
    • If086ab/167737376
  • セマンティクス プロパティに AccessibilityScrollState を追加しました。(Ifeda9
  • オブジェクト作成を回避するために、TextRange をインライン化しました。(Id034b
  • ParagraphConstraints を削除しました。幅が直接 Paragraph に渡されるようになりました。(Ica712

バージョン 1.0.0-alpha03

2020 年 9 月 16 日

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

API の変更

  • InnerPadding の名前が PaddingValues に変更されました。(I195f1b/167389171
  • レイアウト API の gravity の用法で、名前が align または alignment に一貫して変更されました。(I2421ab/164077038
  • alignment パラメータが Stack に追加され、すべての Stack 子のデフォルトの配置を指定できるようになりました。(Ie80cab/164085265

バグの修正

  • DpConstraints とそれを使用する API が非推奨になりました。(I90cdbb/167389835
  • widthIn のパラメータ minWidthmaxWidth の名前が minmax に変更されました。preferredWidthInheightInpreferredHeightIn も同様です。(I0e5e1b/167389544
  • 現在のグローバル メソッドが非推奨になるため、onNode などのグローバル メソッドが ComposeTestRule に追加されました。(Ieae36
  • 無効なスワイプ操作の生成を引き起こしていた、GestureScope でのサイズと位置の計算を修正しました(Iaf358b/166589947
  • createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android から androidx.ui.test に移動しました(Idef08b/164060572

バージョン 1.0.0-alpha02

2020 年 9 月 2 日

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

バグの修正

  • TestUiDispatcher は試験運用となりました(Iae99db/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")
        }
    }
    

    I0a85bb/161247083

バージョン 1.0.0-alpha01

2020 年 8 月 26 日

androidx.compose.foundation:foundation:1.0.0-alpha01androidx.compose.foundation:foundation-layout:1.0.0-alpha01androidx.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-dev17androidx.compose.foundation:foundation-layout:0.1.0-dev17androidx.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 の書き込みはサポートされなくなります。(I6733db/161985975
  • オフセットがインライン クラスになりました。(Iaec70
  • TextField から onFocusChanged コールバックを削除しました。代わりに Modifier.focusObserver を使用してください。(I51089b/161297615
  • Modifier.drawBorder が非推奨になりました。代わりに Modifier.border を使用してください。Border データクラスは BorderStroke に置き換えられました。(I4257db/158160576
  • VerticalScroller と HorizontalScroller が削除されました。代わりに、ScrollableColumn/Row を使用してください。Modifier.drawBackground を削除しました。Modifier.background を使用してください。(I73b0db/163019183
  • 非推奨としてマークされている fillMax* 修飾子を LazyItemScope から削除しました。LazyColumnFor の直接の子ではないアイテムにそのような修飾子を正しく追加することが難しくなっているためです。(Ifa78d
  • DSL として LazyColumn/LazyRow の実装を追加しました。(I93cc6
  • Constraints がインライン クラスになりました。(I88736
  • fillMaxWidth、fillMaxHeight、fillMaxSize 修飾子を使用して、使用可能なスペースの一部にレイアウトのサイズを合わせる機能を追加しました。(I945bbb/161562591

バグの修正

  • SelectionContainer に修飾子パラメータを追加しました。(I4aadab/161487952
  • SemanticsPropertyKey に mergePolicy ラムダを追加しました。これを使用して、mergeAllDescendants セマンティクスのマージに関するカスタム ポリシーを定義できます。デフォルトのポリシーでは、すでに存在する場合は親の値が使用され、それ以外の場合は子の値が使用されます。(Iaf6c4b/161979921
  • PlacementScope.placeAbsolute() の名前が PlacementScope.place() に変更され、以前の PlacementScope.place() の名前が PlacementScope.placeRelative() に変更されました。その結果、PlacementScope.place() メソッドは、右から左(RTL)へのコンテキストで、自動的に位置をミラーリングしなくなります。必要な場合は、代わりに PlacementScope.placeRelative() を使用してください。(I873acb/162916675
  • 非推奨となった FilledTextField コンポーネントを削除しました。代わりに TextField を使用して、塗りつぶしテキスト フィールドのマテリアル デザイン実装を取得してください。(I5e889
  • LinearProgressIndicator に backgroundColor パラメータを追加し、CircularProgressIndicator から内部パディングを削除しました。新しい ProgressIndicatorConstants.DefaultProgressAnimationSpec を追加しました。このプロパティは、値間の進捗をアニメーション化するときにデフォルトの AnimationSpec として使用できます。(If38b5b/161809914b/161804677
  • 明確化のため、state { ... } composable を非推奨とし、remember { mutableStateOf(...) } の明示的な呼び出しに置き換えました。これにより、状態管理の API サーフェス全般とコンセプトの数が縮小され、クラス プロパティ委任の by mutableStateOf() パターンと一致するようになります。(Ia5727
  • compose の命名パターンに合わせて RRect を RoundRect に名前変更しました。RRect に類似する関数コンストラクタを作成し、RRect 関数コンストラクタを非推奨としました。(I5d325
  • onChildPositioned と OnChildPositionedModifier を削除しました。代わりに、子レイアウトで onPositioned と OnPositionedModifier を使用する必要があります。(I4522eb/162109766
  • IntSize がインライン クラスになりました。(I2bf42
  • 空白の領域を長押しして編集します。(Ib1e5b
  • テキストをタップした後、FloatingToolbar を非表示にします。(If4525
  • 選択範囲を更新するときに FloatingToolbar を非表示にします。(I8444c
  • ぼかしの際に選択を解除します。(I781a2

バージョン 0.1.0-dev16

2020 年 8 月 5 日

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

API の変更

  • Lazy リストの itemContent パラメータとして LazyItemScope が追加されました。これにより、親の最大サイズを塗りつぶすための修飾子が提供されます。アイテムでビューポートを塗りつぶす必要があるが、アイテムが制約なしで測定されるため通常の Modifier.fillMaxSize() が機能しない事例を解決できます。(Ibd3b2b/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 にフラット化されました。(I46491b/161887429
  • LazyRowItems / LazyColumnItems に交差軸の gravity パラメータを追加しました。LazyRowItems / LazyColumnItems はラップ コンテンツの動作をサポートするようになりました。(Ib39fc
  • ZoomableState の名前が ZoomableController に変更されました。smoothScale にカスタム曲線のサポートが追加されました。enabledonZoomStarted の機能が追加されました。(If8b8f
  • material の FilledTextField を TextField に、foundation の TextField を BaseTextField に名前変更し、シンプルで望ましい API を簡単に見つけて使用できるようにしました。(Ia6242b/155482676
  • 以前に非推奨となった AdapterList が削除されました。代わりに LazyColumnItems を使用してください。(I12b9b
  • Modifier.drawBackground の名前が Modifier.background に変更されました。(I13677
  • 以前の ConstraintLayout DSL は削除されました。ConstraintSet2 の名前が ConstraintSet に変更されました。(If58d1b/162450908
  • Modifier.absoluteOffset() と Modifier.absoluteOffsetPx() を追加しました。オフセット修飾子とは異なり、絶対オフセット修飾子は、右から左へのコンテキストで自動ミラーリングされません。(I3aa21
  • RowColumn をインライン関数にしました。これにより、使用する際のオーバーヘッドが大幅に削減されます。(I75c10

バグの修正

  • 広範な API の修正に対応しました。(I077bc
    1. 未使用の OffsetBase インターフェースを削除しました。
    2. 一貫性のある API サーフェスを持つように Offset クラスと IntOffset クラスを調整しました。
    3. Offset API に合わせて、IntOffset.Origin を IntOffset.Zero に名前変更しました。
    4. ユーザーが独自の Canvas インスタンスを作成できるように、Canvas インターフェースから nativeCanvas メソッドを削除しました。
    5. lateinit の代わりに非 null パラメータとなり、フィールドの非 null 可能性が確保されるように DrawScope をリファクタリングするため、スタブ EmptyCanvas クラスを作成しました。
    6. ClipOp 列挙型の名前をパスカルケースに変更しました。
    7. FilterQuality 列挙型の名前をパスカルケースに変更しました。
    8. StrokeJoin 列挙型の名前をパスカルケースに変更しました。
    9. PointMode 列挙型の名前をパスカルケースに変更しました。
    10. PaintingStyle 列挙型の名前をパスカルケースに変更しました。
    11. PathFillType 列挙型の名前をパスカルケースに変更しました。
    12. StrokeCap 列挙型の名前をパスカルケースに変更しました。
    13. DrawCache の実装が更新され、lateinit パラメータを使用しなくなりました。
    14. DrawScope が更新され、fillPaint および strokePaint 内部パラメータの遅延委任を使用しなくなりました。
    15. オーバーヘッドを削減するため、Box の使用を回避するように Image composable を更新しました。
    16. Outline クラスを更新して @Immutable アノテーションを追加しました。
    17. PathNode を更新して、各パス手順に @Immutable アノテーションを追加しました。
    18. Vector サブコンポジションを更新し、等価性に関する冗長な条件付きチェックを削除しました。Compose はすでにこの処理に対応しているためです。
    19. Rect コンパニオン コンストラクタ メソッドが非推奨になり、関数コンストラクタに置き換えられました。
    20. Brush のクラスと関数コンストラクタを @Immutable および @Stable API で更新しました。
    21. PascalCase となるように VertexMode 列挙型を更新しました。
    22. DrawScope selectPaint メソッドを更新し、ペイントでストローク パラメータが変更されている場合は、条件付きで上書きできるようにしました。
    23. Size を更新して API の分解を追加し、UnspecifiedSize を Unspecified に名前変更して、未使用のメソッドを削除しました。
  • MonotonicFrameAnimationClock を追加して、MonotonicFrameClock を AnimationClockObservable として使用できるようにしました。これにより、新しいコルーチン ベースのクロックと、従来のコールバック ベースのクロックを使用している API との隙間が埋まりました。

    ManualAnimationClock に相当する MonotonicFrameClock は ManualFrameClock になりました。(I111c7b/161247083

  • SemanticsNodeInteraction.performPartialGesture が削除されました。代わりに SemanticsNodeInteraction.performGesture を使用してください(Id9b62

  • SemanticsNodeInteraction.getBoundsInRoot() の名前を SemanticsNodeInteraction.getUnclippedBoundsInRoot() に変更しました。(Icafdfb/161336532

  • 右から左(RTL)をサポートする API が更新されました。レイアウト方向の読み取りと変更に使用できる LayoutDirectionAmbient が追加されました。Modifier.rtl と Modifier.ltr が削除されました。(I080b3

  • Modifier.plus が非推奨になりました。代わりに Modifier.then を使用してください。then により、順序が明確化され、Modifier.padding().background() + anotherModifier と書いてチェーンを分断し可読性を下げることが防止されます。(Iedd58b/161529964

  • isFocused() および isNotFocused() の SemanticsMatcher を追加しました。(I0b760

  • RemeasurementModifier が追加されました。レイアウトを同期的に再測定できるようになります。通常、再測定 / 再レイアウトは自動的に行われるため、この機能は必要ではありませんが、スクロール中に LazyColumnItems 内で使用できます。(I5f331b/160791058

  • 最新のガイドラインに沿って、isSystemInDarkTheme は常にシステム全体のダークテーマ設定を考慮し、Q 以前の省電力ステータスを無視するようになりました。(I0c10c

  • OnChildPositioned が非推奨になりました。代わりに、OnPositioned を子で使用してください。(I87f95b/162109766

  • AndroidComposeTestRule の名前を createAndroidComposeRule に変更しました。(I70aaf

  • TextLayoutResult を取得するユーザー補助アクションを追加しました。(I9d6e6

バージョン 0.1.0-dev15

2020 年 7 月 22 日

androidx.compose.foundation:foundation:0.1.0-dev15androidx.compose.foundation:foundation-layout:0.1.0-dev15androidx.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 に置き換えられました。(I400ceb/157225838b/149460415b/154105299
  • Modifier.draggable API と Modifier.scrollable API が改訂されました。DragDirection が削除され、Orientation に置き換えられました。scrollable に必要な状態が簡素化されました。ScrollableState の名前が ScrollableController に変更されました。(Iab63cb/149460415
  • 単一値のセマンティクス プロパティで呼び出しスタイルが使用されるようになりました。たとえば、「semantics { hidden = true }」は、現在は semantics { hidden() } として記述されます。(Ic1afdb/145951226b/145955412
  • RoundedCornerShape と CutCornerShape で使用する角のサイズを 50% より大きくできるようになりました。(Id2340b/160400213
  • Image composable のデフォルトの ContentScale パラメータが Inside から Fit に変更されました。この変更は、レイアウト サイズが Painter の固有のサイズより大きい場合に、アスペクト比を維持しながら、基となる Painter を拡大する動作を取得するために行われました。この動作により、期待どおりに Image に固定サイズを指定できます。しかも、composable のサイズを計算するためにのみ固有のサイズを使用する場合でも、デフォルトの動作に影響しません。(I40ae3b/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 を使用してください。(I4066db/155211005
  • IntPx の使用を Int に置き換えました。IntPxPosition を IntOffset に置き換えました。IntPxSize を IntSize に置き換えました。(Ib7b44
  • androidx.ui.foundation.shape.RectangleShape が削除されました。androidx.ui.graphics.RectangleShape を使用してください。(I94939b/154507984
  • サイズ設定情報を示す際に使用するクラスの数を整理統合するため、PxSize ではなく Size クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される幅と高さを示す 2 つの float 値をパックできるようになります。(Ic0191
  • 位置情報を示す際に使用するクラスの数を整理統合するため、PxPosition ではなく Offset クラスの使用を標準化しました。これにより、インライン クラスは long 値を利用して、float 値で表される x オフセットと y オフセットを示す 2 つの float 値をパックできるようになります。(I3ad98
  • ピンチズーム機能用の Modifier.zoomable が追加されました。(Id5d63
  • Toggleable コンポーネントが非推奨になりました。代わりに Modifier.toggleable を使用してください。(I35220b/157642842
  • MutuallyExclusiveSetItem が非推奨になりました。代わりに Modifier.selectable を使用してください。(I02b47b/157642842
  • TestTag が非推奨になりました。代わりに Modifier.testTag を使用してください。(If5110b/157173105
  • fontWeight パラメータが Text に追加されました。これまでは誤って追加されていませんでした。(I56937
  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I19d02
  • VerticalScroller は、すぐに利用可能な Column を提供するようになりました。HorizontalScroller は、すぐに利用可能な Row を提供するようになりました。(Ieca5db/157020670
  • ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Iede0b
  • Modifier.indication が基盤パッケージに追加されました。これを使用して、操作可能なカスタム要素に押下、ドラッグ、その他のインジケーションを表示できます。(I8425fb/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 が、保存されたインスタンス状態を使用してスクロール位置を復元するようになりました。(Ia0faeb/155075048
  • FocusManagerAmbient が削除されました。フォーカスを取得するには、FocusModifier.requestFocus を使用してください。(Ic4826
  • テーブル レイアウトは、更新された API で再び利用できるようになるまで、一時的に削除されました。(Id88a7
  • Canvas オブジェクトをラップしてステートレスの宣言型描画 API サーフェスを公開する CanvasScope API を作成しました。変換は固有のレシーバ スコープ内に含まれます。また、サイズ設定情報のスコープは対応するインセット境界に設定されます。描画オペレーションを構成するためにコンシューマが独自の Paint 状態オブジェクトを維持する必要はありません。

    CanvasScopeSample を追加しました。また、デモアプリを更新して、宣言型グラフィックのデモを追加しました。(Ifd86d

  • ColoredRect が削除されました。代わりに、Box を drawBackground 修飾子とともに使用してください。(I983c7b/152753731

  • TextField にカーソルの色のカスタマイズを追加しました。(I6e33f

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

  • TextField で使用される TextFieldValue は、次のように使用すると、アクティビティが再作成されても保持できるようになりました: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }I5c3ceb/155075724

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

  • フォーカス サブシステムと統合するため、CoreTextField / TextField focusIdentifier パラメータを FocusNode に置き換えました。(I7ea48

  • TextField の更新 - 水平方向のディメンションでは、許可されたすべての使用可能なスペースを占有します。(Ib08dfb/154638552

  • InteractionState と Interaction が追加され、押下やドラッグなどの UI の状態の変化に反応するコンポーネントを簡単に作成できるようになりました。(Icfe25b/152525426

  • RectangleShape を androidx.ui.foundation.shape.* から androidx.ui.graphics.* に移動しました。(Ia74d5b/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 と同じ結果が得られることを示すドキュメントを追加しました。(I45f09b/152842521

  • ProvideContentColor を削除しました。代わりに Providers で ContentColorAmbient を直接使用してください。(Iee942

  • テキストに色パラメータを追加しました。これにより、テキスト スタイルの色をテーマのスタイルに手動で統合する必要がなくなります。(I41a66

  • DrawModifier API の改善:

    • draw() のレシーバ スコープを ContentDrawScope にしました。
    • draw() のパラメータをすべて削除しました。
    • DrawScope に以前の CanvasScope と同じインターフェースを設定しました。
    • ContentDrawScope に drawContent() メソッドを追加しました。(Ibacedb/152919067
  • ColoredRect が非推奨になりました。代わりに Box(Modifier.preferredSize(width, height).drawBackground(color)) を使用してください。(I499fab/152753731

  • マテリアル デザイン仕様に従ってシェイプテーマ設定システムを更新しました。ほとんどのコンポーネントで使用できる小、中、大のシェイプを提供できるようにしました。(Ifb4d1

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

  • Draggable を修飾子に移動しました。(ID9b16b/151959544

  • Text を androidx.ui.core から androidx.ui.foundation パッケージに移動しました。(I87ce5

  • Checkbox、Switch、Toggleable に enabled パラメータを追加しました。(I41c16

  • リップルを Modifier に変更しました。Clickable はまだ変換されていませんが、推奨される使用法は Clickable(onClick = { ... }, modifier = ripple()) です。(Ie5200b/151331852b/150060763

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

    Image(Painter) API の名前を PaintBox(Painter) に変更しました。ImageAsset の代わりに VectorAsset を使用する点を除いて Image composable と同様に動作する Vector composable を作成しました。(I9af9ab/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 を使用してください。(I595e1b/149827027

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

  • Icon、IconButton、IconToggleButton を追加し、AppBarIcon を削除しました。AppBarIcon の既存の用法を IconButton に直接置き換えることにより、正しいタッチ ターゲットを追加できます。使用法についてはサンプルをご覧ください。また、これらのコンポーネントで直接使用できる、マテリアル アイコンのアイコンをご覧ください。(I96849

  • DrawShape composable が削除されました。代わりに DrawBackground 修飾子を使用してください。(I7ceb2

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

  • Scrollable コンポーネントが追加され、カスタムの Scroller / List を作成できるようになりました。(I5fd37

  • background の名前が DrawBackground に変更され、デフォルトで記憶されるようになりました。(Ia0bd3

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

  • Canvas コンポーネントを追加しました。この composable はある程度のサイズ(ユーザーが指定するサイズ)を占有するので、CanvasScope による描画が可能になります。(I0d622

  • Border 修飾子の名前を DrawBorder に変更しました。(I8ffcc

  • レイアウトを結合して共通機能を描画するための Box コンポーネントが追加されました。(I6e2a7

  • スクローラーが Android のネイティブ フリング モーション動作を示すようになりました。(I922afb/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) が追加されました。(I94985b/157133803

  • Row と Column で、非推奨となった RowAlign と ColumnAlign を削除しました。(If60d4b/155858731

  • 非推奨となった LayoutTag() を削除しました。代わりに Modifier.tag() を使用してください。非推奨となった Modifier.matchParent() を削除しました。代わりに Modifier.matchParentSize() を使用してください。(If8044

  • offsetPx レイアウト修飾子を追加しました。これを使用して、px 単位で(動的)オフセットを定義できます。(I5af57

  • AlignmentLineOffset composable が非推奨になりました。代わりに relativePaddingFrom() 修飾子を使用してください。CenterAlignmentLine composable が削除されました。(I60107

  • 対応する受信制約が指定されていない場合にのみ、ラップされたレイアウトにサイズ制約を設定する defaultMinSizeConstraints レイアウト修飾子を追加しました(最小制約の場合は 0、最大制約の場合は無限大)。(I311eab/150460257

  • Container が削除されました。代わりに Box を使用してください。(Ibbc2bb/151407926

  • 非推奨となった LayoutWidth、Height、Size 修飾子を削除しました。(Ib0bc1

  • オフセット修飾子のデフォルト パラメータ値を追加しました。(I37f06

  • 対称パディング修飾子を追加しました。(I39840

  • 非推奨となった LayoutAspectRatio 修飾子を削除しました。(I65a74

  • 非推奨となった LayoutAlign 修飾子を削除しました。(I10877

  • ラップされたレイアウトが反対軸の制約なしで測定される原因となっていた、幅と高さの修飾子のバグを修正しました。(I210b8b/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 を使用してください。(I675ceb/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 に置き換えられました。(I46919b/160822875b/160922136
  • runOnIdleCompose の名前が runOnIdle に変更されました。(I83607
  • いくつかのテスト API の名前がより直感的にわかりやすいものになりました。findXYZ API という名前はすべて onNodeXYZ に変更されました。doXYZ API という名前はすべて performXYZ に変更されました。(I7f164
  • 非推奨となった Modifier.ripple を削除しました。clickable はデフォルト インジケーションとしてリップルを使用するようになりました(アプリ内で MaterialTheme {} を設定している場合)。そのため、ほとんどのケースでは clickable を使用するだけでリップル インジケーションを無料で利用できます。リップルの色 / サイズ / 境界パラメータをカスタマイズする必要がある場合は、RippleIndication を手動で作成して、インジケーション パラメータとして clickable に渡します。(I663b2b/155375067
  • 古いサイズテスト API を削除しました。(Iba0a0
  • LayoutNode API が試験運用版になりました。(I4f2e9
  • スクロール方向ロック機能のバージョン 1 が Compose に実装されました。(I1ce7ab/150289741
  • ポップアップ、ダイアログ、メニューがコンテキストに応じた MaterialTheme を継承するようになりました。(Ia3665b/156527485
  • Layout() 関数の測定ブロックからレイアウト方向のパラメータを削除しました。ただし、測定スコープ オブジェクトを介してコールバック内でレイアウト方向を使用できます。(Ic7d9d
  • AbsoluteArrangement を追加しました。これにより、RTL の自動ミラーリングを行わずに Row 内に子を配置することができます。(I3a1df
  • @Untracked アノテーションが非推奨になりました。@ComposableContract(tracked=false) に置き換えます。(Id211e
  • この変更が行われる前、compose コンパイラ プラグインは、スコープ内の解決された「composer」に「emit 演算子」メソッドが見つかった場合、@Composable 関数内のコンストラクタの呼び出しに対して自明でないインターセプトを実行していました。(I5205ab/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 でクラッシュする問題を修正しました。(Ic64b0b/153195921

  • activity.setContent { } ブロックの中に配置した最初のレイアウトの測定方法を変更しました。以前は、アクティビティ画面全体を表示していましたが、レイアウトを Stack の中に配置するようにしました。画面よりも小さくすることができ、画面の左上に配置されます。以前の動作が必要な場合は、レイアウトに Modifier.fillMaxSize() を適用できます。(Ie88a7b/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

  • runOnIdleComposerunOnUiThread が ComposeTestRule のメソッドではなくグローバル関数になりました。(Icbe8f

  • [Mutable] State プロパティ デリゲート演算子が、Kotlin 1.4 のプロパティ デリゲート最適化に対応するため、拡張機能に移動されました。by state { ... } または by mutableStateOf(...) を引き続き使用するには、呼び出し元でインポートを追加する必要があります。(I5312c

  • DrawLayerModifier と drawLayer() で、clipToBounds と clipToOutline のデフォルト値が false になりました。(I0eb8bb/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 が返す Compositiondispose メソッドを使用してください。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> のドキュメントをご覧ください(I4c7eeb/143769776

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

  • 再コンポーズ時にクラッシュを引き起こす ConstraintLayout バグを修正しました。(Ibee5ab/158164341

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

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

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

  • LayoutDirectionAmbient が非推奨になりました。ロケールで定義されたレイアウト方向を読み取るには、ConfigurationAmbient の localeLayoutDirection を使用します。(I851b1

  • LayoutCoordinates に positionInParent と boundsInParent を追加しました。(Icacddb/152735784

  • ParentData composable が非推奨になりました。測定ブロック内で認識するためにレイアウトの子にタグを付ける必要がある場合は、ParentDataModifier インターフェースを実装する修飾子を作成するか、LayoutTag 修飾子を使用してください。(I51368b/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 を使用してください。(I15ff0b/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 は非推奨になりました。(Idb25ab/153141084

  • androidx ポリシーに合わせて、ui-android-text パッケージ名(androidx.text)を androidx.ui.text.platform に置き換えました。(I42711