در Compose for Wear OS از Material 2.5 به Material 3 مهاجرت کنید

Material 3 Expressive تکامل بعدی متریال دیزاین است. این شامل تم به روز شده، اجزا و ویژگی های شخصی سازی مانند رنگ پویا است.

این راهنما بر انتقال از کتابخانه Wear Compose Material 2.5 (androidx.wear.compose) Jetpack به کتابخانه Wear Compose Material 3 (androidx.wear.compose.material3) Jetpack برای برنامه ها تمرکز دارد.

رویکردها

برای انتقال کد برنامه خود از M2.5 به M3، همان روشی را که در راهنمای انتقال تلفن Compose Material توضیح داده شده است، دنبال کنید، به ویژه:

وابستگی ها

M3 دارای بسته بندی جداگانه و نسخه M2.5 است:

M2.5

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

M3

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

آخرین نسخه های M3 را در صفحه انتشار Wear Compose Material 3 ببینید.

کتابخانه Wear Compose Foundation نسخه 1.5.0-beta01 برخی مؤلفه‌های جدید را معرفی می‌کند که برای کار با مؤلفه‌های Material 3 طراحی شده‌اند. به طور مشابه، SwipeDismissableNavHost از کتابخانه Wear Compose Navigation دارای یک انیمیشن به روز شده هنگام اجرا در Wear OS 6 (سطح API 36) یا بالاتر است. هنگام به‌روزرسانی به نسخه Wear Compose Material 3، پیشنهاد می‌کنیم کتابخانه‌های Wear Compose Foundation و Navigation را نیز به‌روزرسانی کنید:

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

موضوع بندی

در هر دو M2.5 و M3، تم قابل ترکیب MaterialTheme نام دارد، اما بسته‌ها و پارامترهای واردات متفاوت است. در M3، پارامتر Colors به ColorScheme تغییر نام داده و MotionScheme برای پیاده سازی انتقال ها معرفی شده است.

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
)

رنگ

سیستم رنگ در M3 تفاوت قابل توجهی با M2.5 دارد. تعداد پارامترهای رنگ افزایش یافته است، نام‌های متفاوتی دارند و به‌طور متفاوتی به اجزای M3 نگاشت می‌شوند. در Compose، این برای کلاس M2.5 Colors ، کلاس M3 ColorScheme و توابع مرتبط اعمال می شود:

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
)

جدول زیر تفاوت های کلیدی بین M2.5 و M3 را شرح می دهد:

M2.5

M3

Color

به ColorScheme تغییر نام داده است

13 رنگ

28 رنگ

N/A

تم رنگی پویا جدید

N/A

رنگ های سوم جدید برای بیان بیشتر

تم رنگی پویا

یک ویژگی جدید در M3 تم رنگی پویا است. اگر کاربران رنگ‌های صفحه ساعت را تغییر دهند، رنگ‌ها در رابط کاربری مطابقت دارند.

از تابع dynamicColorScheme برای پیاده‌سازی طرح رنگ پویا استفاده کنید و در صورتی که طرح رنگ پویا در دسترس نباشد، یک defaultColorScheme به‌عنوان نسخه بازگشتی ارائه کنید.

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

تایپوگرافی

سیستم تایپوگرافی در M3 با M2 متفاوت است و شامل ویژگی های زیر است:

  • نه سبک متن جدید
  • فونت‌های انعطاف‌پذیر، که امکان سفارشی‌سازی مقیاس‌های نوع را برای وزن‌ها، عرض‌ها و گردی‌های مختلف فراهم می‌کنند.
  • 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
)

فونت های فلکس

فونت‌های فلکس به طراحان اجازه می‌دهند تا نوع عرض و وزن را برای اندازه‌های خاص مشخص کنند.

سبک های متن

TextStyles زیر در M3 موجود است. اینها به طور پیش فرض توسط مؤلفه های مختلف M3 استفاده می شوند.

تایپوگرافی

TextStyle

نمایش

displayLarge، displayMedium، displaySmall

عنوان

titleLarge، titleMedium، titleSmall

برچسب بزنید

labelLarge، labelMedium، labelSmall

بدن

bodyLarge، bodyMedium، bodySmall، bodyExtraSmall

عددی

numeralExtraLarge, numeralLarge, numeralMedium, numeralSmall, numeralExtraSmall

قوس

arcLarge، arcMedium، arcSmall

شکل

سیستم شکل در M3 با M2 متفاوت است. تعداد پارامترهای شکل افزایش یافته است، نام‌گذاری‌های متفاوتی به آن‌ها داده می‌شود، و به‌طور متفاوتی به اجزای M3 نگاشت می‌شوند. اندازه های شکل زیر موجود است:

  • فوق العاده کوچک
  • کوچک
  • متوسط
  • بزرگ
  • فوق العاده بزرگ

در Compose، این برای کلاس M2 Shapes و کلاس M3 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
)

از نگاشت پارامتر Shapes از Migrate from Material 2 به Material 3 در Compose به عنوان نقطه شروع استفاده کنید.

شکل گیری شکل

M3 شکل‌سازی شکل را معرفی می‌کند: شکل‌ها اکنون در پاسخ به تعاملات شکل می‌گیرند.

رفتار شکل‌گیری شکل به‌عنوان یک تغییر در تعدادی از دکمه‌های گرد موجود است، زیر را ببینید:

دکمه ها

تابع شکل‌گیری شکل

IconButton

IconButtonDefaults.animatedShape() دکمه نماد را با فشار دادن متحرک می کند

IconToggleButton

IconToggleButtonDefaults.animatedShape() دکمه جابجایی نماد را با فشار دادن و

IconToggleButtonDefaults.variantAnimatedShapes() با فشار دادن دکمه جابجایی نماد را متحرک می کند و علامت بزنید/برداشتن علامت

TextButton

()TextButtonDefaults.animatedShape دکمه متن را با فشار دادن متحرک می کند

TextToggleButton

TextToggleButtonDefaults.animatedShapes() تغییر متن را با فشار دادن متحرک می کند و TextToggleButtonDefaults.variantAnimatedShapes() تغییر متن را با فشار دادن متحرک می کند و علامت/برداشتن علامت آن

اجزا و چیدمان

اکثر اجزا و طرح‌بندی‌های M2.5 در M3 موجود هستند. با این حال، برخی از مؤلفه‌ها و طرح‌بندی‌های M3 در M2.5 وجود نداشتند. علاوه بر این، برخی از اجزای M3 تغییرات بیشتری نسبت به معادل های خود در M2.5 دارند.

در حالی که برخی از مؤلفه ها نیاز به ملاحظات خاصی دارند، نگاشت تابع زیر به عنوان نقطه شروع توصیه می شود:

مواد 2.5

مواد 3

androidx.wear.compose.material.dialog.Alert

androidx.wear.compose.material3.AlertDialog

androidx.wear.compose.material.Button

androidx.wear.compose.material3.IconButton یا 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 وجود ندارد، به androidx.wear.compose.material3.CheckboxButton یا androidx.wear.compose.material3.SplitCheckboxButton مهاجرت کنید

androidx.wear.compose.material.Chip

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

به دلیل عدم استفاده از Text یا Icon در Material 3 حذف شده است

androidx.wear.compose.material.PositionIndicator

androidx.wear.compose.material3.ScrollIndicator

androidx.wear.compose.material.RadioButton

معادل M3 وجود ندارد، به androidx.wear.compose.material3.RadioButton یا 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 و androidx.wear.compose.material3.ScreenScaffold

androidx.wear.compose.material.SplitToggleChip

معادل M3 وجود ندارد، به androidx.wear.compose.material3.SplitCheckboxButton ، androidx.wear.compose.material3.SplitSwitchButton یا androidx.wear.compose.material3.SplitRadioButton مهاجرت کنید.

androidx.wear.compose.material.Switch

معادل M3 وجود ندارد، به androidx.wear.compose.material3.SwitchButton یا androidx.wear.compose.material3.SplitSwitchButton مهاجرت کنید

androidx.wear.compose.material.ToggleButton

androidx.wear.compose.material3.IconToggleButton یا androidx.wear.compose.material3.TextToggleButton

androidx.wear.compose.material.ToggleChip

androidx.wear.compose.material3.CheckboxButton یا
androidx.wear.compose.material3.RadioButton یا
androidx.wear.compose.material3.SwitchButton

androidx.wear.compose.material.vignette

حذف شد زیرا در Material 3 Expressive Design برای Wear OS گنجانده نشده است

در اینجا لیست کاملی از تمام اجزای Material 3 آمده است:

مواد 3

ماده 2.5 جزء معادل (اگر در M3 جدید نباشد)

androidx.wear.compose.material3.AlertDialog

androidx.wear.compose.material.dialog.Alert

androix.wear.compose.material3.AnimatedPage

جدید

androidx.wear.compose.material3.AnimatedText

جدید

androidx.wear.compose material3.AppScaffold

android.wear.compose.material.Scaffold (با androidx.wear.compose.material3.ScreenScaffold )

androidx.wear.compose.material3.Button

androidx.wear.compose.material.Chip

androidx.wear.compose.material3.ButtonGroup

جدید

androidx.wear.compose.material3.Card

androidx.wear.compose.material.Card

androidx.wear.compose.material3.CheckboxButton

androidx.wear.compose.material.ToggleChip با چک باکس کنترل جابجایی

androidx.wear.compose.material3.ChildButton

androidx.wear.compose.material.Chip (فقط زمانی که نیازی به پس زمینه نیست)

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

جدید

androidx.wear.compose.material3.Dialog

androidx.wear.compose.material.dialog.Dialog

androidx.wear.compose.material3.EdgeButton

جدید

androidx.wear.compose.material3.FadingExpandingLabel

جدید

androidx.wear.compose.material3.FilledTonalButton

androidx.wear.compose.material.تراشه زمانی که پس‌زمینه دکمه تونال مورد نیاز است

androidx.wear.compose.material3.HorizontalPageIndicator

androidx.wear.compose.material.HorizontalPageIndicator

androidx.wear.compose.material3.HorizontalPagerScaffold

جدید

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

جدید

androidx.wear.compose.material3.LinearProgressIndicator

جدید

androidx.wear.compose.material3.ListHeader

androidx.wear.compose.material.ListHeader

androidx.wear.compose.material3.ListSubHeader

جدید

androidx.wear.compose.material3.MaterialTheme

androidx.wear.compose.material.MaterialTheme

androidx.wear.compose.material3.OpenOnPhoneDialog

جدید

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 با کنترل کلید رادیویی

androidx.wear.compose.material3.ScreenScaffold

android.wear.compose.material.Scaffold (با 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

جدید

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

androidx.wear.compose.material3.SwitchButton

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

جدید

و در نهایت لیستی از برخی اجزای مرتبط از کتابخانه Wear Compose Foundation نسخه 1.5.0-beta01:

Wear Compose Foundation 1.5.0-بتا

androidx.wear.compose.foundation.hierarchicalFocusGroup

برای حاشیه نویسی اجزای سازنده در یک برنامه کاربردی، برای پیگیری بخش فعال ترکیب و هماهنگ کردن فوکوس استفاده می شود.

androidx.compose.foundation.pager.HorizontalPager

یک پیجر اسکرول افقی، ساخته شده بر روی اجزای Compose Foundation با پیشرفت‌های مخصوص Wear برای بهبود عملکرد و پیروی از دستورالعمل‌های Wear OS.

androidx.compose.foundation.pager.VerticalPager

یک پیجر پیمایش عمودی، ساخته شده بر روی اجزای Compose Foundation با پیشرفت‌های مخصوص Wear برای بهبود عملکرد و پیروی از دستورالعمل‌های Wear OS.

androidx.wear.foundation.lazy.TransformingLazyColumn

می توان به جای ScalingLazyColumn برای افزودن جلوه های تبدیل اسکرول به هر آیتم استفاده کرد.

دکمه ها

دکمه ها در M3 با M2.5 متفاوت هستند. تراشه M2.5 با دکمه جایگزین شده است. پیاده سازی Button مقادیر پیش فرض را برای Text maxLines و textAlign ارائه می دهد. این مقادیر پیش فرض را می توان در عنصر Text لغو کرد.

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 همچنین شامل تغییرات دکمه های جدید است. آنها را در نمای کلی مرجع Compose Material 3 API بررسی کنید.

M3 یک دکمه جدید معرفی می کند: EdgeButton . EdgeButton در 4 اندازه مختلف موجود است: بسیار کوچک، کوچک، متوسط ​​و بزرگ. پیاده سازی EdgeButton بسته به اندازه ای که می تواند سفارشی شود، یک مقدار پیش فرض برای maxLines ارائه می دهد.

اگر TransformingLazyColumn و ScalingLazyColumn استفاده می‌کنید، EdgeButton را به ScreenScaffold منتقل کنید تا تغییر شکل دهد و شکل آن را با اسکرول تغییر دهید. برای بررسی نحوه استفاده از EdgeButton با ScreenScaffold و TransformingLazyColumn به کد زیر مراجعه کنید.

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

داربست

داربست در M3 با M2.5 متفاوت است. در M3، AppScaffold و ScreenScaffold جدید composable جایگزین Scaffold شده‌اند. AppScaffold و ScreenScaffold ساختار یک صفحه را ترسیم می کنند و انتقال اجزای ScrollIndicator و TimeText هماهنگ می کنند.

AppScaffold به عناصر صفحه نمایش ثابت مانند TimeText اجازه می دهد تا در حین انتقال درون برنامه مانند Swipe-to-Dimiss قابل مشاهده باشند. این یک اسلات برای محتوای اصلی برنامه فراهم می کند که معمولاً توسط یک مؤلفه ناوبری مانند SwipeDismissableNavHost تأمین می شود.

شما یک AppScaffold برای Activity اعلام می کنید و برای هر صفحه از ScreenScaffold استفاده می کنید.

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

اگر از HorizontalPager با HorizontalPagerIndicator استفاده می کنید، می توانید به HorizontalPagerScaffold مهاجرت کنید. HorizontalPagerScaffold درون یک AppScaffold قرار می گیرد. AppScaffold و HorizontalPagerScaffold ساختار یک پیجر را ترسیم می کنند و انتقال اجزای HorizontalPageIndicator andv TimeText را هماهنگ می کنند.

HorizontalPagerScaffold به طور پیش‌فرض HorizontalPageIndicator را در انتهای مرکز صفحه نمایش می‌دهد و مختصات نمایش/مخفی کردن TimeText و HorizontalPageIndicator با توجه به اینکه Pager در حال صفحه‌بندی است، نشان می‌دهد، این توسط PagerState تعیین می‌شود.

همچنین یک جزء جدید AnimatedPage وجود دارد که یک صفحه را در یک پیجر با یک افکت مقیاس‌بندی و اسکریم بر اساس موقعیت آن متحرک می‌کند.

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 {

   }
}

در نهایت، M3 یک VerticalPagerScaffold را معرفی می کند که از همان الگوی HorizontalPagerScaffold پیروی می کند:

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

جای جای

برخی تغییرات API بین M2.5 و M3 وجود دارد. Placeholder.PlaceholderDefaults اکنون دو اصلاح کننده را ارائه می دهد:

  • Modifier.placeholder ، که به جای محتوایی که هنوز بارگیری نشده است ترسیم می شود
  • یک جلوه درخشش نگهدارنده مکان Modifier.placeholderShimmer که یک جلوه درخشش نگهدارنده مکان را ارائه می دهد که در یک حلقه انیمیشن اجرا می شود در حالی که منتظر بارگذاری داده است.

برای تغییرات بیشتر در مؤلفه Placeholder به زیر مراجعه کنید.

M2.5

M3

PlaceholderState.startPlaceholderAnimation

حذف شده است

PlaceholderState.placeholderProgression

حذف شده است

PlaceholderState.isShowContent

به !PlaceholderState.isVisible تغییر نام داده است

PlaceholderState.isWipeOff

حذف شده است

PlaceholderDefaults.painterWithPlaceholderOverlayBackgroundBrush

حذف شده است

PlaceholderDefaults.placeholderBackgroundBrush

حذف شده است

PlaceholderDefaults.placeholderChipColors

حذف شده است

SwipeDisissableNavHost

SwipeDismissableNavHost بخشی از wear.compose.navigation است. هنگامی که این مؤلفه با M3 استفاده می شود، M3 MaterialTheme LocalSwipeToDismissBackgroundScrimColor و LocalSwipeToDismissContentScrimColor به روز می کند.

TransformingLazyColumn

TransformingLazyColumn بخشی از wear.compose.lazy.foundation است و پشتیبانی از مقیاس‌بندی و شکل‌دهی انیمیشن‌ها را در آیتم‌های فهرست در حین پیمایش اضافه می‌کند و تجربه کاربر را بهبود می‌بخشد.

مشابه ScalingLazyColumn ، rememberTransformingLazyColumnState() را برای ایجاد یک TransformingLazyColumnState فراهم می کند که در بین ترکیبات به خاطر سپرده می شود.

برای افزودن مقیاس‌بندی و شکل‌گیری انیمیشن‌ها، موارد زیر را به هر آیتم فهرست اضافه کنید:

  • Modifier.transformedHeight ، که به شما امکان می دهد ارتفاع تبدیل شده آیتم ها را با استفاده از TransformationSpec محاسبه کنید، می توانید از rememberTransformationSpec() استفاده کنید مگر اینکه نیاز به سفارشی سازی بیشتری داشته باشید.
  • یک 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")
                    }
                }
            }
        }
    }

لینک های مفید

برای کسب اطلاعات بیشتر در مورد مهاجرت از M2.5 به M3 در Compose، به منابع اضافی زیر مراجعه کنید.

نمونه ها

نمونه های سیستم عامل را در شاخه Material3 در GitHub بپوشید

نوشتن برای Wear OS Codelab

مرجع API و کد منبع

طراحی