UI
最新の更新 | 現在の安定版リリース | 次のリリース候補 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2020 年 9 月 16 日 | - | - | - | 1.0.0-alpha03 |
構造
Compose は、androidx
内の 7 つの Maven Group ID を組み合わせたものです。各グループには対象とする機能のサブセットが含まれ、それぞれに固有のリリースノートがあります。
次の表に、各グループの説明と、それぞれのリリースノートのリンクを示します。
グループ | 説明 |
---|---|
compose | 形状とデータの依存関係を記述するコンポーズ可能な関数を使用して、UI をプログラムで定義します。 |
compose.animation | Jetpack Compose アプリ内でアニメーションを作成して、ユーザー エクスペリエンスを拡充します。 |
compose.foundation | すぐに使用できるビルディング ブロックで Jetpack Compose アプリを作成し、独自のデザイン システム要素を構築する基盤を拡張します。 |
compose.material | すぐに使用できるマテリアル デザイン コンポーネントで Jetpack Compose UI を構築します。Compose の上位レベルのエントリ ポイントであり、www.material.io のガイドラインと適合するコンポーネントを提供するように設計されています。 |
compose.runtime | Compose のプログラミング モデルと状態管理の基本ビルディング ブロックと、Compose コンパイラ プラグインがターゲットとするコアランタイム。 |
compose.ui | レイアウト、描画、入力など、デバイスの操作に必要な Compose UI の基本コンポーネント。 |
ui | Jetpack Compose ライブラリを操作します。 |
依存関係の宣言
Compose UI への依存関係を追加するには、プロジェクトに Google Maven リポジトリを追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
dependencies { // New dependencies implementation "androidx.compose.ui:ui-tooling:1.0.0-alpha08" implementation "androidx.compose.ui:ui-test:1.0.0-alpha08" // Old dependencies implementation "androidx.ui:ui-tooling:1.0.0-alpha07" implementation "androidx.ui:ui-test:1.0.0-alpha07" } android { buildFeatures { compose true } composeOptions { kotlinCompilerVersion "1.4.0" kotlinCompilerExtensionVersion "1.0.0-alpha08" } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = "1.8" freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"] } }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。
詳細については、Issue Tracker のドキュメントをご覧ください。
バージョン 1.0.0
バージョン 1.0.0-alpha03
2020 年 9 月 16 日
androidx.ui:ui-test:1.0.0-alpha03
と androidx.ui:ui-tooling:1.0.0-alpha03
がリリースされました。バージョン 1.0.0-alpha03 に含まれるコミットについては、こちらをご覧ください。
API の変更
- onNode や waitForIdle などのグローバル テスト関数のサポートは終了しました。ComposeTestRule で定義されている新しい同等の関数に移行してください(I7f45a)
createAndroidComposeRule
とAndroidInputDispatcher
をandroidx.ui.test.android
からandroidx.ui.test
に移動しました(Idef08、b/164060572)- 現在のグローバル メソッドのサポートが終了するため、onNode などのグローバル メソッドが ComposeTestRule に追加されました。(Ieae36)
- 無効なスワイプ操作の生成を引き起こしていた、GestureScope でのサイズと位置の計算を修正しました(Iaf358、b/166589947)
バグの修正
- レイアウト API の gravity の用法で、名前が align または alignment に一貫して変更されました。(I2421a、b/164077038)
- InnerPadding の名前が PaddingValues に変更されました。(I195f1、b/167389171)
バージョン 1.0.0-alpha02
2020 年 9 月 2 日
androidx.ui:ui-test:1.0.0-alpha02
と androidx.ui:ui-tooling:1.0.0-alpha02
がリリースされました。バージョン 1.0.0-alpha02 に含まれるコミットについては、こちらをご覧ください。
API の変更
- TestUiDispatcher は試験運用となりました(Iae99d、b/161247083)
- Duration がインライン クラスになりました(I565eb)
特定のクロックのフレームを待機しているかどうかを確認する
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") } }
バグの修正
コンポーズ可能な関数の呼び出し規則が変更されました。これは互換性を破るバイナリの変更です。このバージョンの Compose コンパイラ プラグインで動作するには、すべてのライブラリを再コンパイルする必要があります。
変更された API は明示的なオプトインがあるコンパイラ API だけであるため、ソースレベルで互換性を破る変更はありません。(I7afd2、b/158123185)
バージョン 1.0.0-alpha01
2020 年 8 月 26 日
androidx.ui:ui-test:1.0.0-alpha01
と androidx.ui:ui-tooling:1.0.0-alpha01
がリリースされました。バージョン 1.0.0-alpha01 に含まれるコミットについては、こちらをご覧ください。
バージョン 0.1.0-dev
バージョン 0.1.0-dev17
2020 年 8 月 19 日
androidx.ui:ui-test:0.1.0-dev17
と androidx.ui:ui-tooling:0.1.0-dev17
がリリースされました。バージョン 0.1.0-dev17 に含まれる commit については、こちらをご覧ください。
API の変更
- Offset がインライン クラスになりました。(Iaec70)
- IntSize がインライン クラスになりました。(I2bf42)
- AlertDialog はボタンに FlowRow を使用するようになりました。(I00ec1、b/161809319、b/143682374)
Class<T : ComponentActivity>
をパラメータとして受け取るcreateAndroidComposeRule
関数を追加して、特定のアクティビティ クラスに基づく AndroidComposeRule を簡単に作成できるようにしました。(I40da4)
バグの修正
- アルファ版リリースの PointerEventPass の名前を更新しました。(Ifda6f)
PlacementScope.placeAbsolute()
の名前がPlacementScope.place()
に変更され、以前のPlacementScope.place()
の名前がPlacementScope.placeRelative()
に変更されました。その結果、PlacementScope.place()
メソッドは、右から左(RTL)へのコンテキストで、自動的に位置をミラーリングしなくなります。必要な場合は、代わりにPlacementScope.placeRelative()
を使用してください。(I873ac、b/162916675)- ポインタ入力コードの編成をリファクタリングしました。(Ie3f45)
- PxBounds のサポートを終了して Rect に置き換えました。PxBounds のすべての使用を更新して Rect に置き換え、移行に役立つ適切なサポート終了およびアノテーションへの置き換えを追加しました。(I37038、b/162627058)
- 状態を保存する何かが for ループ内で使用されたときにクラッシュする問題が修正されました。現在は savedInstanceState() 内で同じキーを持つことが可能になり、UiSavedStateRegistry の API がこの新しい要件に合わせて調整されました。(I4ab76、b/160042650、b/156853976、b/159026663、b/154920561)
- 明確化のため、
state { ... }
composable のサポートを終了し、remember { mutableStateOf(...) }
の明示的な呼び出しに置き換えました。これにより、状態管理の API サーフェス全般とコンセプトの数が縮小され、クラス プロパティ委任のby mutableStateOf()
パターンと一致するようになります。(Ia5727) - Row と Column に spacedBy Arrangement が追加され、間隔を固定してレイアウトの子を配置できるようになりました。また、aligned Arrangement が追加され、Alignment に従って、Row と Column でレイアウトの子を互いに隣り合わせに配置してアライメントできるようになりました。元の Arrangement.Vertical#arrange および Arrangement.Horizontal#arrange メソッドはサポートが終了しました。将来、カスタム Arrangement の書き込みはサポートされなくなります。(I6733d、b/161985975)
- Modifier.drawBorder のサポートが終了しました。代わりに Modifier.border を使用してください。Border データクラスは BorderStroke に置き換えられました。(I4257d、b/158160576)
バージョン 0.1.0-dev16
2020 年 8 月 5 日
androidx.ui:ui-test:0.1.0-dev16
と androidx.ui:ui-tooling:0.1.0-dev16
がリリースされました。バージョン 0.1.0-dev16 に含まれる commit については、こちらをご覧ください。
ほとんどの Jetpack Compose パッケージは、以下の表に示すようにリファクタリングされました。
Jetpack Compose パッケージのリファクタリング
元のパッケージ名 | 新しいパッケージ名 |
---|---|
androidx.animation |
androidx.compose.animation.core |
androidx.ui.autofill |
androidx.compose.ui.autofill |
androidx.compose |
androidx.compose.runtime |
androidx.compose.dispatch |
androidx.compose.runtime.dispatch |
androidx.ui.animation |
androidx.compose.animation |
androidx.ui.core |
androidx.compose.ui androidx.compose.ui.unit androidx.compose.ui.graphics |
androidx.ui.foundation |
androidx.compose.foundation |
androidx.ui.geometry |
androidx.compose.ui.geometry |
androidx.ui.graphics |
androidx.compose.ui.graphics |
androidx.ui.input |
androidx.compose.ui.text.input |
androidx.ui.intl |
androidx.compose.ui.text.intl |
androidx.ui.layout |
androidx.compose.foundation.layout |
androidx.ui.livedata |
androidx.compose.runtime.livedata |
androidx.ui.material |
androidx.compose.material |
androidx.ui.material.icons |
androidx.compose.material.icons |
androidx.ui.rxjava2 |
androidx.compose.runtime.rxjava2 |
androidx.ui.savedinstancestate |
androidx.compose.runtime.savedinstancestate |
androidx.ui.node |
androidx.compose.ui.node androidx.compose.ui.input.pointer |
androidx.ui.platform |
androidx.compose.ui.platform |
androidx.ui.res |
androidx.compose.ui.res |
androidx.ui.semantics |
androidx.compose.ui.semantics |
androidx.ui.testutils |
androidx.compose.ui.input.pointer |
androidx.ui.text |
androidx.compose.foundation.text androidx.compose.ui.text |
androidx.ui.text.platform |
androidx.compose.ui.text.android androidx.compose.ui.platform |
androidx.ui.unit |
androidx.compose.ui.unit |
androidx.ui.util |
androidx.compose.ui.util |
androidx.ui.viewinterop |
androidx.compose.ui.viewinterop |
androidx.ui.viewmodel |
androidx.compose.ui.viewinterop |
まだリファクタリングされていないパッケージ(変更なし) |
---|
androidx.ui.test |
androidx.ui.tooling |
Android Studio を使用している場合は、import ステートメントを下記のコード スニペットに置き換えて、Android Studio の [Optimize Imports
] ボタンを使用できます。Android Studio でサポートされないケースについては、上記のパッケージ リストを参照してください。
import androidx.compose.runtime.*
import androidx.compose.animation.*
import androidx.compose.animation.core.*
import androidx.compose.foundation.*
import androidx.compose.foundation.gestures.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.*
import androidx.compose.foundation.shape.*
import androidx.compose.material.*
import androidx.compose.material.icons.*
import androidx.compose.material.icons.filled.*
import androidx.compose.ui.*
import androidx.compose.ui.geometry.*
import androidx.compose.ui.draw.*
import androidx.compose.ui.graphics.*
import androidx.compose.ui.graphics.drawscope.*
import androidx.compose.ui.graphics.painter.*
import androidx.compose.ui.graphics.vector.*
import androidx.compose.ui.layout.*
import androidx.compose.ui.platform.*
import androidx.compose.ui.res.*
import androidx.compose.ui.text.*
import androidx.compose.ui.text.font.*
import androidx.compose.ui.text.style.*
import androidx.compose.ui.unit.*
import androidx.compose.ui.util.*
import androidx.compose.ui.viewinterop.*
import androidx.ui.tooling.preview.*
API の変更
- KeyEvent2 が KeyEvent に置き換えられました。(I2d770、b/162097585)
SemanticsNodeInteraction.performPartialGesture
を削除しました。代わりにSemanticsNodeInteraction.performGesture
を使用してください(Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
の名前をSemanticsNodeInteraction.getUnclippedBoundsInRoot()
に変更しました。(Icafdf、b/161336532)- AndroidComposeTestRule の名前を createAndroidComposeRule に変更しました。(I70aaf)
- isFocused() および isNotFocused() SemanticsMatcher を追加しました。(I0b760)
- テストで使用すべきでない
BaseGestureScope.globalBounds
を削除しました。代わりに、操作したいノードのローカル座標を使用してください。(Ie9b08) - Inspector API の精度を改善しました。(I3cfbf)
バグの修正
- ダイアログを UI に移動しました。(I47fa6)
- 右から左(RTL)をサポートする API が更新されました。レイアウト方向の読み取りと変更に使用できる LayoutDirectionAmbient が追加されました。Modifier.rtl と Modifier.ltr が削除されました。(I080b3)
- transitionDefinition にはタイプ T を明示的に指定する必要があります。(I1aded)
- Modifier.plus のサポートが終了しました。代わりに Modifier.then を使用してください。「then」を使用すると、より順序付けが明確になります。また、チェーンを破壊して読みにくくする「
Modifier.padding().background() + anotherModifier
」の入力が防止されます。(Iedd58、b/161529964) - Compose 階層のルートを基準とする SemanticsNode の相対位置を取得する
SemanticsNode.positionInRoot
を追加しました。(Icdf26、b/161336532) - TextLayoutResult を取得するためのユーザー補助アクションを追加しました。(I9d6e6)
- material の FilledTextField を TextField に、foundation の TextField を BaseTextField に名前変更し、シンプルで望ましい API を簡単に見つけて使用できるようにしました。(Ia6242、b/155482676)
- Modifier.drawBackground の名前が Modifier.background に変更されました。(I13677)
- ColorPalette の名前を Colors に変更しました。これは、Material カラーシステムへのマッピングを改善し、「汎用的」なテーマ オブジェクトとしての ColorPalette と Material カラーシステムの特定の実装の混同を避けるためです。また、lightColorPalette と darkColorPalette の名前をそれぞれ lightColors と darkColors に変更しました。(I9e976、b/161812111)
- foundation.shape.corner パッケージが foundation.share にフラット化されました。(I46491、b/161887429)
Row
とColumn
をインライン関数にしました。これにより、使用する際のオーバーヘッドが大幅に削減されます。(I75c10)
バージョン 0.1.0-dev15
2020 年 7 月 22 日
androidx.ui:ui-test:0.1.0-dev15
と androidx.ui:ui-tooling:0.1.0-dev15
がリリースされました。バージョン 0.1.0-dev15 に含まれる commit については、こちらをご覧ください。
Jetpack Compose のほとんどのアーティファクトは、以下の表に示すようにリファクタリングされています。
このリリースでは、アーティファクト名のみがリファクタリングされたことにご注意ください。将来のリリースでは、新しいアーティファクト名に合わせてパッケージ名が更新されます。
Jetpack Compose アーティファクトのリファクタリング
古いアーティファクト | 新しいアーティファクト |
---|---|
androidx.compose:compose-dispatch |
androidx.compose.runtime:runtime-dispatch |
androidx.compose:compose-runtime |
androidx.compose.runtime:runtime |
androidx.ui:ui-animation |
androidx.compose.animation:animation |
androidx.ui:ui-animation-core |
androidx.compose.animation:animation-core |
androidx.ui:ui-core |
androidx.compose.ui:ui |
androidx.ui:ui-foundation |
androidx.compose.foundation:foundation |
androidx.ui:ui-geometry |
androidx.compose.ui:ui-geometry |
androidx.ui:ui-graphics |
androidx.compose.ui:ui-graphics |
androidx.ui:ui-layout |
androidx.compose.foundation:foundation-layout |
androidx.ui:ui-livedata |
androidx.compose.runtime:runtime-livedata |
androidx.ui:ui-material |
androidx.compose.material:material |
androidx.ui:ui-material-icons-core |
androidx.compose.material:material-icons-core |
androidx.ui:ui-material-icons-extended |
androidx.compose.material:material-icons-extended |
androidx.ui:ui-rxjava2 |
androidx.compose.runtime:runtime-rxjava2 |
androidx.ui:ui-saved-instance-state |
androidx.compose.runtime:runtime-saved-instance-state |
androidx.ui:ui-text |
androidx.compose.foundation:foundation-text |
androidx.ui:ui-text-android |
androidx.compose.ui:ui-text-android |
androidx.ui:ui-text-core |
androidx.compose.ui:ui-text |
androidx.ui:ui-unit |
androidx.compose.ui:ui-unit |
androidx.ui:ui-util |
androidx.compose.ui:ui-util |
まだリファクタリングされていないアーティファクト(変更なし) |
---|
androidx.compose:compose-compiler |
androidx.ui:ui-test |
androidx.ui:ui-tooling |
依存関係の更新
0.1.0-dev15
バージョンの Compose を使用するには、上記の依存関係の宣言で示されている新しいコード スニペットに従って、依存関係を更新する必要があります。
API の変更
runOnIdleCompose
の名前がrunOnIdle
に変更されました。(I83607)- いくつかのテスト API の名前がより直感的にわかりやすいものになりました。findXYZ API という名前はすべて onNodeXYZ に変更されました。doXYZ API という名前はすべて performXYZ に変更されました。(I7f164)
- アプリのセマンティクスを単純なリストではなく階層として出力する API。また、SemanticsMatcher.any を削除しました。セマンティクスを出力する場合は、代わりに findRoot().printToString() を使用してください。(I866b5)
- KeyEvent のサポートが終了し、KeyEvent2 に置き換えられました。(I68730)
- 新しいオプションのフラグ useUnmergedTree がテスト ファインダーに追加されました。(I2ce48)
- 古いサイズテスト API を削除しました。(Iba0a0)
- レイアウトからの整数ピクセル境界を表す IntBounds ユニットクラスが追加されました。PopupPositionProvider の API が更新され、これを使用するようになりました。(I0d8d0、b/159596546)
- @Preview に新しいデバイス パラメータが追加されました。(I39049)
バグの修正
- VerticalScroller と HoriziontalScroller のサポートが終了しました。Column / Row の動作とパラメータの組み込みエクスペリエンスをサポートするには、ScrollableColumn と ScrollableRow を使用するか、独自の要素で Modifier.verticalScroll と Modifier.horizontalScroll を使用してください。同様に、ScrollerPosition のサポートが終了し、ScrollState に置き換えられました。(I400ce、b/157225838、b/149460415、b/154105299)
- 単一値のセマンティクス プロパティで呼び出しスタイルが使用されるようになりました。たとえば、「semantics { hidden = true }」は、現在は「semantics { hidden() }」として記述されます。(Ic1afd、b/145951226、b/145955412)
- キー入力関連 API に試験運用版 API アノテーションを追加しました。(I53c0a)
- Transition API が変更され、子に TransitionState を渡すのでなく、TransitionState を返すようになりました。これにより、この API と animate() API の一貫性が向上します。(I24e38)
- Applier には、コンポジションを破棄するための clear() メソッドが必要になりました。(Ibe697)
- LayoutNode API が試験運用版になりました。(I4f2e9)
- ポップアップ、ダイアログ、メニューがコンテキストに応じた MaterialTheme を継承するようになりました。(Ia3665、b/156527485)
- アニメーションのタイミングをサポートする最上位レベルの withFrameNanos 関数を追加しました。(Ie34c5)
- Layout() 関数の測定ブロックからレイアウト方向のパラメータを削除しました。ただし、測定スコープ オブジェクトを介してコールバック内でレイアウト方向を使用できます。(Ic7d9d)
- 静的アニメーション仕様のコンセプトを明確化するため、最上位レベルの API で AnimationBuilder ではなく AnimationSpec を使用するようになりました。tween や spring などの AnimationSpec の作成に関するラムダ要件を削除することにより、遷移 DSL を改善しました。代わりに、それらはコンストラクタのパラメータを直接受け取ります。AnimationSpec の使いやすさを全面的に改善し、ビルダーに依存するのではなくコンストラクタを利用するようにしました。KeyFrames と Tween の期間と遅延を Int に変更しました。これにより、(Long と Int の両方をサポートするための)不要な型キャストとメソッドのオーバーロードがなくなります。(Ica0b4)
メインスレッドで同期をトリガーしようとすると、IllegalStateException がスローされるようになりました。たとえば次のような場合、この例外がスローされます。
runOnIdleCompose { findByTag(\"tag\").assertExists() }
このような場合は、runOnIdleCompose の呼び出しを削除します。
findByTag(\"tag\").assertExists()
TextDecoration.plus 演算子を追加しました。(I0ad1a)
Button のコンテンツ スロットが Row として動作するようになりました(テキスト付きのアイコンが必要な場合に有用です。Button の記述方法に関するサンプルをご覧ください)。(I0ff10、b/158677863)
バージョン 0.1.0-dev14
2020 年 6 月 24 日
androidx.ui:ui-*:0.1.0-dev14
がリリースされました。バージョン 0.1.0-dev14 に含まれる commit については、こちらをご覧ください。
API の変更
IntPx
の使用がInt
に変更されました。IntPxPosition
がIntOffset
に変更されました。IntPxSize
がIntSize
に変更されました。(Ib7b44)- サイズ情報を示す際に使用するクラスの数を整理統合するために、
PxSize
クラスではなく、Size
クラスを使用するように標準化しました。これにより、インライン クラスは、long 値を利用して、float 値として示される幅と高さを示す 2 つの float 値をパックできるようになります。(Ic0191) - 位置情報を示す際に使用するクラスの数を整理統合するために、
PxPosition
クラスではなく、Offset
クラスを使用するように標準化しました。これにより、インライン クラスは、long 値を利用して、float 値として示される x オフセットと y オフセットを示す 2 つの float 値をパックできるようになります。(I3ad98) - ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で
Px
クラスを使用しないように変更しました。(I086f4) Placeable#get(AlignmentLine)
から返されるアライメント ラインの Int 位置が非 null になりました。クエリされたアライメント ラインがなかった場合、AlignmentLine.Unspecified
が返されるようになります。(I896c5、b/158134875)AndroidView
composable に修飾子パラメータが追加されました。(I48a88、b/158746303)Semantics()
のサポートが終了しました。代わりにModifier.semantics()
を使用してください。(I72407、b/158841414)viewModel()
composable を追加しました。アクティビティ内やフラグメント内と同様に、ViewModel の作成や、作成済み ViewModel の取得を行うことができます。(I5fdd1)- ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で
Px
クラスを使用しないように変更しました。(I97a5a) TestTag
のサポートが終了しました。代わりにModifier.testTag
を使用してください。(If5110、b/157173105)ParentDataModifier#modifyParentData
のデフォルト no-op 実装が削除されました(そもそもインターフェースを実装しないことと同義でした)。(I0deaa)- 以前にサポートが終了していた
ScaleFit
が削除されました。代わりにContentScale
を使用してください。(Ifbc5b) AdapterList
の名前がLazyColumnItems
に変更されました。(6decc02)LazyRowItems
が追加されました(LazyColumnItems
の水平方向スクロール版)。(Ibbcf7)androidx.ui.foundation.shape.RectangleShape
が削除されました。代わりにandroidx.ui.graphics.RectangleShape
を使用してください。(I94939、b/154507984)- ピンチズーム機能用の
Modifier.zoomable
が追加されました。(Id5d63) Toggleable
コンポーネントのサポートが終了しました。代わりにModifier.toggleable
を使用してください。(I35220、b/157642842)MutuallyExclusiveSetItem
のサポートが終了しました。代わりにModifier.selectable
を使用してください。(I02b47、b/157642842)fontWeight
パラメータが Text に追加されました。これまでは誤って追加されていませんでした。(I56937)- ConstraintLayout ガイドラインを作成する際の percent パラメータの名前が fraction に変更されました。(Ida2db)
- ConstraintLayout 境界線のマージンのサポートが追加されました。(I47ffe)
- ConstraintLayout 内の RTL サポートが修正されました。RTL 非認識型 API が追加されました。(I3b1c7)
- ConstraintLayout 用の新しい DSL が追加されました。詳細については、サンプルをご覧ください。(Icaa9a)
@ExperimentalLayout
アノテーションを追加しました。ConstraintLayout、FlowRow、FlowColumn に、API が変更されることを示すタグが付けられています。(I412a8)- Material Outlined Textfield が追加されました。(I1a518)
TabRow.TabPosition
が位置情報を格納する際、IntPx ではなく、Dp を使用するようになりました。(I34a07、b/158577776)Modifier.ripple
のサポートが終了しました。clickable はデフォルト インジケーションとしてリップルを使用するようになりました(アプリ内で MaterialTheme {} を設定している場合)。そのため、ほとんどのケースでは clickable を使用するだけでリップル インジケーションをコストなしで利用できます。リップルの色 / サイズ / 境界パラメータをカスタマイズする必要がある場合は、RippleIndication を手動で作成して、インジケーション パラメータとして clickable に渡します。(I101cd、b/155375067)- Scaffold API が改良されました。カスタマイズ性を高めるため、一部のパラメータの名前の変更や、新しいパラメータの追加が行われています。Fab、TopBar、BottomBar のサイズをクエリするためのゲッターが追加されています。(I0e7ce)
- ストローク サイズをカスタマイズできるように、CircularProgressIndicator に strokeWidth パラメータが追加されました。LinearProgressIndicator のストローク サイズ(高さ)を変更するには、Modifier.preferredHeight() などのサイズ修飾子を使用します。(Icea16、b/154919081)
GestureScope
とPartialGestureScope
にrelativeOffset(x, y)
が追加されました。これにより、コンポーネントのサイズを基準とする値を持つ Offset インスタンスを生成できるようになります。たとえば、relativeOffset(.1f, .2f)
の場合、x がコンポーネントの幅の 10% で、y がコンポーネントの高さの 20% である Offset インスタンスを意味します。(Ia4bf7、b/158291007)- ダブルタップや長押しを挿入する際、挿入するジェスチャーの継続時間を指定できるようになりました。(I51c97、b/155464717)
コンポーネントの共通座標にアクセスするために、GestureScope と PartialGestureScope にプロパティが追加されました。1 次元プロパティ用の Float(
right
など)と、2 次元プロパティ用の Offset(centerLeft
など)です。1 次元プロパティは次のとおりです。
left
centerX
right
top
centerY
bottom
2 次元プロパティは次のとおりです。 ・
topLeft
・topCenter
・topRight
・centerLeft
・center
(既存。リストを完全にするために記載) ・centerRight
・bottomLeft
・bottomCenter
・bottomRight
使用例:
findByTag("widget") .doGesture { sendSwipe(topLeft, bottomRight) }
(I49ef3、b/158291007) ・マルチタッチ ジェスチャーを実行する際にコンポーネントをテストできるように、マルチタッチ ジェスチャー インジェクション API が追加されました。
ジェスチャーを挿入する際、部分的ジェスチャー メソッドに対してポインタ ID を指定することで、複数のポインタを指定できるようになりました。ポインタ ID が指定されていない場合は、ポインタ 0(デフォルト ポインタ)と見なされます。なお、プレハブ ジェスチャー(sendClick
および sendSwipe
、ならびにそのいずれかをベースとするすべてのメソッド)は、いずれもデフォルト ポインタを使用します。PartialGestureScope 内の以下のメソッドに、ポインタ ID を受け入れるオーバーロードが追加されました。
・sendDown
・sendMoveTo
・sendMoveBy
・sendUp
各アクティブ ポインタ(down 状態のアクティブ ポインタ)の現在の位置の全リストが、各イベント内に格納されるようになりました。上記のメソッドは直ちにイベントを送信します。また、3 つの新しいメソッドが導入されています。
・movePointerTo
・movePointerBy
・sendMove
movePointerTo
と movePointerBy
メソッドは、ポインタの現在の位置を変更しますが、それを反映するイベントは送信しません。そのため、ジェスチャーの現在時刻を進めることもありません。これにより、複数のポインタを同時に移動することができます。最後の sendMove
メソッドは、パラメータを受け入れず、単に move イベントを送信するだけです。これにより、すべてのポインタ移動を「フラッシュ」できます。movePointerXx
を使用してポインタを更新してから、down イベントまたは up イベントを送信した場合、move イベントの直後に down イベントまたは up イベントが送信されます。
また、どのメソッドのタイミングも若干変更されています。今後、sendDown
と sendUp
は、ジェスチャーの時間を進めることがないため、down であるか up であるかを問わず、複数のポインタを同時に送信することができます。他のメソッドはすべて、ジェスチャーの時間を進めます。現在のところ、タイムデルタを変更することはできません。(I9acac、b/157142514)
・範囲内のすべてのアノテーションを返す AnnotatedString.getStringAnnotations
が追加されました。(I1fa00)
バグの修正
- 低レベルのステートレス アニメーション API が導入されました。(I63bf7)
- Recompose composable は、有用な抽象化ではなくなりました。ほとんどの場合、再コンポーズは、MutableState 割り当ての結果として生じます。それ以外の場合は、
invalidate
関数を使用して、現在のスコープの再コンポーズをトリガーすることをおすすめします。(Ifc992) - ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。Px クラス全体が削除されています。(I3ff33)
- ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(Id3434)
- クロスフェードの初期値として null を使用できるようになりました。(Iad6a4、b/155947711)
- ピクセル パラメータに関して Dp とプリミティブ型だけに依存するように大規模なリファクタリングを行う一環として、各種の compose クラス内で Px クラスを使用しないように変更しました。(I19d02)
androidx.ui.foundation.TextFieldValue
とandroidx.ui.input.EditorValue
のサポートが終了しました。このタイプを使用するTextField
、FilledTextField
、CoreTextField
の各 composable もサポートが終了しています。代わりに androidx.ui.input.TextFieldValue を使用してください。(I4066d、b/155211005)- ディスパッチ中にサブコンポーズを通じて PointerInputFilters が削除されるとポインタ入力ディスパッチがクラッシュを引き起こす問題を解決しました。この問題は解決済みです。(I1f48b、b/157998762)
- ディスパッチ中にサブコンポーズを通じて
PointerInputFilters
が削除されるとポインタ入力ディスパッチがクラッシュを引き起こす問題を解決しました。この問題は解決済みです。(Iab398、b/157998762) Radius クラスをインライン クラスにリファクタリングしました。コンパニオン作成メソッドを削除し、関数コンストラクタに置き換えました。この関数コンストラクタは、デフォルト パラメータで、y 軸沿いの半径が、必須の x 軸半径パラメータの半径と一致するようになっています。
DrawScope.drawRoundRect
を更新し、2 つの float 値を使用して x 軸沿いと y 軸沿いの半径を個別に示すのではなく、単一の Radius パラメータを使用するようにしました。(I46d1b)TextField のカーソルが、点滅アニメーションで表示されるようになりました。(Id10a7)
部分的ジェスチャーが、
GestureToken
を順に渡していく必要がなくなりました。(Id7ae5)再コンポーズ時にクラッシュを引き起こす ConstraintLayout バグを修正しました。(Ibee5a、b/158164341)
DropdownMenuItem
に対してonClick
が呼び出されない問題を解決しました。(I3998b、b/157673259)Locale
およびLocaleList
用のパッケージ名をandroidx.ui.text
からandroidx.ui.intl
に変更しました。(I8132c)
バージョン 0.1.0-dev13
2020 年 6 月 10 日
androidx.ui:ui-*:0.1.0-dev13
がリリースされました。バージョン 0.1.0-dev13 に含まれる commit については、こちらをご覧ください。
既知の問題
- アプリが
androidx.core:core-ktx:1.2.0
に依存していて、複数のフォント / フォントの太さを含む FontFamily が使用されている場合、フォント選択が通常のフォントの太さでレンダリングされます。Google はこの問題の解決に取り組んでまいりますが、現時点では回避策としてandroidx.core:core-ktx:1.2.0-alpha01
またはandroidx.core:core-ktx:1.1.0
を使用してください。
バージョン 0.1.0-dev12
2020 年 5 月 27 日
androidx.ui:ui-*:0.1.0-dev12
がリリースされました。バージョン 0.1.0-dev12 に含まれる commit については、こちらをご覧ください。
API の変更
Dp
、Px
、Size
、Position
、Bounds
、PxPosition
、PxSize
、PxBounds
、IntPx
、IntPxSize
、IntPxPosition
、IntPxBounds
、AnimationVector
にanimate()
のサポートを追加しました。(Ib7518、b/156559139)- マテリアル デザインのメニュー実装
ui-material
にDropdownMenu
コンポーネントを追加しました。(I9bb3d、b/135742486) - サポートが終了した
LayoutTag()
を削除しました。代わりに Modifier.tag() を使用してください。(If8044、b/157020665、b/156577646) - サポートが終了した
Modifier.matchParent()
を削除しました。代わりにModifier.matchParentSize()
を使用してください。(If8044、b/157020665、b/156577646) - ピクセル パラメータについて Dp およびプリミティブ タイプのみを使用する大規模なリファクタリングの取り組みの一環として、各種のコンポーズ クラス内の Px クラスの使用を置き換えました。(I57bff、b/156681014)
- Modifier.semantics のサポートが再開され、高レベルのコンポーネントでの使用が可能になりました。(I4cfdc、b/153198273、b/154023028)
DoubleTapGestureFilter
により、ツリー全体でSingleTapGestureFilter
のあいまいさが除去されました。(If92b1、b/147609897、b/148553848、b/138605697、b/148464969)- Alignment API を更新し、絶対アラインメント(RTL コンテキストで自動ミラーリングを行わない)のサポートを追加しました。(I38cd3、b/153633345)
VerticalScroller
は、すぐに利用可能な Column を提供するようになりました。また、HorizontalScroller
は、すぐに利用可能なRow
を提供するようになりました。(Ieca5d、b/157020670)Modifier.indication
が基盤パッケージに追加されました。これを使用して、操作可能なカスタム要素に押下、ドラッグ、その他のインジケーションを表示できます。(I8425f、b/155287131)VerticalScroller
とHorizontalScroller
は、ScrollerPosition
でisReversed
が設定されている場合に逆スクロールをサポートするようになりました。(I953bd、b/155852672)- テキスト レイアウトへの composable の追加がサポートされるようになりました。(I1373c、b/139320966)
- サポートが終了した DrawBackground API が削除され、Modifier の drawBackground 拡張機能 API に置き換えられました。色、ブラシ、ペイントに関する drawBackground 実装をリファクタリングし、コードパスを削減するとともに、コンポジションの一部として Modifier を作成する必要をなくしました。(I0343a、b/155999867)
Modifier.padding(InnerPadding)
が追加されました。(I94985、b/157133803)- Row と Column で、サポートが終了した RowAlign と ColumnAlign を削除しました。(If60d4、b/154524540、b/155858731)
offsetPx
レイアウト修飾子を追加しました。これを使用して、px 単位で(動的)オフセットを定義できます。(I5af57、b/154841615)- SoftwareKeyboardController を使用して、ソフトウェア キーボードの表示 / 非表示を手動で切り替えられるようになりました。(Ifb9d6、b/155427736)
Emphasis.emphasize()
の名前をEmphasis.applyEmphasis()
に変更しました。(Iceebe、b/152874916)- テストでピンチ操作をシミュレートするためのユーティリティを追加しました。(If6c42、b/145593752)
- 使用されている
ui-geometry
モジュールに重複するSize
クラスが存在するため、未使用のSize
クラスを削除しました。(I1b602、b/156546424) AnnotatedString.Item
の名前がAnnotatedString.Range
に変更されました。(I2d44d、b/156126205)Compose のコンパイラにおけるコード生成の仕様を変更しました。変更前の Compose コンパイラでは、コンポーズ可能な関数の呼び出し部分を変換していました。変更後はコンポーズ可能な関数の本文を変換し、呼び出し部分での変換は一部を除いて行いません。
つまり、Compose ランタイムとのロジック上のやり取りは、呼び出し部分ではなく関数本文の開始部分で発生します。
この変更は Compose の使用方法に関わらずソース互換であり、Compose を使用していても通常はコードを更新する必要はありません。
この処理をサポートするため、すべてのコンポーズ可能な関数の JVM の署名が変更されました。コンポーズ可能な関数でパラメータを 1 つ受け取る場合、3 つのパラメータを受け取る関数に変換されます。追加されるパラメータは Composer と「key」整数です。ビットマスク整数として、呼び出しを通じてメタデータを伝達する際に使用されます。
なお、デフォルトの引数がコンポーズ可能な関数に変換されるようになっています。変換時に、関数の合成によるオーバーロードがデフォルトで行われることはないため、定義される関数の数は少なくなります。
今回の変更による確認済みの意図的な動作変更は次のとおりです。
- 一部の呼び出しが、変更前にはスキップされなかった箇所でスキップされる。
- デフォルトの引数を含む式で、コンポーズ可能な式が正しく登録および処理される。
最適化に関しては、次の内容が含まれます。
- パラメータの比較結果が、コールグラフを介して他のコンポーズ可能な関数に伝達される。その結果、実行時の比較処理が減ってスロット テーブルのサイズが小さくなる。また、スキップされるコンポーズ可能な関数が以前よりも増える。
- コンパイル時に「静的」と判断されたパラメータが、実行時に比較または保存されなくなる。その結果、比較処理が減ってスロット テーブルのサイズが小さくなる。
- 関数の本文に制御フロー構造が使用され、生成されるグループの数が最小限に抑えられる。その結果、スロット テーブルのサイズが小さくなり、実行時の処理が減少する。
- 関数に渡される未使用のディスパッチ パラメータとレシーバ パラメータが、関数の本文内で使用されていない場合には、関数のスキップを行うかどうかの判断には用いられない。
互換性を破る変更のほとんどは、コンパイラが直接ターゲットとする API に関するものであり、Compose の一般的な使用には影響しません。
Composer::startExpr
が削除されました。Composer::endExpr
が削除されました。Composer::call
のサポートが終了しました。key
の non-varargs のオーバーロードが削除されました。今後はvararg
バージョンを使用してください。- Pivotal アノテーションのサポートが終了しました。代わりに
key
を使用してください。 - ScopeUpdateScope::updateScope が Function1 ではなく Function3 を想定するように変更されました。
- restartableFunction と restartableFunctionN が追加のコンパイル時パラメータを含むように更新されました。
@Model
アノテーションのサポートが終了
@Model
アノテーションのサポートが終了しました。代わりにstate
とmutableStateOf
を使用してください。このサポート終了は、慎重に検討されたうえで決定されたものです。サポート終了の理由
主な理由を以下に示します。
- API に関する項目と概念について、指南が必要な内容を減らす。
- 他の同等のツールキット(Swift UI、React、Flutter)との連携をより緊密にする。
- サポート終了の判断を取り下げることができる。
@Model
はいつでも元に戻すことができます。 - @Model の設定に関して、以下のようなまれな使用例をなくし、回答の難しい質問が出ないようにする。
@Model
データクラス、等式、ハッシュコードなど。- 一部のプロパティを監視対象とし、その他のプロパティは監視対象としない方法。
- 監視を行う際に使用する構造等価式と参照等価式の指定方法。
- システムへの「過度な期待」を減らす。システムの能力が過信されること(リストの差分取得の方法がすでにあると考えるなど)が少なくなるようにします。
- 監視の粒度をより直感的にする。
- リファクタリングにより、変数をクラスのプロパティにできる可能性を高める。
- State を個別に操作して最適化が行える可能性を高める。
- エコシステムの他の部分との連携をより緊密にし、State が変更不能であることによる曖昧さを軽減する(変更可能な State を活用する)。
移行メモ
@Model
の既存の使用例については、下の 2 つの方法のいずれかに、ほぼすべて容易に変換できます。以下に、2 つのプロパティを含み、コンポーズ可能な関数内で使用される@Model
クラスを例として示します。@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
方法 1:
State<OriginalClass>
を使用してコピーを作成するこのアプローチは、Kotlin のデータクラスを使用することで簡単に実施できます。基本的には、以前のすべての
var
プロパティをデータクラスのval
プロパティにして、remember
ではなくstate
を使用します。そして、データクラスのcopy(...)
コンビニエンス メソッドを使用して、元のクラスのコピーに state の値を割り当てます。このアプローチが機能するのは、
State
インスタンスが作成されたスコープと同じスコープで、クラスに対する変更だけが行われた場合であることに注意してください。スコープ外でクラスの変更が内部的に行われており、その監視に依存している場合は、次のアプローチを使用します。data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
方法 2:
mutableStateOf
とプロパティ委任を使用するこのアプローチは、Kotlin でのプロパティ委任と
mutableStateOf
API を使用することで簡単に実施できます。コンポジションの外部に MutableState インスタンスを作成することが可能です。基本的には、元のクラスのすべてのvar
プロパティを、プロパティ委任としてmutableStateOf
を持つvar
プロパティに置き換えます。このアプローチには、クラスの使用方法の変更が一切なく、クラスの内部実装のみが変更されるという利点があります。ただし、各プロパティが個別に監視および登録されるようになるため、元の例とまったく同じ動作にはなりません。リファクタリング後に再度コンポジションが作成される際には、対象が限定されるという利点もあります。class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8、b/152050010、b/146362815、b/146342522、b/143413369、b/135715219、b/143263925、b/139653744)
バグの修正
- AnnotatedString でフォントの太さとフォント スタイルがネストされると、テキストが正しくレンダリングされないバグを修正しました。(I77a9d、b/155081453)
- CanvasScope の実装を統合し、DrawScope と ContentDrawScope のみとしました。
- CanvasScope の名前を DrawScope に変更しました。
- DrawScope を更新し、Density インターフェースを実装して LayoutDirection を提供するようにしました。
- ContentDrawScope の DrawScope サブクラスを削除しました。
- Painter と PainterModifier が更新され、RTL プロパティ自体が維持されなくなりました(手動で提供しなくても DrawScope によりすでに提供されているため)。(I1798e、b/155918846)
- ピクセル パラメータについて Dp およびプリミティブ タイプのみを使用する大規模なリファクタリングの取り組みの一環として、各種のコンポーズ クラス内の Px クラスの使用を置き換えました。(Iede0b、b/156681014)
バージョン 0.1.0-dev11
2020 年 5 月 14 日
androidx.ui:ui-*:0.1.0-dev11
がリリースされました。バージョン 0.1.0-dev11 に含まれる commit については、こちらをご覧ください。
API の変更
- クロスフェードでオプションの
AnimationBuilder
パラメータを使用して、アニメーションを構成できるようになりました。(I6d6e0) - WithConstraints 後置ラムダ API が変更されました。2 つのパラメータに代わってレシーバ スコープが設けられ、Constraints と LayoutDirection に加え、Dp 単位で指定できる
minWidth
、maxWidth
、minHeight
、maxHeight
プロパティが用意されました。(I91b9a、b/149979702) LayoutModifier2
の名前をLayoutModifier
に変更しました。(Id29f3)- サポートが終了した
LayoutModifier
インターフェースを削除しました。(I2a9d6) HorizontalScroller
とVerticalScroller
が、保存されたインスタンス状態を使用してスクロール位置を復元するようになりました。(Ia0fae、b/155075048)FocusManagerAmbient
が削除されました。フォーカスを取得するにはFocusModifier.requestFocus
を使用してください。(Ic4826)- テーブル レイアウトは、更新された API で再び利用できるようになるまで、一時的に削除されました。(Id88a7)
- Canvas オブジェクトをラップしてステートレスの宣言型描画 API サーフェスを公開する CanvasScope API を作成しました。変換は固有のレシーバ スコープ内に含まれ、サイズ設定情報のスコープも対応するインセット境界に設定されます。描画オペレーションを構成するためにコンシューマが独自の Paint 状態オブジェクトを維持する必要はありません。
- CanvasScopeSample を追加しました。また、デモアプリを更新して、宣言型グラフィックのデモを追加しました。(Ifd86d)
ColoredRect
が削除されました。代わりに、Box
をdrawBackground
修飾子とともに使用してください。(I983c7、b/152753731)- カーソルの色のカスタマイズを
TextField
に追加しました。(I6e33f) onTextInputStarted
コールバックで提供されるSoftwareKeyboardController
を使用して、ソフトウェア キーボードの表示 / 非表示を切り替えられるようになりました。(I8dc44、b/151860051)TextField
で使用されているTextFieldValue
は、次のように使用すると、アクティビティが再作成されても保持できるようになりました: var text bysavedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce、b/155075724)- よく使用されるパラメータを
Text()
に追加しました。現在、Text(style = TextStyle(textAlign = TextAlign.Center))
などの少数のパラメータを渡すローカル テキスト スタイルを作成している場合は、次のようにパラメータを直接指定するだけで済みます:Text(textAlign = TextAlign.Center)
(I82768) - フォーカス サブシステムと統合するために、
CoreTextField/TextField
のfocusIdentifier
パラメータをFocusNode
に置き換えました。(I7ea48) - TextField の更新 - 水平方向のディメンションでは、許可されたすべての使用可能なスペースを占有します(Ib08df、b/154638552)。
- AlignmentLineOffset composable のサポートが終了しました。代わりに relativePaddingFrom() 修飾子を使用してください。CenterAlignmentLine composable が削除されました。(I60107)
- 対応する受信制約が指定されていない場合にのみ、ラップされたレイアウトにサイズ制約を設定する
defaultMinSizeConstraints
レイアウト修飾子を追加しました(最小制約の場合は 0、最大制約の場合は無限大)。(I311ea、b/150460257) Container
が削除されました。代わりにBox
を使用してください。(Ibbc2b、b/151407926)- サポートが終了した
LayoutWidth
/Height
/Size
修飾子を削除しました。(Ib0bc1) - オフセット修飾子のデフォルト パラメータ値を追加しました。(I37f06)
- 対称パディング修飾子を追加しました。(I39840、b/152941819)
- サポートが終了した
LayoutAspectRatio
修飾子を削除しました。(I65a74) - ラップされたレイアウトが反対軸の制約なしで測定される原因となっていた、幅と高さの修飾子のバグを修正しました。(I210b8、b/154797971)
- 無効化されたボタンが視覚面でマテリアル デザイン仕様に従うようになりました。(I47dcb、b/155076924)
FilledTextField
が ime アクション、視覚的変換、キーボード タイプをサポートするようになりました。(I1f9cf、b/155075201)- ストローク サイズをカスタマイズする
strokeWidth
パラメータをCircularProgressIndicator
に追加しました。LinearProgressIndicator
のストローク サイズ(高さ)を変更するには、Modifier.preferredHeight()
または別のサイズ変更子を使用してください。(Icea16、b/154919081) FilledTextField
の末尾のアイコンと先頭のアイコンを操作し、エラー状態を処理するスロット API を追加しました。(Ic12e0)- メソッド
sendDown
、sendMoveTo
、sendMoveBy
、sendUp
、sendCancel
を持つ PartialGestureScope レシーバのdoPartialGesture
アクションを追加しました。(I6b058、b/152477560) - メソッド
sendDown
、sendMove
、sendUp
、sendCancel
をInputDispatcher
に追加し、これらの個々のタッチイベントを 1 つのジェスチャーに結合するGestureToken
を追加しました。(Ibd278、b/152477560) - merge() 関数に委任する TextStyle /ParagraphStyle / SpanStyle 用のプラス演算子を追加しました。(Ia1add)
ui-framework
プロジェクトとui-platform
プロジェクトがui-core
にマージされました。したがって、これらのモジュールへの依存関係はすべて ui-core にのみ依存する必要があります。(/I70067)
バグの修正
- キャンバスを公開するハイレベルの Compose API を更新して、代わりに CanvasScope を公開するようにしました。これにより、ユーザーが独自の Paint オブジェクトを維持管理する必要がなくなります。引き続きキャンバスの利用が必要なユーザーは、drawCanvas 拡張メソッドを使用できます。このメソッドにより、対象のキャンバスに対して Draw コマンドを実行するコールバックが行われます。(I80afd)
- サポートが終了した
LayoutAlign
修飾子を削除しました。(I10877) - テキスト関連のオペレーション用に
Toolbar
を追加しました。(I49d53)
バージョン 0.1.0-dev10
2020 年 4 月 29 日
androidx.ui:ui-*:0.1.0-dev10
がリリースされました。バージョン 0.1.0-dev10 に含まれる commit については、こちらをご覧ください。
API の変更
- API でのすべての null 許容型
Color
の使用が null 値非許容型で置き換えられ、null
ではなくColor.Unset
を使用するようになりました(Iabaa7) Layout
とLayoutModifier2
の組み込み関数にIntrinsicMeasureScope
レシーバを追加しました。これにより、暗黙的に伝播されるレイアウト方向を持つ組み込みクエリ API が提供されます。(Id9945)Layout
とLayoutModifier
の子は、異なるレイアウト方向で測定できます。(Ibd731)- 同じ親レイアウト内の子の描画順序を制御する新しい
Modifier.zIndex()
が追加されました。DrawLayerModifier
の elevation プロパティはshadowElevation
に名前が変更されて、描画順序を制御しなくなりました。DrawShadow
のパラメータの順序が変更されました。最初のパラメータはelevation
に、2 番目のパラメータはshape
になりました。デフォルトはRectangleShape
です。(I20150、b/152417501) Owner
のonSizeChange
とonPositionChange
を削除しました。(I5c718)Constraints2
を追加しました。これは、IntPx
ではなくInt
制約値のみをサポートするConstraints
のコピーです。IntPx
の削除により、すべての整数型の制約が Android のようなピクセルと見なされるようになります。- また、最終的に
IntPxSize
を置き換えるIntSize
を追加しました。(I4b43a)
- また、最終的に
InteractionState
とInteraction
が追加され、押下やドラッグなどの UI の状態の変化に反応するコンポーネントを簡単に作成できるようになりました(Icfe25、b/152525426)。RectangleShape
をandroidx.ui.foundation.shape.*
からandroidx.ui.graphics.*
へ移動しました。(Ia74d5、b/154507984)TextField
API の更新 -onFocus
コールバックとonBlur
コールバックを、ブール値パラメータ(I66cd3)を持つonFocusChange(Boolean)
コールバックに統合しました。FontLoader
を削除しました。代わりにfontResource
を使用してください。(Id0308)- 未使用の
MaskFilter
API は、使用方法が制限され、ほとんどのユースケースでハードウェア アクセラレーション用に最適化されていないため削除されました。(I54f76) - 未設定の
Color
が追加され、色をボックス化せずに未設定の値を表せるようになりました。(If901a) Canvas.rotate
とCanvas.scale
拡張メソッドが追加され、変換にオプションのピボット座標を使用するようになりました。デフォルトでは、現在のキャンバス変換の左上隅になります。- また、
Canvas.rotateRad
が一貫性を保つための拡張メソッドになりました。(Ibaca6)
- また、
- FAB と拡張 FAB の既定色が
MaterialTheme.colors.secondary
に変更されました。(I3b9b9、b/154118816) ComposeTestRule.setContent {}
の後にonIdle()
を明示的に呼び出す必要がなくなりました。(Iafb2e、b/154079800)- カスタムの
ActivityTestRule
をAndroidComposeTestRule
に渡せるようになりました。(I38206、b/153623653) getLineStart
、getLineEnd
、getEllipsisOffset
、getEllipsisCount
をTextLayoutResult
に追加しました。(Ibc801)FontWeight.lerp
は、スナップしなくなりましたが、データクラスのままです。(I521c2)FontWeight
コンストラクタが公開され、データクラスではなくなりました。(Id6b1f)
バグの修正
- 基になる
ImageAsset
のサブセクション描画をサポートする追加オプションの rect パラメータをImagePainter
に導入します。(I0ea9e) - アイテムを削除する際に
AdapterList
でクラッシュする問題を修正しました。(Ic64b0、b/153195921) - ファインダー(findByTag など)が機能するために
ComposeTestRule
の使用が必須になりました。(I75bb9、b/153565271)
バージョン 0.1.0-dev09
2020 年 4 月 15 日
androidx.ui:ui-*:0.1.0-dev09
がリリースされました。バージョン 0.1.0-dev09 に含まれる commit については、こちらをご覧ください。
API の変更
- Alignment を任意の値でインスタンス化できるようになりました。1D Alignment を追加しました。(Ia0c05)
alignToSiblings now accepts a
Measuredinstead of
Placeable`。(I5788d)- (I45f09、b/152842521)
ScaleFit
の名前をContentScale
に変更しました。ContentScale
をui-graphics
からui-core
モジュールに移動し、Alignment API と同じモジュールで動作するようにしました。FillMaxDimension
の名前をCrop
に変更しました。FillMinDimension
の名前をFit
に変更しました。ImageView.ScaleType
の同等の名前と一致するように、Fit
の名前をInside
に変更しました。Crop
とAlignment.Center
の組み合わせでImageView.ScaleType.CENTER_CROP
と同じ結果が得られ、Alignment.Center
とともに使用したFit
でImageView.ScaleType.FIT_CENTER
と同じ結果が得られることを示すドキュメントを追加しました。Alignment.Center
とともにInside
を使用すると、ImageView.ScaleType.CENTER_INSIDE
と同じ結果が得られます。
- 描画修飾子の RTL サポートを追加しました。(I0aaf9)
- XML から Android ビューを拡張する API がリリースされました。詳細については、ViewInCompose のデモをご覧ください。(I42916)
LayoutCoordinates
用にpositionInParent
とboundsInParent
を追加しました。(Icacdd、b/152735784)DrawLayerModifier
とdrawLayer()
でclipToBounds
とclipToOutline
がデフォルトでfalse
になりました。(I0eb8b、b/152810850)LayoutResult
の名前をMeasureResult
に変更しました。(Id8c68)- レイアウト修飾子を定義するための新しい API である
LayoutModifier2
を追加し、LayoutModifier
は非推奨になりました。(If32ac) ProvideContentColor
を削除し、Providers
で直接ContentColorAmbient
を使用するようになりました。(Iee942)- テキストに色パラメータを追加しました。これにより、テキスト スタイルの色をテーマのスタイルに手動で統合する必要がなくなります。(I41a66)
- マテリアル デザイン仕様に従ってシェイプテーマ設定システムを更新しました。ほとんどのコンポーネントで使用できる小、中、大のシェイプを提供できるようにしました。(Ifb4d1)
LayoutDirectionAmbient
は非推奨になりました。ロケールで定義されたレイアウト方向を読み取るには、ConfigurationAmbient
のlocaleLayoutDirection
を使用します。(I851b1)- 新しい
LifecycleOwnerAmbient
が利用できるようになりました。これで、Compose UI で使用している Activity はandroidx.activity.ComponentActivity
(またはAppCompatActivity
)を拡張しなければなりません。android.app.Activity
のsetContent
は非推奨になりました。(IDB25a、b/153141084) - ポップアップ対応 RTL。(Ib6657)
ClipboardManager
を追加しました。(I1dd2b)- ConstraintLayout の子のサイズをカスタマイズするためのサポートを追加しました。(Idb1a5)
OnChildPositioned
を削除しました。デベロッパーはModifier.onChildPositioned
修飾子を使用する必要があります。(I5ade7、b/151141173、b/151641453、b/151818355)toFrameworkRect
とtoFrameworkRectF
の名前をそれぞれtoAndroidRect
とtoAndroidRectF
に変更し、compose とその上に構築されている Android フレームワーク API 間のオブジェクト変換の命名規則に準拠させました。これらの API に関するドキュメントも更新しました。(I86337)EdgeInsets
の名前をInnerPadding
に変更しました。Material Button の innerPadding パラメータの名前を余白サイズに変更しました。(I66165)- 固有の測定値に対するサイズ変更の修飾子を追加し、この目的のためのコンポーネントを非推奨にしました。(I8295d)
- 非推奨の
Wrap
とCenter
の composable を削除しました。(I29e23) - スライダーがステートレスになりました。他のコントロールと同様に、ユーザー自身が状態を渡して更新する必要があります。(Ia00aa)
StaticDrawer
を削除しました。必要な場合は、マテリアル指定の幅のBox
を使用してください。(I244a7)- 修飾子パラメータを ListItem に追加し、後置ラムダ本体がもっと上に表示されるようにパラメータを並べ替えました。(I66e21)
Typography
にdefaultFontFamily
コンストラクタ パラメータを追加しました。これにより、ファミリー セットのない指定された TextStyle に使用されるデフォルトのフォント ファミリーを指定できます。(I89d07)- API サーフェスから Material Data Table を一時的に削除しました。(Iaea61)
Divider
composable のパラメータの名前を変更しました。(Ic4373)- 多くの Material コンポーネントの名前で「子」の末尾パラメータの名前が変更されました。名前付きパラメータで使用したあとは、新しい名前を使用してください(あるいは末尾のラムダ構文を使用してください)。(Ia6d19)
MaterialTheme.emphasisLevels
を削除し、EmphasisAmbient.current
を使用して強調レベルを取得するようにしました。(Ib5e40)savedInstanceState()
で null 許容型を使用できるようになりました。(I6847f、b/153532190)ui-rxjava2
(RxJava2 のアダプターを含む新しいアーティファクト)を追加しました。(Ifab4b、b/153369097)- 使用例:
val value by observable.subscribeAsState()
ui-livedata
(Live Data 用アダプターを含む新しいアーティファクト)を追加しました。(Ie9e8c、b/150465596)- 使用例:
val value by liveData.observeAsState()
バグの修正
verticalGravity
パラメータとhorizontalGravity
パラメータをそれぞれRow
とColumn
に追加しました。(I7dc5a)ui-text module was renamed as
ui-text-core`(I57dec)DrawModifier
API を改良しました。(Ibaced、b/152919067)draw()
ContentDrawScope
のレシーバ スコープを作成しました。draw()
のすべてのパラメータを削除しました。DrawScope
のインターフェースは以前のCanvasScope
と同じです。ContentDrawScope
にdrawContent()
メソッドを追加しました。
runOnIdleCompose
とrunOnUiThread
がComposeTestRule
のメソッドではなくグローバル関数になりました。(Icbe8f)- (変更可能)State プロパティのデリゲート演算子を Kotlin 1.4 プロパティの委任最適化をサポートするために拡張に移動しました。
by state { ... }
またはby mutableStateOf(...)
を引き続き使用するには、呼び出し元はインポートを追加する必要があります。(I5312c) ColoredRect
が非推奨になりました。代わりにBox(Modifier.preferredSize(width, height).drawBackground(color))
を使用してください。(I499fa、b/152753731)activity.setContent { }
ブロックの中に配置した最初のレイアウトの測定方法を変更しました。以前は、アクティビティ画面全体を表示していましたが、レイアウトを Stack の中に配置するようにしました。画面よりも小さくすることができ、画面の左上に配置されます。以前の動作が必要な場合は、レイアウトに Modifier.fillMaxSize() を適用できます。(Ie88a7、b/153453714)ui-text-compose
モジュールの名前をui-text
に変更しました。ui-text
にCoreText
とCoreTextField
の composables を追加しました。(Ib7d47)ui-framework/CoreText
、CoreTextField
の composable をui-text-compose
の下に移動しました。プロジェクトにui-text-compose
を含めることをおすすめします。(I32042)Alignment
ではなく垂直方向または水平方向のAlignment
を受け入れるように、wrapContentWidth
とwrapContentHeight
を更新しました。垂直方向または水平方向のAlignment
を受け入れるように、重力修飾子を更新しました。カスタムの連続Alignment
をサポートすることを目的としてRow
、Column
、Stack
を更新しました。(Ib0728)ImageAsset
からのピクセル情報の問い合わせをサポートするためにPixelMap
API を追加しました。(I69ad6)- 塗りつぶしテキスト フィールドの Material Design の実装を追加しました。(Ic75cd)
- androidx ポリシーに合わせて、
ui-android-text
パッケージ名(androidx.text
)をandroidx.ui.text.platform
に置き換えました。(I42711)
バージョン 0.1.0-dev08
2020 年 4 月 1 日
androidx.ui:ui-*:0.1.0-dev08
がリリースされました。バージョン 0.1.0-dev08 に含まれる commit については、こちらをご覧ください。
API の変更
- 特定のレイヤに対する描画コマンドの表示リストをオフセットできるように、translationX/Y プロパティを追加しました。これは、アニメーションやタッチイベントに応答してコンテンツを移動する場合に便利です。(I8641c)
- レイヤ上の特定のポイントを中心とした回転とスケーリングをサポートするために、
pivotX
パラメータとpivotY
パラメータをレイヤ API に追加しました。(Icf7c3) - Draggable を修飾子に移動しました。(ID9b16、b/151959544)
Text
をandroidx.ui.core
からandroidx.ui.foundation
パッケージに移動しました。(I87ce5)- Checkbox、Switch、Toggleable に
enabled
パラメータを追加しました。(I41c16)。 - リップルを Modifier に変更しました。Clickable はまだ変換されていませんが、推奨される使用法は
Clickable(onClick = { ... }, modifier = ripple())
です。(Ie5200、b/151331852、b/150060763) - ベクター グラフィック用の既存のサブコンポジション API を置き換えるために、VectorPainter API を追加しました。サブコンポジションは、DrawModifier ではなく、VectorPainter オブジェクトになります。
- 以前の DrawVector composable は非推奨になり、VectorPainter に置き換わりました。
Image(Painter)
API の名前をPaintBox(Painter)
に変更しました。ImageAsset
の代わりにVectorAsset
を使用する以外はImage
のように動作するVector
composable を作成しました。(I9af9a)(b/149030271)
ParentData
composable は非推奨になりました。ParentDataModifier
インターフェースを実装する修飾子を作成するか、測定ブロック内で認識するためにレイアウトの子にタグを付ける必要がある場合は、LayoutTag
修飾子を使用します。(I51368、b/150953183)OnPositioned
を削除して、onPositioned
修飾子に置き換えました(I2ea3c)RowScope
とColumnScope
のメンバーにRow
とColumn
の外部からアクセスできるようになりました。(I3a641)Container
は非推奨になりました。代わりにBox
を使用してください。(I675ce、b/151407926)FloatingActionButton
API をリファクタリングして、プリミティブではなくコンポーズ可能なラムダを受け入れるようにしました。使用方法については、最新のサンプルをご覧ください。(I00622)- 新しい関数:
savedInstanceState()
とrememberSavedInstanceState()
。これらはstate()
やremember()
に似ていますが、保存されたインスタンスの状態のサポートが組み込まれています。(If1987、b/152025209)
バグの修正
- 修飾子と演算子を工場出荷時の拡張機能に置き換えました。(I225e4)
- Center composable は非推奨になりました。これは、
LayoutSize.Fill
+LayoutAlign.Center
修飾子、または適切な修飾子が適用されたBox
またはStack
の composable で置き換える必要があります。(Idf5e0) MaterialTheme.colors()
、MaterialTheme.typography()
などのMaterialTheme
API を関数ではなくプロパティに変更しました。既存の呼び出しからかっこを削除しました(動作上の変更はありません)。(I3565a)
バージョン 0.1.0-dev07
2020 年 3 月 18 日
androidx.ui:ui-*:0.1.0-dev07
がリリースされました。バージョン 0.1.0-dev07 に含まれる commit については、こちらをご覧ください。
API の変更
- ManualAnimationClock への API の追加:
hasObservers: Boolean
とコンストラクタ パラメータdispatchOnSubscribe: Boolean
(Iaa134) - OnPositionedModifier と OnChildPositionedModifier を追加して、OnPositioned と OnChildPositioned のコンポーズ可能な関数を置き換えました。(I2ec8f)
- レイアウトの RenderNode を追加するための修飾子である LayerModifier を追加しました。クリッピング、不透明度、回転、スケーリング、シャドウを設定できます。これにより、RePaintBoundary が置き換えられます。(I7100d、b/150774014)
- レイアウトの方向を親レイアウト ノードから子レイアウト ノードに伝えるようにしました。レイアウト方向修飾子を追加しました。(I3d955)
- 指定された ImageAsset を画面に描画するほか、サイズ変更やレイアウトを処理するイメージ composable を作成しました。この composable は、固有のサイズを基準として任意の Painter インスタンスを描画することと同様に、特定の固定サイズまたは最小サイズもサポートしています。(Ibcc8f)
- イメージの名前を ImageAsset に変更して、レイアウトへの参加やコンテンツの描画に使用されたイメージ データと予定されているイメージ composable の違いを見分けます。(Id5bbd)
android.graphics.Bitmap
、Bitmap.asImageAsset()
の拡張メソッドを作成して、従来の Android アプリケーション開発と compose フレームワークの組み合わせに便利な ImageAsset のインスタンスを作成しました。(Id5bbd)androidx.compose.ViewComposer
をandroidx.ui.node.UiComposer
に、androidx.compose.Compose.subcomposeInto
をandroidx.ui.core.subcomposeInto
に移動しました。(Idef00)- 子の varargs を受け入れる Layout Composable 関数を削除しました。(I8f7f6)
WithConstraints
がLayoutDirection
パラメータを取得しました。(I6d6f7)- レイアウト位置をオフセットするための LayoutOffset 修飾子を追加しました。(I0b8a3)
- サーフェスとカードを
androidx.ui.material.surface
からandroidx.ui.material
に移動しました。(I88a6d)(b/150863888)
バグの修正
- LayoutFlexible の名前を LayoutWeight に変更しました。このパラメータを補うために tight パラメータの名前を変更しました。(If4738)
- 不透明度の composable 関数を drawOpaity 修飾子に置き換えました。(I5fb62)
- AndroidComposeTestRule を使用するテストでは、構成のルートにアニメーション クロックが提供され、手動での一時停止、再開、詳細設定が可能になりました。(Id54c5)
- RepaintBoundary を削除して DrawLayerModifier に置き換えました。(I00aa4)
- Button、FloatingActionButton、Clickable に個別の
enabled
パラメータを追加しました。Button の一部のパラメータの名前と順序を変更しました。(I54b5a) - DrawVector は、通常の composable 関数から、レイアウトの背景としてベクトルを描画する Modifier drawVector() を返すように変更されました。(I7b8e0)
- composable 関数 Clip を修飾子 drawClip() に置き換えます。DrawClipToBounds は、四角形のレイヤ境界にクリップするだけの場合に便利な修飾子です。(If28eb)
- DrawShadow の composable 関数を drawShadow() 修飾子に置き換えました。シャドウを、LayerModifier の一部として描画するようにしました。(I7112a)
- Wrap composable は非推奨になりました。これは、LayoutAlign 修飾子または Stack composable で置き換えることができます。(Ib237f)
- 新しく作成された Modifier に複数の Modifier インスタンス間で共有できる元の Painter への参照があるため、Painter.toModifier の名前を Painter.asModifier に変更しました。(I7195b)
- LayoutPadding の負の余白サイズを禁止するようにしました。負の位置オフセットには LayoutOffset を使用してください。(Ifb5b1)
バージョン 0.1.0-dev06
2020 年 3 月 4 日
androidx.ui:ui-*:0.1.0-dev06
がリリースされました。バージョン 0.1.0-dev06 に含まれる commit については、こちらをご覧ください。
API の変更
- Stack コンポーネントが右から左への方向性をサポートするようになりました。(Ic9e00)
- Compose レイアウトでの RTL の初期サポート。(Ia5519)
- Icon、IconButton、IconToggleButton を追加し、AppBarIcon を削除しました。AppBarIcon の既存の用法を IconButton に直接置き換えることにより、正しいタッチ ターゲットを追加できます。使用法についてはサンプルをご覧ください。また、これらのコンポーネントで直接使用できる、マテリアル アイコンのアイコンをご覧ください。(I96849)
- String パラメータを使用する Snackbar API を削除し、コンポーズ可能なラムダを受け入れるオーバーロードを使用するようにしました。使用方法については、更新済みのサンプルをご覧ください。(I55f80)
text
とicon
のラムダを受け入れるように Tab API をリファクタリングしました。(Ia057e)- BottomNavigation コンポーネントを追加しました。使用方法については、ドキュメントとサンプルをご覧ください。(I731a0)
- カスタム セマンティクス アクションの呼び出しのためのサポートを追加しました。(I8c818)
バグの修正
- LayoutPadding 修飾子で右から左方向をサポートするようになりました。(I9e8da)
バージョン 0.1.0-dev05
2020 年 2 月 19 日
androidx.ui:ui-*:0.1.0-dev05
がリリースされました。バージョン 0.1.0-dev05 に含まれる commit については、こちらをご覧ください。
API の変更
- Painter API を追加しました。指定された領域にコンテンツの描画を抽象化する API を作成しました。これは Drawable API と同様に動作しますが、よりシンプルな API サーフェスを提供します。さらに、alpha などのさまざまな効果を適用し、任意の描画実装に対して ColorFilter を適用する汎用的な実装もあります。実装自体の機能により、これらの機能に対してより最適化されたサポートが提供されます。(aosp/1214802)
- アンビエント API を大幅に変更しました。詳細については、ログと
Ambient<T>
のドキュメントをご覧ください。(I4c7ee、b/143769776) - LayoutCoordinates を変更して providedAlignmentLines を Map ではなく Set にし、LayoutCoordinates が値を取得するために
get()
演算子を実装するようにしました。これにより、修飾子ごとに新しいコレクションを作成しなくても、複数の修飾子で一連の値を変更しやすくなります。(I0245a) - LayoutCoordinates に位置プロパティがなくなりました。LayoutModifier、回転、スケーリングを考慮すると、位置プロパティは妥当ではありません。その代わり、デベロッパーは parentCoordinates と
childToLocal()
を使用して、1 つの LayoutCoordinate から別の LayoutCoordinate への変換を計算する必要があります。 - LayoutCoordinates では、サイズ プロパティに PxSize ではなく
IntPxSize
を使用します。レイアウトでは整数のピクセルサイズを使用するため、すべてのレイアウト サイズで浮動小数点値ではなく整数を使用する必要があります。(I9367b) - AdapterList を追加しました。これは、表示されるアイテムのみを作成して配置するスクロール リスト コンポーネントです。現在の既知の問題は、垂直方向のみであること、子への変更のすべてのケースを完全に処理できないことなどです。(Ib351b)
- Compose 内に Android ビューを埋め込むための初期サポートを追加しました。詳細については、ViewInCompose.kt のデモをご覧ください。(I6d1ce)
- LayoutAlign が空き容量を占有しないように更新しました。(I2b14f)
androidx.ui:ui-material-icons-core
モジュールとandroidx.ui:ui-material-icons-extended
モジュールを追加しました。androidx.ui:ui-material-icons-extended
を使用すると、Compose 内からすべてのマテリアル アイコン(material.io/icons)を直接使用できます。最もよく使われるアイコンを含む小さなサブセット(現在は 3 つですが将来的には拡張される予定です)がメインの UI マテリアル ライブラリの一部として直接追加されます。Menu のようなアイコンを使うためにこの大きな依存関係を追加する必要はありません。詳細については、androidx.ui.material.icons.Icons
のドキュメントとリンク先のサンプルをご覧ください。- AspectRatio composable を削除し、修飾子を使用するようにしました。廃止された FlexColumn、FlexRow composable、Spacing 修飾子を削除しました。(Iec8a7)
- ButtonStyle を別の関数に置き換え、テキスト(文字列)オーバーロードを削除しました。使用方法については、更新済みの Button サンプルをご覧ください。(If63ab、b/146478620、b/146482131)
バグの修正
- Density と DensityScope が 1 つのインターフェースに統合されました。ambientDensity() ではなく、DensityAmbient.current を使用できるようになりました。withDensity(density)ではなく、with(density)だけになりました。(I11cb1)
既知の問題
- コンポーネントのセマンティック プロパティを誤って変更すると、子のすべての状態が失われ、アニメーションの破損や、再構成間で状態が持続することに起因するあらゆる問題が発生します。ラムダは現在比較できないため、
remember
されていないラムダ(Scroller など)を使用してセマンティック操作を定義するコンポーネントも含まれます。この問題は次のリリースで修正される予定です。(b/148606417)
バージョン 0.1.0-dev04
2020 年 1 月 29 日
androidx.ui:ui-*:0.1.0-dev04
がリリースされました。このバージョンに含まれる commit は、こちらで確認できます。
API の変更
- ポインタ ID が普遍的に一意になりました。(I42cde)
- セマンティクス ノードのマージ。(aosp/1138236)
- Constraints の API サーフェスの改善。(I0fd15)
PathParser
およびPathNode
/PathCommand
がリファクタリングされました。(I715ae)- DpConstraints の API サーフェスの更新。(I712a0)
- 複数のインターフェースを実装する修飾子のサポートが追加されました。(I22c16)
- ジェスチャー検出器の残りの部分のキャンセルが実装されました。(I349f4)
- カラーに
Color.compositeOver()
が追加されました。(I5379d) androidx.ui:ui-core
のいくつかの不要なクラスが削除されました:ImageByteFormat
、ImageRepeat
、Matrix2
(I45e6b)- Compose プロジェクトでの増分 Kotlin コンパイルが可能になりました。(b/144304390)
- 修飾子と
+
の連結(Ic33d3) - LayoutTag 修飾子が追加されました。(I69fe4)
- ParagraphStyle 属性を TextStyle に追加(If0d40)
- DrawModifier が追加されました。これは変更されたレイアウトのサーフェスに描画できる修飾子タイプです。(I5fa56)
- 修飾子の格納位置を相対位置に変更(I5977f)
- 要素でスワイプを実行するためのテスト API が追加されました。(I9125a)
- レイアウトを結合して共通機能を描画するための Box コンポーネントが追加されました。(I6e2a7)
- スクローラーが Android のネイティブ フリング モーション動作を示すようになりました。(b/147493715)
- DrawBorder が Border 修飾子に置き換えられました。(Id335a)
- スクローラーのジェスチャー検出が改善されました。(I87d36)
- contentColor メタデータを基盤に追加(Icd074)
- Scaffold マテリアル コンポーネントが追加されました。Scaffold は基本的なマテリアル デザインの視覚レイアウト構造を実装します。(I7731b)
- ボタンで新しいサーフェスのパラメータ contentColor を使用(b/146210556)
textStyle.withOpacity()
が削除されました。(I8cc9a)- Emphasis サブシステムの追加(Ife95c)
FloatingActionButtonKt
FAB プロパティが非公開になりました。(I9c121)- Snackbar の最初の繰り返しが実装されました。(If1c08)
- ダークテーマの初期サポートが追加されました。(I6323a)
GestureScope
に size、center、localToGlobal が追加されました。(I1ea37)- ダブルクリック ジェスチャーの挿入用 API の追加(I44902)
sendLongClick methods
がGestureScope
に追加されました。(Ic7db9)- ジェスチャー挿入で (x, y) を
PxPosition
に変換(Ifefa4) - 挿入されたジェスチャーに望ましい速度が追加されました。(I3b9df)
- Compose Test API(
androidx.ui:ui-test
)にビットマップのキャプチャが追加されました。(I4e36c) doClick
がGestureScope
に移動されました。(I56211)findBySubstring
および対応するフィルタがFindersKt
に追加されました。(Ief0b9)- テキスト選択境界が 1 文字にリファクタリングされました。(Iff757)
- TextSpan が削除されました。(Iebece)
- Composition クラスを削除して Composer 基本クラスに置き換え(Ieadbf)
- ベクターの defaultWidth と defaultHeight が Dp を使用するように変更されました。(Iad267)
- コンポーズ可能なインライン呼び出しに関連するグループを適切に生成(Ibf739)
- ジェスチャー検出器でフラグのプロトタイピングが可能になりました。(I4b7b0)
- maxLines および ellipsis 引数を Nullable から非 Null に変更(I46dac)
- AnnotatedString が SpanStyle を使用するようになりました。(Ib6d3e)
- WithConstraints の修飾子のサポートが追加されました。(b/145399789)
- 段落スタイルを TextDelegate に受け渡し(Id2d4a)
SpanStyle
クラスが追加されました。(Ifdb4f)TextGeometricTransform
で Nullable の Float の代わりにデフォルト値を使用(I1bf00)PreviewActivity
がandroidx.ui:ui-tooling
に追加されました。(Ic8988)ModelObserver
がシングルスレッド化されました。(b/146144712)- ModelObserver 用のベンチマークが追加されました。(Ia176b)
- PointerInputNode がツリーから削除されたときのキャンセル コールバック呼び出し。(I7112a)
- 行と列の LayoutInflexible 修飾子が削除されました。(I0d820)
ParentDataModifier
からレイアウト修飾子を継承。(I49b6a)- Wrapped 修飾子が追加されました。(I6f8df)
- Aligned 修飾子が追加されました。(Ifc581)
- Constraint レイアウトが Compose に追加されました。(I175ad)
リファクタリング