In Compose für Wear OS von Material 2.5 zu Material 3 migrieren

Material 3 Expressive ist die nächste Weiterentwicklung von Material Design. Dazu gehören aktualisierte Themen, Komponenten und Personalisierungsfunktionen wie dynamische Farben.

In diesem Leitfaden geht es hauptsächlich um die Migration von der Jetpack-Bibliothek Wear Compose Material 2.5 (androidx.wear.compose) zur Jetpack-Bibliothek Wear Compose Material 3 (androidx.wear.compose.material3) für Apps.

Ansätze

Folgen Sie beim Migrieren Ihres App-Codes von M2.5 zu M3 demselben Ansatz, der in der Anleitung zum Migrieren von Material Design auf Smartphones beschrieben wird, insbesondere:

Abhängigkeiten

M3 hat ein separates Paket und eine separate Version als M2.5:

M2.5

implementation("androidx.wear.compose:compose-material:1.4.0")

M3

implementation("androidx.wear.compose:compose-material3:1.5.0-beta01")

Die neuesten M3-Versionen finden Sie auf der Seite mit den Wear Compose Material 3-Releases.

Die Wear Compose Foundation-Bibliothek Version 1.5.0-beta01 enthält einige neue Komponenten, die für die Verwendung mit Material 3-Komponenten entwickelt wurden. Ebenso hat SwipeDismissableNavHost aus der Wear Compose Navigation Library eine aktualisierte Animation, wenn sie unter Wear OS 6 (API-Level 36) oder höher ausgeführt wird. Wenn Sie auf die Material 3-Version von Wear Compose aktualisieren, empfehlen wir Ihnen, auch die Wear Compose Foundation- und Navigationsbibliotheken zu aktualisieren:

implementation("androidx.wear.compose:compose-foundation:1.5.0-beta01")
implementation("androidx.wear.compose:compose-navigation:1.5.0-beta01")

Designs

Sowohl in M2.5 als auch in M3 heißt das Theme-Composeable MaterialTheme, aber die Importpakete und ‑parameter unterscheiden sich. In M3 wurde der Parameter Colors in ColorScheme umbenannt und MotionScheme wurde für die Implementierung von Übergängen eingeführt.

M2.5

import androidx.wear.compose.material.MaterialTheme

MaterialTheme(
        colors = AppColors,
        typography = AppTypography,
        shapes = AppShapes,
        content = content
)

M3

import androidx.wear.compose.material3.MaterialTheme

MaterialTheme(
        colorScheme = AppColorScheme,
        typography = AppTypography,
        shapes = AppShapes,
        motionScheme = AppMotionScheme,
        content = content
)

Farbe

Das Farbsystem in M3 unterscheidet sich deutlich von M2.5. Die Anzahl der Farbparameter hat zugenommen, sie haben unterschiedliche Namen und werden unterschiedlich auf M3-Komponenten zugeordnet. In Compose gilt dies für die M2.5-Klasse Colors, die M3-Klasse ColorScheme und zugehörige Funktionen:

M2.5

import androidx.wear.compose.material.Colors

val appColorScheme: Colors = Colors(
   // M2.5 Color parameters
)

M3

import androidx.wear.compose.material3.ColorScheme

val appColorScheme: ColorScheme = ColorScheme(
   // M3 ColorScheme parameters
)

In der folgenden Tabelle werden die wichtigsten Unterschiede zwischen M2.5 und M3 beschrieben:

M2.5

M3

Color

wurde in ColorScheme umbenannt

13 Farben

28 Farben

neue dynamische Farbthemen

Neue Tertiärfarben für mehr Ausdruck

Dynamisches Farbdesign

Eine neue Funktion in M3 ist die dynamische Farbthemengestaltung. Wenn Nutzer die Farben des Zifferblatts ändern, ändern sich die Farben auf der Benutzeroberfläche entsprechend.

Verwenden Sie die Funktion dynamicColorScheme, um ein dynamisches Farbschema zu implementieren, und geben Sie defaultColorScheme als Fallback an, falls das dynamische Farbschema nicht verfügbar ist.

@Composable
fun myApp() {
  val myColorScheme = myBrandColors()
  val dynamicColorScheme = dynamicColorScheme(LocalContext.current)
  MaterialTheme(colorScheme = dynamicColorScheme ?: myBrandColors) {...}
}

Typografie

Das Typografiesystem in M3 unterscheidet sich von M2 und umfasst die folgenden Funktionen:

  • Neun neue Textstile
  • Flex-Schriftarten, mit denen sich die Schriftskalierung für unterschiedliche Stärken, Breiten und Rundungen anpassen lässt
  • AnimatedText, bei dem Flex-Schriftarten verwendet werden

M2.5

import androidx.wear.compose.material.Typography

val Typography = Typography(
   // M2.5 TextStyle parameters
)

M3

import androidx.wear.compose.material3.Typography

val Typography = Typography(
   // M3 TextStyle parameters
)

Flex-Schriftarten

Mit Flex-Schriftarten können Designer die Schriftbreite und -stärke für bestimmte Größen angeben.

Textstile

In M3 sind die folgenden TextStyles verfügbar. Diese werden standardmäßig von verschiedenen M3-Komponenten verwendet.

Typografie

TextStyle

Anzeige

displayLarge, displayMedium, displaySmall

Überschrift

titleLarge, titleMedium, titleSmall

Label

labelLarge, labelMedium, labelSmall

Text

bodyLarge, bodyMedium, bodySmall, bodyExtraSmall

Ziffern

numeralExtraLarge, numeralLarge, numeralMedium, numeralSmall, numeralExtraSmall

Bogen

arcLarge, arcMedium, arcSmall

Form

Das Formsystem in M3 unterscheidet sich von dem in M2. Die Anzahl der Formparameter hat zugenommen, sie haben unterschiedliche Namen und werden unterschiedlich auf M3-Komponenten zugeordnet. Folgende Formen sind verfügbar:

  • Extra klein
  • Klein
  • Mittel
  • Groß
  • Extra groß

In Compose gilt dies für die M2-Klasse Shapes und die M3-Klasse Shapes:

M2.5

import androidx.wear.compose.material.Shapes

val Shapes = Shapes(
   // M2.5 Shapes parameters
)

M3

import androidx.wear.compose.material3.Shapes

val Shapes = Shapes(
   // M3 Shapes parameters
)

Verwenden Sie die Parameterzuordnung für Formen aus In Compose von Material 2 zu Material 3 migrieren als Ausgangspunkt.

Form-Morphing

In M3 wird Shape Morphing eingeführt: Formen verformen sich jetzt als Reaktion auf Interaktionen.

Das Form-Morphing-Verhalten ist als Variante für eine Reihe von runden Schaltflächen verfügbar (siehe unten):

Tasten

Form-Morphing-Funktion

IconButton

Mit IconButtonDefaults.animatedShape() wird die Symbolschaltfläche beim Drücken animiert.

IconToggleButton

IconToggleButtonDefaults.animatedShape() animiert die Symbol-Ein/Aus-Schaltfläche beim Drücken und

IconToggleButtonDefaults.variantAnimatedShapes() animiert die Ein/Aus-Schaltfläche für Symbole beim Drücken und Aktivieren/Deaktivieren.

TextButton

Mit TextButtonDefaults.animatedShape() wird die Textschaltfläche beim Drücken animiert.

TextToggleButton

Mit TextToggleButtonDefaults.animatedShapes() wird die Textschaltfläche beim Drücken animiert. Mit TextToggleButtonDefaults.variantAnimatedShapes() wird die Textschaltfläche beim Drücken und Markieren/Entfernen des Häkchens animiert.

Komponenten und Layout

Die meisten Komponenten und Layouts aus M2.5 sind in M3 verfügbar. Einige M3-Komponenten und -Layouts gab es jedoch nicht in M2.5. Außerdem gibt es bei einigen M3-Komponenten mehr Varianten als bei den entsprechenden M2.5-Komponenten.

Für einige Komponenten sind spezielle Überlegungen erforderlich. Als Ausgangspunkt empfehlen wir die folgenden Funktionszuordnungen:

Material 2.5

Material 3

androidx.wear.compose.material.dialog.Alert

androidx.wear.compose.material3.AlertDialog

androidx.wear.compose.material.Button

androidx.wear.compose.material3.IconButton oder androidx.wear.compose.material3.TextButton

androidx.wear.compose.material.Card

androidx.wear.compose.material3.Card

androidx.wear.compose.material.TitleCard

androidx.wear.compose.material3.TitleCard

androidx.wear.compose.material.AppCard

androidx.wear.compose.material3.AppCard

androidx.wear.compose.material.Checkbox

Kein M3-Äquivalent. Migrieren Sie zu androidx.wear.compose.material3.CheckboxButton oder androidx.wear.compose.material3.SplitCheckboxButton.

androidx.wear.compose.material.Chip

androidx.wear.compose.material3.Button oder
androidx.wear.compose.material3.OutlinedButton oder
androidx.wear.compose.material3.FilledTonalButton oder
androidx.wear.compose.material3.ChildButton

androidx.wear.compose.material.CompactChip

androidx.wear.compose.material3.CompactButton

androidx.wear.compose.material.InlineSlider

androidx.wear.compose.material3.Slider

androidx.wear.compose.material.LocalContentAlpha

Wurde entfernt, da es in Material 3 nicht von Text oder Icon verwendet wird

androidx.wear.compose.material.PositionIndicator

androidx.wear.compose.material3.ScrollIndicator

androidx.wear.compose.material.RadioButton

Kein M3-Äquivalent. Migrieren Sie zu androidx.wear.compose.material3.RadioButton oder androidx.wear.compose.material3.SplitRadioButton.

androidx.wear.compose.material.SwipeToRevealCard

androidx.wear.compose.material3.SwipeToReveal

androidx.wear.compose.material.SwipeToRevealChip

androidx.wear.compose.material3.SwipeToReveal

android.wear.compose.material.Scaffold

androidx.wear.compose material3.AppScaffold und androidx.wear.compose.material3.ScreenScaffold

androidx.wear.compose.material.SplitToggleChip

Kein M3-Äquivalent. Migrieren Sie zu androidx.wear.compose.material3.SplitCheckboxButton, androidx.wear.compose.material3.SplitSwitchButton oder androidx.wear.compose.material3.SplitRadioButton.

androidx.wear.compose.material.Switch

Kein M3-Äquivalent. Migrieren Sie zu androidx.wear.compose.material3.SwitchButton oder androidx.wear.compose.material3.SplitSwitchButton.

androidx.wear.compose.material.ToggleButton

androidx.wear.compose.material3.IconToggleButton oder androidx.wear.compose.material3.TextToggleButton

androidx.wear.compose.material.ToggleChip

androidx.wear.compose.material3.CheckboxButton oder
androidx.wear.compose.material3.RadioButton oder
androidx.wear.compose.material3.SwitchButton

androidx.wear.compose.material.Vignette

Entfernt, da nicht im expressiven Design von Material 3 für Wear OS enthalten

Hier finden Sie eine vollständige Liste aller Material 3-Komponenten:

Material 3

Äquivalente Komponente für Material 2.5 (falls nicht neu in M3)

androidx.wear.compose.material3.AlertDialog

androidx.wear.compose.material.dialog.Alert

androix.wear.compose.material3.AnimatedPage

Neu

androidx.wear.compose.material3.AnimatedText

Neu

androidx.wear.compose material3.AppScaffold

android.wear.compose.material.Scaffold (mit androidx.wear.compose.material3.ScreenScaffold)

androidx.wear.compose.material3.Button

androidx.wear.compose.material.Chip

androidx.wear.compose.material3.ButtonGroup

Neu

androidx.wear.compose.material3.Card

androidx.wear.compose.material.Card

androidx.wear.compose.material3.CheckboxButton

androidx.wear.compose.material.ToggleChip mit einem Kästchen für die Ein-/Aus-Steuerung

androidx.wear.compose.material3.ChildButton

androidx.wear.compose.material.Chip (nur, wenn kein Hintergrund erforderlich ist)

androidx.wear.compose.material3.CircularProgressIndicator

androidx.wear.compose.material.CircularProgressIndicator

androidx.wear.compose.material3.CompactButton

androidx.wear.compose.material.CompactChip

androidx.wear.compose.material3.ConfirmationDialog

androidx.wear.compose.material.dialog.Confirmation

androidx.wear.compose.material3.curvedText

androidx.wear.compose.material.curvedText

androidx.wear.compose.material3.DatePicker

Neu

androidx.wear.compose.material3.Dialog

androidx.wear.compose.material.dialog.Dialog

androidx.wear.compose.material3.EdgeButton

Neu

androidx.wear.compose.material3.FadingExpandingLabel

Neu

androidx.wear.compose.material3.FilledTonalButton

androidx.wear.compose.material.Chip, wenn ein farblich abgestimmter Schaltflächenhintergrund erforderlich ist

androidx.wear.compose.material3.HorizontalPageIndicator

androidx.wear.compose.material.HorizontalPageIndicator

androidx.wear.compose.material3.HorizontalPagerScaffold

Neu

androidx.wear.compose.material3.Icon

androidx.wear.compose.material.Icon

androidx.wear.compose.material3.IconButton

androidx.wear.compose.material.Button

androidx.wear.compose.material3.IconToggleButton

androidx.wear.compose.material.ToggleButton

androidx.wear.compose.material3.LevelIndicator

Neu

androidx.wear.compose.material3.LinearProgressIndicator

Neu

androidx.wear.compose.material3.ListHeader

androidx.wear.compose.material.ListHeader

androidx.wear.compose.material3.ListSubHeader

Neu

androidx.wear.compose.material3.MaterialTheme

androidx.wear.compose.material.MaterialTheme

androidx.wear.compose.material3.OpenOnPhoneDialog

Neu

androidx.wear.compose.material3.Picker

androidx.wear.compose.material.Picker

androidx.wear.compose.material3.PickerGroup

androidx.wear.compose.material.PickerGroup

androix.wear.compose.material3.RadioButton

androidx.wear.compose.material.ToggleChip mit einem Optionsfeld

androidx.wear.compose.material3.ScreenScaffold

android.wear.compose.material.Scaffold (mit androidx.wear.compose material3.AppScaffold)

androidx.wear.compose.material3.ScrollIndicator

androidx.wear.compose.material.PositionIndicator

androidx.wear.compose.material3.scrollaway

androidx.wear.compose.material.scrollaway

androidx.wear.compose.material3.SegmentedCircularProgressIndicator

Neu

androidx.wear.compose.material3.Slider

androidx.wear.compose.material.InlineSlider

androidx.wear.compose.material3.SplitRadioButton

androidx.wear.compose.material.SplitToggleChip

androidx.wear.compose.material3.SplitCheckboxButton

androidx.wear.compose.material.SplitToggleChip

androidx.wear.compose.material3.SplitSwitchButton

androidx.wear.compose.material.SplitToggleChip

androidx.wear.compose.material3.Stepper

androidx.wear.compose.material.Stepper

androidx.wear.compose.material3.SwipeToDismissBox

androidx.wear.compose.material.SwipeToDismissBox

androidx.wear.compose.material3.SwipeToReveal

androidx.wear.compose.material.SwipeToRevealCard und androidx.wear.compose.material.SwipeToRevealChip

androidx.wear.compose.material3.SwitchButton

androidx.wear.compose.material.ToggleChip mit einem Schalter

androidx.wear.compose.material3.Text

androidx.wear.compose.material.Text

androidx.wear.compose.material3.TextButton

androidx.wear.compose.material.Button

androidx.wear.compose.material3.TextToggleButton

androidx.wear.compose.material.ToggleButton

androidx.wear.compose.material3.TimeText

androidx.wear.compose.material.TimeText

androidx.wear.compose.material3.VerticalPagerScaffold

Neu

Und hier eine Liste einiger relevanter Komponenten aus der Wear Compose Foundation-Bibliothek Version 1.5.0-beta01:

Wear Compose Foundation 1.5.0-beta

androidx.wear.compose.foundation.hierarchicalFocusGroup

Wird verwendet, um Composables in einer Anwendung zu annotieren, um den aktiven Teil der Komposition im Blick zu behalten und den Fokus zu koordinieren.

androidx.compose.foundation.pager.HorizontalPager

Ein horizontal scrollbarer Pager, der auf den Compose Foundation-Komponenten mit Wear-spezifischen Verbesserungen basiert, um die Leistung zu verbessern und die Einhaltung der Wear OS-Richtlinien zu gewährleisten.

androidx.compose.foundation.pager.VerticalPager

Ein vertikal scrollbarer Pager, der auf den Compose Foundation-Komponenten mit Wear-spezifischen Verbesserungen basiert, um die Leistung zu verbessern und die Einhaltung der Wear OS-Richtlinien zu gewährleisten.

androidx.wear.foundation.lazy.TransformingLazyColumn

Kann anstelle von ScalingLazyColumn verwendet werden, um jedem Element Scroll-Transformationseffekte hinzuzufügen.

Tasten

Schaltflächen in M3 unterscheiden sich von denen in M2.5. Der M2.5-Chip wurde durch eine Taste ersetzt. Die Button-Implementierung bietet Standardwerte für Text, maxLines und textAlign. Diese Standardwerte können im Element Text überschrieben werden.

M2.5

import androidx.wear.compose.material.Chip

//M2.5 Buttons
Chip(...)
CompactChip(...)
Button(...)

M3

import androidx.wear.compose.material3.Button

//M3 Buttons
Button(...)
CompactButton(...)
IconButton(...)
TextButton(...)

M3 enthält auch neue Schaltflächenvarianten. Weitere Informationen finden Sie in der Übersicht über die Compose Material 3 API-Referenz.

Mit M3 wird eine neue Schaltfläche eingeführt: EdgeButton. EdgeButton ist in vier verschiedenen Größen erhältlich: extraklein, klein, mittel und groß. Die EdgeButton-Implementierung bietet einen Standardwert für maxLines, der je nach Größe angepasst werden kann.

Wenn Sie TransformingLazyColumn und ScalingLazyColumn verwenden, übergeben Sie EdgeButton an ScreenScaffold, damit es sich beim Scrollen verändert. Im folgenden Code wird gezeigt, wie EdgeButton mit ScreenScaffold und TransformingLazyColumn verwendet wird.

import androidx.wear.compose.material3.EdgeButton
import androidx.wear.compose.material3.ScreenScaffold

ScreenScaffold(
   scrollState = state,
   contentPadding = contentPadding,
   edgeButton = {
      EdgeButton(...)
   }
){ contentPadding ->
   TransformingLazyColumn(state = state, contentPadding = contentPadding,){
   // additional code here
   }
}

Gerüst

Das Gerüst in M3 unterscheidet sich von dem in M2.5. In M3 wurden AppScaffold und das neue ScreenScaffold-Kompositelement als Ersatz für Scaffold eingeführt. Mit AppScaffold und ScreenScaffold legen Sie die Struktur eines Bildschirms fest und koordinieren Übergänge der Komponenten ScrollIndicator und TimeText.

Mit AppScaffold können statische Bildschirmelemente wie TimeText bei In-App-Übergängen wie Wischen zum Schließen sichtbar bleiben. ​​Er bietet einen Bereich für die Hauptinhalte der Anwendung, die in der Regel von einer Navigationskomponente wie SwipeDismissableNavHost bereitgestellt werden.

Sie deklarieren eine AppScaffold für die Aktivität und verwenden eine ScreenScaffold für jeden Bildschirm.

M2.5

import androidx.wear.compose.material.Scaffold

Scaffold {...}

M3

import androidx.wear.compose.material3.AppScaffold
import androidx.wear.compose.material3.ScreenScaffold

AppScaffold {
   // Define the navigation hierarchy within the AppScaffold,
   // such as using SwipeDismissableNavHost.
   SwipeDismissableNavHost(...) {
      composable("home") {
         HomeScreen()
      }
      //other screens
   }
}
fun HomeScreen() {
    val scrollState = rememberScrollState()
    ScreenScaffold(scrollState = scrollState) {
    //rest of the screen code
    }
}

Wenn Sie HorizontalPager mit HorizontalPagerIndicator verwenden, können Sie zu HorizontalPagerScaffold migrieren. HorizontalPagerScaffold wird in einem AppScaffold platziert. AppScaffold und HorizontalPagerScaffold legen die Struktur eines Pagers fest und koordinieren die Übergänge der Komponenten HorizontalPageIndicator und TimeText.

HorizontalPagerScaffold zeigt die HorizontalPageIndicator standardmäßig in der Mitte des Bildschirms an und koordiniert das Ein-/Ausblenden von TimeText und HorizontalPageIndicator je nachdem, ob die Pager geblättert wird. Dies wird vom PagerState bestimmt.

Außerdem gibt es eine neue AnimatedPage-Komponente, mit der eine Seite in einem Pager mit einem Skalierungs- und Scrim-Effekt basierend auf ihrer Position animiert wird.

import androidx.wear.compose.material3.AppScaffold
import androidx.wear.compose.material3.HorizontalPagerScaffold
import androidx.wear.compose.material3.ScreenScaffold
import androidx.wear.compose.foundation.pager.HorizontalPager
import androidx.wear.compose.foundation.pager.rememberPagerState

AppScaffold {
    val pagerState = rememberPagerState(pageCount = { 10 })

    HorizontalPagerScaffold(pagerState = pagerState) {
       HorizontalPager(
          state = pagerState,
        ) { page ->
            AnimatedPage(pageIndex = page, pagerState = pagerState) {
                ScreenScaffold {

   }
}

Schließlich wird in M3 ein VerticalPagerScaffold eingeführt, das demselben Muster wie die HorizontalPagerScaffold folgt:

import androidx.wear.compose.material3.AppScaffold
import androidx.wear.compose.material3.HorizontalPagerScaffold
import androidx.wear.compose.material3.ScreenScaffold
import androidx.wear.compose.foundation.pager.VerticalPager
import androidx.wear.compose.foundation.pager.rememberPagerState

AppScaffold {
   val pagerState = rememberPagerState(pageCount = { 10 })

   VerticalPagerScaffold(pagerState = pagerState) {
      VerticalPager(
         state = pagerState
      ) { page ->
             AnimatedPage(pageIndex = page, pagerState = pagerState){
                ScreenScaffold {
        
   }
}

Platzhalter

Zwischen M2.5 und M3 gibt es einige API-Änderungen. Placeholder.PlaceholderDefaults bietet jetzt zwei Modifikatoren:

  • Modifier.placeholder, das anstelle von Inhalten dargestellt wird, die noch nicht geladen sind
  • Ein Platzhalter-Shimmer-Effekt Modifier.placeholderShimmer, der in einer Animationsschleife ausgeführt wird, während auf das Laden der Daten gewartet wird.

Weitere Änderungen an der Placeholder-Komponente finden Sie unten.

M2.5

M3

PlaceholderState.startPlaceholderAnimation

wurde entfernt

PlaceholderState.placeholderProgression

wurde entfernt

PlaceholderState.isShowContent

wurde in !PlaceholderState.isVisible umbenannt

PlaceholderState.isWipeOff

wurde entfernt

PlaceholderDefaults.painterWithPlaceholderOverlayBackgroundBrush

wurde entfernt

PlaceholderDefaults.placeholderBackgroundBrush

wurde entfernt

PlaceholderDefaults.placeholderChipColors

wurde entfernt

SwipeDismissableNavHost

SwipeDismissableNavHost ist Teil von wear.compose.navigation. Wenn diese Komponente mit M3 verwendet wird, aktualisiert das M3 MaterialTheme die LocalSwipeToDismissBackgroundScrimColor und LocalSwipeToDismissContentScrimColor.

TransformingLazyColumn

TransformingLazyColumn ist Teil von wear.compose.lazy.foundation und bietet Unterstützung für Skalierungs- und Morphing-Animationen bei Listenelementen beim Scrollen, um die Nutzerfreundlichkeit zu verbessern.

Ähnlich wie bei ScalingLazyColumn gibt es auch bei rememberTransformingLazyColumnState() die Möglichkeit, eine TransformingLazyColumnState zu erstellen, die in allen Kompositionen gespeichert wird.

Wenn Sie Skalierungs- und Morphing-Animationen hinzufügen möchten, fügen Sie jedem Listenelement Folgendes hinzu:

  • Modifier.transformedHeight, mit dem Sie die transformierte Höhe der Elemente mithilfe eines TransformationSpec berechnen können. Sie können rememberTransformationSpec() verwenden, sofern keine weitere Anpassung erforderlich ist.
  • Ein SurfaceTransformation
import androidx.wear.compose.material3.AppScaffold
import androidx.wear.compose.material3.ScreenScaffold
import androidx.wear.compose.material3.SurfaceTransformation
import androidx.wear.compose.material3.lazy.rememberTransformationSpec
import androidx.wear.compose.material3.lazy.transformedHeight
import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState
import androidx.wear.compose.foundation.lazy.TransformingLazyColumn

val state = rememberTransformingLazyColumnState()
val transformationSpec = rememberTransformationSpec()
AppScaffold {
   ScreenScaffold(state) { contentPadding ->
      TransformingLazyColumn(state = state, contentPadding = contentPadding) {
         items(count = 50) {
            Button(
               onClick = {},
               modifier =
                        Modifier.fillMaxWidth().transformedHeight(this, transformationSpec),
                        transformation = SurfaceTransformation(transformationSpec),
                    ) {
                        Text("Item $it")
                    }
                }
            }
        }
    }

Nützliche Links

Weitere Informationen zur Migration von M2.5 zu M3 in Compose finden Sie in den folgenden zusätzlichen Ressourcen.

Produktproben

Wear OS-Beispiele im Material3-Zweig auf GitHub

Codelab zum Erstellen von Wear OS-Apps

API-Referenz und Quellcode

Design