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

Material 3 Etkileyici, Materyal Tasarımın bir sonraki sürümüdür. Güncellenen 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ş ele alınmaktadır.

Yaklaşımlar

Uygulama kodunuzu M2.5'ten M3'e taşımak için Kompozisyon Materyali taşıma telefon kılavuzunda açıklanan yaklaşımı uygulayın. Özellikle:

Bağımlılıklar

M3, M2.5'ten ayrı bir pakete ve sürüme sahiptir:

M2.5

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

M3

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

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

Wear Compose Foundation kitaplığının 1.5.0-beta01 sürümünde, Material 3 bileşenleriyle çalışacak şekilde tasarlanmış bazı yeni bileşenler kullanıma sunulmuştur. 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üncelleme yaparken Wear Compose Foundation ve Navigation kitaplıklarını da güncellemenizi öneririz:

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

Tema oluşturma

Hem M2.5 hem de M3'te tema bileşeni MaterialTheme olarak adlandırılır ancak içe aktarma paketleri ve parametreleri farklıdır. M3'te Colors parametresi ColorScheme olarak yeniden adlandırıldı ve geçişleri uygulamak için MotionScheme tanıtıldı.

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'da bu durum M2.5 Colors sınıfı, M3ColorScheme 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 farklılıklar açıklanmaktadır:

M2.5

M3

Color

ColorScheme olarak yeniden adlandırıldı

13 Renk

28 Renk

Yok

yeni dinamik renk temaları

Yok

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

Dinamik Renk Teması

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

Dinamik renk şemasını 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ı kalınlıklar, genişlikler ve yuvarlaklıklar için yazı ölçeklerinin özelleştirilmesine olanak tanıyan esnek yazı tipleri
  • AnimatedText, esnek yazı tipleri kullanır

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
)

Esnek Yazı Tipleri

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

Metin Stilleri

M3'te aşağıdaki metin stilleri 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ıldı ve M3 bileşenleriyle farklı şekilde eşlendi. Aşağıdaki şekil boyutları kullanılabilir:

  • Ekstra 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 Oluşturma'da 2. materyalden 3. materyale geçme başlıklı makaledeki Şekiller parametresi eşlemesini kullanın.

Şekil dönüşümü

M3, Şekil Değiştirme özelliğini kullanıma sundu: Şekiller artık etkileşimlere yanıt olarak değişiyor.

Şekil Dönüşüm davranışı, çeşitli yuvarlak düğmelerde bir varyasyon olarak kullanılabilir. Aşağıya bakın:

Düğmeler

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

IconButton

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

IconToggleButton

IconToggleButtonDefaults.animatedShape(), düğmeye basıldığında simge açma/kapatma düğmesini animasyonlu hale getirir ve

IconToggleButtonDefaults.variantAnimatedShapes(), düğmeye basıldığında ve onay kutusunu işaretleyip kaldırdığınızda simge açma/kapatma düğmesini animasyonlu hale getirir.

TextButton

TextButtonDefaults.animatedShape(), metin düğmesine basıldığında düğmeyi hareketlendirir.

TextToggleButton

TextToggleButtonDefaults.animatedShapes(), metin açma/kapatma düğmesine basıldığında animasyon uygular. TextToggleButtonDefaults.variantAnimatedShapes() ise metin açma/kapatma düğmesine basıldığında ve onay kutusunun işareti değiştirildiğinde 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 mevcut değildi. Ayrıca bazı M3 bileşenleri, M2.5'teki eşdeğerlerine kıyasla daha fazla varyasyona sahiptir.

Bazı bileşenler için özel hususlar dikkate alınmalıdır. Başlangıç noktası olarak aşağıdaki işlev eşlemelerini kullanabilirsiniz:

Malzeme 2.5

3. Malzeme

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 öğesine 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

3. Materyal'de 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 etkileyici tasarımına dahil edilmediğinden kaldırıldı

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

3. Malzeme

Partikül madde 2,5 eşdeğer bileşeni (M3'te yeni değilse)

androidx.wear.compose.material3.AlertDialog

androidx.wear.compose.material.dialog.Alert

androix.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 denetimi 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

Açma/kapatma düğmesi 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 bileşenlere ek 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ı ve Wear OS yönergelerine uygunluğu artırmak için Wear'a özel geliştirmelerle Compose Foundation bileşenleri üzerine inşa edilmiş, yatay kaydırmalı bir sayfalayıcı.

androidx.compose.foundation.pager.VerticalPager

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

androidx.wear.foundation.lazy.TransformingLazyColumn

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

Düğmeler

M3'teki düğmeler M2,5'ten farklıdır. M2.5 çip, düğmeyle değiştirildi. 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 varyantları da içerir. Compose Material 3 API referansına genel bakış başlıklı makalede bu bilgilere göz atabilirsiniz.

M3, EdgeButton adlı yeni bir düğme sunar. EdgeButton 4 farklı bedenle (extra small, small, medium ve large) sunulur. EdgeButton uygulaması, özelleştirilebilen boyuta bağlı olarak maxLines için varsayılan bir değer sağlar.

TransformingLazyColumn ve ScalingLazyColumn kullanıyorsanız EdgeButton öğesini ScreenScaffold öğesine iletin. Böylece, kaydırmayla şeklini değiştirerek dönüşüm gerçekleştirir. EdgeButtonScreenScaffold ve TransformingLazyColumn ile nasıl kullanacağınızı öğrenmek 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 bileşeni, 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, TimeText gibi statik ekran öğelerinin, kaydırarak kapatma gibi uygulama içi geçişler sırasında görünür kalmasına olanak tanır. ​​Ana uygulama içeriği için bir yuva sağlar. Bu yuva genellikle SwipeDismissableNavHost gibi bir gezinme bileşeni tarafından sağlanır.

Etkinlik için bir AppScaffold tanımlar 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çebilirsiniz. HorizontalPagerScaffold, bir AppScaffold içine yerleştirilir. AppScaffold ve HorizontalPagerScaffold, bir Sayfalayıcı'nın yapısını düzenler ve HorizontalPageIndicator ileTimeText bileşenlerinin geçişlerini koordine eder.

HorizontalPagerScaffold, varsayılan olarak ekranın orta ucunda HorizontalPageIndicator'u gösterir ve Pager'ın sayfaya ayrılıp ayrılmadığına göre TimeText ile HorizontalPageIndicator'u göstermeyi/gizlemeyi koordine eder. Bu, PagerState tarafından belirlenir.

Ayrıca, bir Sayfalayıcı içindeki sayfayı konumuna göre ölçeklendirme ve sis efektiyle animasyonlu hale getiren yeni bir AnimatedPage bileşeni de vardır.

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ı kalıbı izleyen bir VerticalPagerScaffold sunar:

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 sağlar:

  • Henüz yüklenmemiş içerik yerine çizilen Modifier.placeholder
  • Verilerin yüklenmesini beklerken animasyon döngüsünde çalışan bir yer tutucu parıltı efekti sağlayan yer tutucu parıltı efekti Modifier.placeholderShimmer.

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'un bir parçasıdır ve kaydırma sırasında liste öğelerinde ölçeklendirme ve şekil değiştirme animasyonları için destek ekleyerek kullanıcı deneyimini iyileştirir.

ScalingLazyColumn ile benzer şekilde, rememberTransformingLazyColumnState()'a, bestelerde akılda kalan bir TransformingLazyColumnState oluşturma olanağı sunar.

Ölçeklendirme ve şekil değiştirme animasyonları eklemek için her liste öğesine aşağıdakileri ekleyin:

  • Modifier.transformedHeight, TransformationSpec kullanarak öğelerin dönüştürülmüş yüksekliğini hesaplamanıza olanak tanır. Daha fazla özelleştirmeye ihtiyacınız yoksa 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

GitHub'daki Material3 dalında Wear OS örnekleri

Wear OS için kodlama codelab'i

API referansı ve kaynak kodu

Tasarım