Wear OS için Compose'da Materyal 2.5'ten Materyal 3'e geçme

Material 3 Expressive, Materyal Tasarım'ın bir sonraki evrimidir. Güncellenmiş temalar, bileşenler ve dinamik renk gibi kişiselleştirme özellikleri içerir.

Bu kılavuzda, uygulamalar için Wear Compose Material 2.5 (androidx.wear.compose) Jetpack kitaplığından Wear Compose Material 3 (androidx.wear.compose.material3) Jetpack kitaplığına geçiş yapma konusu ele alınmaktadır.

Yaklaşımlar

Uygulama kodunuzu M2.5'ten M3'e taşımak için Compose Material geçişiyle ilgili telefonda açıklanan yaklaşımları izleyin. Özellikle:

Bağımlılıklar

M3'ün M2.5'ten ayrı bir paketi ve sürümü vardır:

M2.5

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

M3

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

En son M3 sürümlerini Wear Compose Material 3 sürümleri sayfasında görebilirsiniz.

Wear Compose Foundation kitaplığının 1.5.0-beta01 sürümünde, Material 3 bileşenleriyle çalışmak üzere tasarlanmış bazı yeni bileşenler kullanıma sunuluyor. Benzer şekilde, Wear Compose Navigation kitaplığındaki SwipeDismissableNavHost, Wear OS 6 (API düzeyi 36) veya sonraki sürümlerde çalıştırıldığında güncellenmiş bir animasyona sahiptir. Wear Compose Material 3 sürümüne güncellerken Wear Compose Foundation ve Navigation kitaplıklarını da güncellemenizi öneririz:

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

Tema oluşturma

Hem M2.5 hem de M3'te tema composable'ı MaterialTheme olarak adlandırılır ancak içe aktarma paketleri ve parametreler farklıdır. M3'te Colors parametresinin adı ColorScheme olarak değiştirildi ve geçişleri uygulamak için MotionScheme parametresi kullanıma sunuldu.

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
)

Renk

M3'teki renk sistemi, M2.5'ten önemli ölçüde farklıdır. Renk parametrelerinin sayısı arttı, farklı adlara sahipler ve M3 bileşenleriyle farklı şekilde eşleniyorlar. Oluşturma bölümünde bu durum M2.5 Colors sınıfı, M3 ColorScheme sınıfı ve ilgili işlevler için geçerlidir:

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
)

Aşağıdaki tabloda M2.5 ile M3 arasındaki temel farklar açıklanmaktadır:

M2.5

M3

Color

ColorScheme olarak yeniden adlandırıldı

13 Renk

28 Renk

Yok

Yeni dinamik renk teması

Yok

Daha fazla ifade için yeni üçüncül renkler

Dinamik renk teması

M3'teki yeni özelliklerden biri dinamik renk temasıdır. Kullanıcılar kadran renklerini değiştirirse kullanıcı arayüzündeki renkler de buna uygun şekilde değişir.

Dinamik renk şeması uygulamak için dynamicColorScheme işlevini kullanın ve dinamik renk şeması kullanılamadığında yedek olarak defaultColorScheme sağlayın.

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

Yazı biçimi

M3'teki tipografi sistemi, M2'den farklıdır ve aşağıdaki özellikleri içerir:

  • Dokuz yeni metin stili
  • Farklı ağırlıklar, genişlikler ve yuvarlaklıklar için tür ölçeklerinin özelleştirilmesine olanak tanıyan esnek yazı tipleri
  • Esnek yazı tiplerini kullanan AnimatedText

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 Fonts

Esnek yazı tipleri, tasarımcıların belirli boyutlar için tür genişliğini ve ağırlığını belirtmesine olanak tanır.

Metin stilleri

M3'te aşağıdaki TextStyle'lar kullanılabilir. Bunlar, M3'ün çeşitli bileşenleri tarafından varsayılan olarak kullanılır.

Yazı biçimi

TextStyle

Ekran

displayLarge, displayMedium, displaySmall

Başlık

titleLarge, titleMedium, titleSmall

Etiket

labelLarge, labelMedium, labelSmall

Metin

bodyLarge, bodyMedium, bodySmall, bodyExtraSmall

Sayısal

numeralExtraLarge, numeralLarge, numeralMedium, numeralSmall, numeralExtraSmall

Yay

arcLarge, arcMedium, arcSmall

Şekil

M3'teki şekil sistemi, M2'den farklıdır. Şekil parametrelerinin sayısı arttı, farklı şekilde adlandırılıyorlar ve M3 bileşenleriyle farklı şekilde eşleniyorlar. Aşağıdaki şekil boyutları kullanılabilir:

  • Çok küçük
  • Küçük
  • Orta zorlukta
  • Büyük
  • Ekstra büyük

Oluşturma'da bu, M2 Şekiller sınıfı ve M3 Şekiller sınıfı için geçerlidir:

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
)

Başlangıç noktası olarak Migrate from Material 2 to Material 3 in Compose (Compose'da Material 2'den Material 3'e geçiş) bölümündeki Şekiller parametre eşlemesini kullanın.

Şekil dönüştürme

M3'te Şekil Dönüştürme özelliği kullanıma sunuluyor: Şekiller artık etkileşimlere yanıt olarak dönüştürülüyor.

Şekil Dönüştürme davranışı, aşağıdaki gibi çeşitli yuvarlak düğmelerde varyasyon olarak kullanılabilir:

Düğmeler

Şekil dönüştürme işlevi

IconButton

IconButtonDefaults.animatedShape(), basıldığında simge düğmesini animasyonlu hale getirir.

IconToggleButton

IconToggleButtonDefaults.animatedShape(), basıldığında simge açma/kapatma düğmesine animasyon ekler ve

IconToggleButtonDefaults.variantAnimatedShapes(), basıldığında ve işaretlendiğinde/işaret kaldırıldığında simge açma/kapatma düğmesini animasyonlu hale getirir.

TextButton

TextButtonDefaults.animatedShape(), basıldığında metin düğmesine animasyon uygular.

TextToggleButton

TextToggleButtonDefaults.animatedShapes(), basıldığında metin açma/kapatma düğmesine animasyon uygular. TextToggleButtonDefaults.variantAnimatedShapes() ise basıldığında ve işaretlendiğinde/işareti kaldırıldığında metin açma/kapatma düğmesine animasyon uygular.

Bileşenler ve Düzen

M2.5'teki bileşenlerin ve düzenlerin çoğu M3'te kullanılabilir. Ancak bazı M3 bileşenleri ve düzenleri M2.5'te yoktu. Ayrıca, bazı M3 bileşenlerinin M2.5'teki benzerlerinden daha fazla varyasyonu vardır.

Bazı bileşenler özel olarak değerlendirilmesi gerekse de başlangıç noktası olarak aşağıdaki işlev eşlemeleri önerilir:

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 veya 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

M3 eşdeğeri yok. androidx.wear.compose.material3.CheckboxButton veya androidx.wear.compose.material3.SplitCheckboxButton'a geçin.

androidx.wear.compose.material.Chip

androidx.wear.compose.material3.Button veya
androidx.wear.compose.material3.OutlinedButton veya
androidx.wear.compose.material3.FilledTonalButton veya
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

Material 3'te Text veya Icon tarafından kullanılmadığı için kaldırıldı.

androidx.wear.compose.material.PositionIndicator

androidx.wear.compose.material3.ScrollIndicator

androidx.wear.compose.material.RadioButton

M3 eşdeğeri yok. androidx.wear.compose.material3.RadioButton veya androidx.wear.compose.material3.SplitRadioButton'a geçin.

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 ve androidx.wear.compose.material3.ScreenScaffold

androidx.wear.compose.material.SplitToggleChip

M3 eşdeğeri yok. androidx.wear.compose.material3.SplitCheckboxButton, androidx.wear.compose.material3.SplitSwitchButton veya androidx.wear.compose.material3.SplitRadioButton'a geçin.

androidx.wear.compose.material.Switch

M3 eşdeğeri yok. androidx.wear.compose.material3.SwitchButton veya androidx.wear.compose.material3.SplitSwitchButton'a geçin.

androidx.wear.compose.material.ToggleButton

androidx.wear.compose.material3.IconToggleButton veya androidx.wear.compose.material3.TextToggleButton

androidx.wear.compose.material.ToggleChip

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

androidx.wear.compose.material.Vignette

Wear OS için Materyal 3 Expressive tasarımına dahil edilmediğinden kaldırıldı.

Material 3 bileşenlerinin tam listesini aşağıda bulabilirsiniz:

Material 3

Material 2.5'e eşdeğer bileşen (M3'te yeni değilse)

androidx.wear.compose.material3.AlertDialog

androidx.wear.compose.material.dialog.Alert

androidx.wear.compose.material3.AnimatedPage

Yeni

androidx.wear.compose.material3.AnimatedText

Yeni

androidx.wear.compose material3.AppScaffold

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

androidx.wear.compose.material3.Button

androidx.wear.compose.material.Chip

androidx.wear.compose.material3.ButtonGroup

Yeni

androidx.wear.compose.material3.Card

androidx.wear.compose.material.Card

androidx.wear.compose.material3.CheckboxButton

Onay kutusu açma/kapatma kontrolü içeren androidx.wear.compose.material.ToggleChip

androidx.wear.compose.material3.ChildButton

androidx.wear.compose.material.Chip (yalnızca arka plan gerekmediğinde)

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

Yeni

androidx.wear.compose.material3.Dialog

androidx.wear.compose.material.dialog.Dialog

androidx.wear.compose.material3.EdgeButton

Yeni

androidx.wear.compose.material3.FadingExpandingLabel

Yeni

androidx.wear.compose.material3.FilledTonalButton

Tonlu bir düğme arka planı gerektiğinde androidx.wear.compose.material.Chip

androidx.wear.compose.material3.HorizontalPageIndicator

androidx.wear.compose.material.HorizontalPageIndicator

androidx.wear.compose.material3.HorizontalPagerScaffold

Yeni

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

Yeni

androidx.wear.compose.material3.LinearProgressIndicator

Yeni

androidx.wear.compose.material3.ListHeader

androidx.wear.compose.material.ListHeader

androidx.wear.compose.material3.ListSubHeader

Yeni

androidx.wear.compose.material3.MaterialTheme

androidx.wear.compose.material.MaterialTheme

androidx.wear.compose.material3.OpenOnPhoneDialog

Yeni

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

Radyo düğmesi açma/kapatma kontrolü içeren androidx.wear.compose.material.ToggleChip

androidx.wear.compose.material3.ScreenScaffold

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

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

Yeni

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 ve androidx.wear.compose.material.SwipeToRevealChip

androidx.wear.compose.material3.SwitchButton

Anahtar açma/kapatma kontrolü içeren androidx.wear.compose.material.ToggleChip

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

Yeni

Son olarak, Wear Compose Foundation kitaplığının 1.5.0-beta01 sürümündeki bazı ilgili bileşenlerin listesi:

Wear Compose Foundation 1.5.0-beta

androidx.wear.compose.foundation.hierarchicalFocusGroup

Bir uygulamadaki composable'ları açıklama eklemek, kompozisyonun etkin bölümünü takip etmek ve odağı koordine etmek için kullanılır.

androidx.compose.foundation.pager.HorizontalPager

Performansı artırmak ve Wear OS yönergelerine uygunluğu sağlamak için Wear'a özel geliştirmelerle Compose Foundation bileşenleri üzerine oluşturulmuş, yatay olarak kaydırılan bir sayfalayıcı.

androidx.compose.foundation.pager.VerticalPager

Performansı artırmak ve Wear OS yönergelerine uymak için Wear'a özel geliştirmelerle Compose Foundation bileşenleri üzerine oluşturulmuş, dikey olarak kaydırılan bir sayfalayıcı.

androidx.wear.foundation.lazy.TransformingLazyColumn

Her öğeye kaydırma dönüştürme efektleri eklemek için ScalingLazyColumn yerine kullanılabilir.

Düğmeler

M3'teki düğmeler M2.5'ten farklıdır. M2.5 Çip'in yerini Düğme aldı. Button uygulaması, Text maxLines ve textAlign için varsayılan değerler sağlar. Bu varsayılan değerler, Text öğesinde geçersiz kılınabilir.

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, yeni düğme varyasyonlarını da içerir. Bu API'leri Compose Material 3 API referansına genel bakış sayfasında inceleyebilirsiniz.

M3, yeni bir düğme olan EdgeButton'ı kullanıma sunar. EdgeButton dört farklı boyutta mevcuttur: çok küçük, küçük, orta ve büyük. EdgeButton uygulaması boyuta bağlı olarak maxLines için özelleştirilebilen bir varsayılan değer sağlar.

TransformingLazyColumn ve ScalingLazyColumn kullanıyorsanız EdgeButton öğesini ScreenScaffold içine aktarın. Böylece EdgeButton, kaydırma işlemiyle şekil değiştirir. EdgeButton ile ScreenScaffold ve TransformingLazyColumn'nin nasıl kullanılacağını kontrol etmek için aşağıdaki koda bakın.

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
   }
}

İskele

M3'teki iskele, M2.5'ten farklıdır. M3'te AppScaffold ve yeni ScreenScaffold composable'ı, Scaffold'un yerini aldı. AppScaffold ve ScreenScaffold, ekranın yapısını düzenler ve ScrollIndicator ile TimeText bileşenlerinin geçişlerini koordine eder.

AppScaffold, kaydırarak kapatma gibi uygulama içi geçişler sırasında TimeText gibi statik ekran öğelerinin görünür kalmasına olanak tanır. ​​Genellikle SwipeDismissableNavHost gibi bir gezinme bileşeni tarafından sağlanan ana uygulama içeriği için bir alan sağlar.

Etkinlik için bir AppScaffold beyan edersiniz ve her ekran için bir ScreenScaffold kullanırsınız.

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
    }
}

HorizontalPagerIndicator ile HorizontalPager kullanıyorsanız HorizontalPagerScaffold'e geçiş yapabilirsiniz. HorizontalPagerScaffold, AppScaffold içine yerleştirilir. AppScaffold ve HorizontalPagerScaffold, bir sayfalayıcının yapısını düzenler ve HorizontalPageIndicator ile TimeText bileşenlerinin geçişlerini koordine eder.

HorizontalPagerScaffold, varsayılan olarak ekranın ortasında HorizontalPageIndicator simgesini gösterir ve Pager öğesinin sayfalandırılıp sayfalandırılmadığına göre TimeText ve HorizontalPageIndicator simgelerinin gösterilmesini/gizlenmesini koordine eder. Bu durum PagerState tarafından belirlenir.

Ayrıca, bir sayfalayıcıdaki sayfayı konumuna göre ölçeklendirme ve karartma efektiyle canlandıran yeni bir AnimatedPage bileşeni de var.

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 {

   }
}

Son olarak, M3, HorizontalPagerScaffold ile aynı deseni izleyen bir VerticalPagerScaffold'u kullanıma sunuyor:

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 {
        
   }
}

Yer tutucu

M2.5 ile M3 arasında bazı API değişiklikleri vardır. Placeholder.PlaceholderDefaults artık iki değiştirici sunuyor:

Placeholder bileşeninde yapılan diğer değişiklikler için aşağıya bakın.

M2.5

M3

PlaceholderState.startPlaceholderAnimation

Kaldırıldı

PlaceholderState.placeholderProgression

Kaldırıldı

PlaceholderState.isShowContent

!PlaceholderState.isVisible olarak yeniden adlandırıldı

PlaceholderState.isWipeOff

Kaldırıldı

PlaceholderDefaults.painterWithPlaceholderOverlayBackgroundBrush

kaldırıldı

PlaceholderDefaults.placeholderBackgroundBrush

Kaldırıldı

PlaceholderDefaults.placeholderChipColors

Kaldırıldı

SwipeDismissableNavHost

SwipeDismissableNavHost, wear.compose.navigation kuruluşunun bir parçasıdır. Bu bileşen M3 ile kullanıldığında M3 MaterialTheme, LocalSwipeToDismissBackgroundScrimColor ve LocalSwipeToDismissContentScrimColor öğelerini günceller.

TransformingLazyColumn

TransformingLazyColumn, wear.compose.lazy.foundation'nin bir parçasıdır ve kaydırma sırasında liste öğelerinde ölçeklendirme ve dönüştürme animasyonları için destek ekleyerek kullanıcı deneyimini iyileştirir.

ScalingLazyColumn'ya benzer şekilde, kompozisyonlarda hatırlanan bir TransformingLazyColumnState oluşturmak için rememberTransformingLazyColumnState() sağlar.

Ölçeklendirme ve dönüştürme animasyonları eklemek için her liste öğesine aşağıdakileri ekleyin:

  • Modifier.transformedHeight, öğelerin dönüştürülmüş yüksekliğini TransformationSpec kullanarak hesaplamanıza olanak tanır. Daha fazla özelleştirme yapmanız gerekmiyorsa rememberTransformationSpec() kullanabilirsiniz.
  • 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")
                    }
                }
            }
        }
    }

Faydalı bağlantı

Compose'da M2.5'ten M3'e geçiş hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynaklara göz atın.

Örnekler

API referansı ve kaynak kodu

Tasarım