ในอุปกรณ์ Wear OS คอมโพเนนต์หลัก 2 อย่างที่มีการควบคุมเวอร์ชันแยกกันจะแสดงผลไทล์ หากต้องการให้วิดเจ็ตแอปทำงานได้อย่างถูกต้องในอุปกรณ์ทุกเครื่อง คุณต้องทำความเข้าใจสถาปัตยกรรมพื้นฐานนี้
- ไลบรารีที่เกี่ยวข้องกับไทล์ Jetpack: ไลบรารีเหล่านี้ (รวมถึง Wear Tiles
และ Wear ProtoLayout) จะฝังอยู่ในแอป และคุณในฐานะนักพัฒนาแอป
จะเป็นผู้ควบคุมเวอร์ชันของไลบรารี แอปของคุณใช้ไลบรารีเหล่านี้เพื่อสร้างออบเจ็กต์
TileBuilder.Tile
(โครงสร้างข้อมูลที่แสดงถึง Tile ของคุณ) เพื่อตอบสนองต่อการเรียกonTileRequest()
ของระบบ - ProtoLayout Renderer: คอมโพเนนต์ของระบบนี้มีหน้าที่แสดงผลออบเจ็กต์
Tile
บนจอแสดงผลและจัดการการโต้ตอบของผู้ใช้ นักพัฒนาแอปไม่สามารถควบคุมเวอร์ชันของโปรแกรมแสดงผลได้ และเวอร์ชันอาจแตกต่างกันไปในอุปกรณ์ต่างๆ แม้ว่าอุปกรณ์เหล่านั้นจะมีฮาร์ดแวร์เหมือนกันก็ตาม
ลักษณะหรือลักษณะการทำงานของไทล์อาจแตกต่างกันไปตามทั้งเวอร์ชันไลบรารี Jetpack Tiles ของแอปและเวอร์ชัน ProtoLayout Renderer ในอุปกรณ์ของผู้ใช้ เช่น อุปกรณ์หนึ่งอาจรองรับการหมุนหรือการแสดงข้อมูลอัตราการเต้นของหัวใจ และอีกเครื่องอาจไม่รองรับ
เอกสารนี้อธิบายวิธีตรวจสอบว่าแอปของคุณเข้ากันได้กับไลบรารีไทล์และ ProtoLayout Renderer เวอร์ชันต่างๆ รวมถึงวิธีย้ายข้อมูลไปยังไลบรารี Jetpack เวอร์ชันที่สูงกว่า
พิจารณาความเข้ากันได้
หากต้องการสร้างไทล์ที่ทำงานได้อย่างถูกต้องในอุปกรณ์ต่างๆ ให้พิจารณา การรองรับฟีเจอร์ที่แตกต่างกัน คุณทำได้โดยใช้กลยุทธ์หลัก 2 อย่าง ได้แก่ การตรวจหาความสามารถของโปรแกรมแสดงผลขณะรันไทม์และการระบุฟอลแบ็กในตัว
ตรวจหาความสามารถของโปรแกรมแสดงผล
คุณสามารถเปลี่ยนเลย์เอาต์ของไทล์แบบไดนามิกได้ตามฟีเจอร์ที่มีใน อุปกรณ์ที่ต้องการ
ตรวจหาเวอร์ชันของโปรแกรมแสดงผล
- ใช้เมธอด
getRendererSchemaVersion()
ของออบเจ็กต์DeviceParameters
ที่ส่งไปยังเมธอด onTileRequest() เมธอดนี้จะแสดงหมายเลขเวอร์ชันหลักและเวอร์ชันย่อยของ ProtoLayout Renderer ในอุปกรณ์ - จากนั้นคุณจะใช้ตรรกะแบบมีเงื่อนไขในการ
onTileRequest()
ติดตั้งใช้งาน เพื่อปรับการออกแบบหรือลักษณะการทำงานของไทล์ตามเวอร์ชันของโปรแกรมแสดงผลที่ตรวจพบได้
คำอธิบายประกอบ @RequiresSchemaVersion
- คำอธิบายประกอบ
@RequiresSchemaVersion
ในเมธอด ProtoLayout จะระบุ เวอร์ชันสคีมาของเครื่องมือแสดงผลขั้นต่ำที่จำเป็นเพื่อให้เมธอดนั้นทำงานตามที่ ระบุไว้ในเอกสาร (ตัวอย่าง)- แม้ว่าการเรียกใช้เมธอดที่ต้องใช้เวอร์ชันโปรแกรมแสดงผลสูงกว่าเวอร์ชันที่มีในอุปกรณ์จะไม่ทำให้แอปขัดข้อง แต่ก็อาจทำให้เนื้อหาไม่แสดงหรือระบบไม่สนใจฟีเจอร์นั้น
ตัวอย่างการตรวจหาเวอร์ชัน
val rendererVersion = requestParams.deviceConfiguration.rendererSchemaVersion val arcElement = // DashedArcLine has the annotation @RequiresSchemaVersion(major = 1, minor = 500) // and so is supported by renderer versions 1.500 and greater if ( rendererVersion.major > 1 || (rendererVersion.major == 1 && rendererVersion.minor >= 500) ) { // Use DashedArcLine if the renderer supports it … DashedArcLine.Builder() .setLength(degrees(270f)) .setThickness(8f) .setLinePattern( LayoutElementBuilders.DashedLinePattern.Builder() .setGapSize(8f) .setGapInterval(10f) .build() ) .build() } else { // … otherwise use ArcLine. ArcLine.Builder().setLength(degrees(270f)).setThickness(dp(8f)).build() }
ระบุรายการสำรอง
แหล่งข้อมูลบางรายการอนุญาตให้คุณกำหนดการสำรองในเครื่องมือสร้างได้โดยตรง ซึ่งมักจะง่ายกว่าการตรวจสอบเวอร์ชันโปรแกรมแสดงผล และเป็นแนวทางที่แนะนำ เมื่อพร้อมใช้งาน
กรณีการใช้งานที่พบบ่อยคือการระบุรูปภาพแบบคงที่เป็นภาพสำรองสำหรับภาพเคลื่อนไหว Lottie หากอุปกรณ์ไม่รองรับภาพเคลื่อนไหว Lottie อุปกรณ์จะแสดง ภาพนิ่งแทน
val lottieImage = ResourceBuilders.ImageResource.Builder() .setAndroidLottieResourceByResId( ResourceBuilders.AndroidLottieResourceByResId.Builder(R.raw.lottie) .setStartTrigger(createOnVisibleTrigger()) .build() ) // Fallback if lottie is not supported .setAndroidResourceByResId( ResourceBuilders.AndroidImageResourceByResId.Builder() .setResourceId(R.drawable.lottie_fallback) .build() ) .build()
ทดสอบกับเวอร์ชันโปรแกรมแสดงผลต่างๆ
หากต้องการทดสอบไทล์กับตัวแสดงผลเวอร์ชันต่างๆ ให้ติดตั้งใช้งานไทล์ในโปรแกรมจำลอง Wear OS เวอร์ชันต่างๆ (ในอุปกรณ์จริง Play Store หรือการอัปเดตระบบจะส่งการอัปเดต ProtoLayout Renderer ไม่สามารถบังคับให้ติดตั้งโปรแกรมแสดงผลเวอร์ชันใดเวอร์ชันหนึ่งได้)
ฟีเจอร์ตัวอย่างไทล์ของ Android Studio ใช้ตัวแสดงผลที่ฝังอยู่ในไลบรารี ProtoLayout ของ Jetpack ที่โค้ดของคุณขึ้นอยู่กับ ดังนั้นอีกวิธีหนึ่งคือการ ขึ้นอยู่กับไลบรารี Jetpack เวอร์ชันต่างๆ เมื่อทดสอบไทล์
ย้ายข้อมูลไปยังการ์ด 1.5 / ProtoLayout 1.3 (Material 3 Expressive)
อัปเดตไลบรารีไทล์ Jetpack เพื่อใช้ประโยชน์จากการปรับปรุงล่าสุด รวมถึงการเปลี่ยนแปลง UI เพื่อให้ไทล์ผสานรวมกับระบบได้อย่างราบรื่น
Jetpack Tiles 1.5 และ Jetpack ProtoLayout 1.3 มาพร้อมการปรับปรุงและการเปลี่ยนแปลงที่สำคัญหลายอย่าง ซึ่งรวมถึงฟีเจอร์ต่อไปนี้
- API ที่คล้ายกับ Compose สำหรับอธิบาย UI
- คอมโพเนนต์ Material 3 Expressive รวมถึงปุ่มที่อยู่ขอบด้านล่าง และรองรับภาพที่ดียิ่งขึ้น ได้แก่ ภาพเคลื่อนไหว Lottie, การไล่ระดับสี ประเภทต่างๆ และรูปแบบเส้นโค้งใหม่ - หมายเหตุ: คุณยังใช้ฟีเจอร์บางอย่างเหล่านี้ได้โดยไม่ต้องย้ายข้อมูลไปยัง API ใหม่
คำแนะนำ
- ย้ายข้อมูลไทล์ทั้งหมดพร้อมกัน หลีกเลี่ยงการใช้เวอร์ชันไทล์ที่แตกต่างกัน
ภายในแอป แม้ว่าคอมโพเนนต์ Material 3 จะอยู่ในอาร์ติแฟกต์แยกต่างหาก (
androidx.wear.protolayout:protolayout-material3
) ซึ่งทำให้สามารถใช้ทั้งไทล์ M2.5 และ M3 ในแอปเดียวกันได้ในทางเทคนิค แต่เราขอแนะนำอย่างยิ่งว่าไม่ควรใช้วิธีนี้ เว้นแต่จะจำเป็นอย่างยิ่ง (เช่น หากแอปมีไทล์จำนวนมากที่ย้ายข้อมูลพร้อมกันไม่ได้) - ใช้คำแนะนำเกี่ยวกับ UX ของหน้าต่าง เนื่องจากลักษณะของไทล์ที่มีโครงสร้างและเทมเพลตสูง ให้ใช้การออกแบบในตัวอย่างที่มีอยู่เป็นจุดเริ่มต้น สำหรับการออกแบบของคุณเอง
- ทดสอบในหน้าจอและขนาดแบบอักษรต่างๆ โดยทั่วไปแล้วไทล์มักจะมีข้อมูลจำนวนมาก ทำให้ข้อความ (โดยเฉพาะเมื่อวางไว้บนปุ่ม) มีแนวโน้มที่จะล้นและถูกตัดออก หากต้องการลดปัญหานี้ ให้ใช้คอมโพเนนต์ที่สร้างไว้ล่วงหน้า และหลีกเลี่ยงการปรับแต่งที่ซับซ้อน ทดสอบโดยใช้ฟีเจอร์แสดงตัวอย่างไทล์ของ Android Studio รวมถึงในอุปกรณ์จริงหลายเครื่อง
กระบวนการย้ายข้อมูล
อัปเดตทรัพยากร Dependency
ก่อนอื่น ให้อัปเดตไฟล์ build.gradle.kts
อัปเดตเวอร์ชันและเปลี่ยนทรัพยากร Dependency ของ
protolayout-material
เป็น protolayout-material3
ดังที่แสดง
// In build.gradle.kts
//val tilesVersion = "1.4.1"
//val protoLayoutVersion = "1.2.1"
// Use these versions for M3.
val tilesVersion = "1.5.0-rc01"
val protoLayoutVersion = "1.3.0-rc01"
dependencies {
// Use to implement support for wear tiles
implementation("androidx.wear.tiles:tiles:$tilesVersion")
// Use to utilize standard components and layouts in your tiles
implementation("androidx.wear.protolayout:protolayout:$protoLayoutVersion")
// Use to utilize components and layouts with Material Design in your tiles
// implementation("androidx.wear.protolayout:protolayout-material:$protoLayoutVersion")
implementation("androidx.wear.protolayout:protolayout-material3:$protoLayoutVersion")
// Use to include dynamic expressions in your tiles
implementation("androidx.wear.protolayout:protolayout-expression:$protoLayoutVersion")
// Use to preview wear tiles in your own app
debugImplementation("androidx.wear.tiles:tiles-renderer:$tilesVersion")
// Use to fetch tiles from a tile provider in your tests
testImplementation("androidx.wear.tiles:tiles-testing:$tilesVersion")
}
TileService จะยังคงเหมือนเดิม
การเปลี่ยนแปลงหลักๆ ในการย้ายข้อมูลนี้จะส่งผลต่อคอมโพเนนต์ UI ดังนั้น
การติดตั้งใช้งาน TileService
รวมถึงกลไกการโหลดทรัพยากรใดๆ
จึงควรต้องมีการแก้ไขน้อยที่สุดหรือไม่ต้องแก้ไขเลย
ข้อยกเว้นหลักเกี่ยวข้องกับการติดตามกิจกรรมในไทล์ หากแอปใช้
onTileEnterEvent()
หรือ onTileLeaveEvent()
คุณควรย้ายข้อมูลไปยัง
onRecentInteractionEventsAsync()
ตั้งแต่ API 36 เป็นต้นไป ระบบจะจัดกลุ่มเหตุการณ์เหล่านี้
เป็นชุด
ปรับโค้ดการสร้างเลย์เอาต์
ใน ProtoLayout 1.2 (M2.5) เมธอด onTileRequest()
จะแสดงผล
TileBuilders.Tile
ออบเจ็กต์นี้มีองค์ประกอบต่างๆ รวมถึง TimelineBuilders.Timeline
ซึ่งมี LayoutElement
ที่อธิบาย UI ของไทล์
ใน ProtoLayout 1.3 (M3) แม้ว่าโครงสร้างและการไหลของข้อมูลโดยรวมจะไม่ได้เปลี่ยนแปลง แต่ตอนนี้LayoutElement
สร้างขึ้นโดยใช้แนวทางที่ได้แรงบันดาลใจจาก Compose โดยมีเลย์เอาต์ที่อิงตามช่องที่กำหนดไว้ ซึ่งประกอบด้วย (จากบนลงล่าง) titleSlot
(ไม่บังคับ โดยปกติจะใช้สำหรับชื่อหลักหรือส่วนหัว), mainSlot
(บังคับ ใช้สำหรับเนื้อหาหลัก) และ bottomSlot
(ไม่บังคับ มักใช้สำหรับการดำเนินการ เช่น ปุ่มขอบหรือข้อมูลเสริม เช่น ข้อความสั้น) เลย์เอาต์นี้สร้างขึ้นโดยฟังก์ชัน primaryLayout()

การเปรียบเทียบฟังก์ชันเลย์เอาต์ M2.5 และ M3
M2.5
fun myLayout(
context: Context,
deviceConfiguration: DeviceParametersBuilders.DeviceParameters
) =
PrimaryLayout.Builder(deviceConfiguration)
.setResponsiveContentInsetEnabled(true)
.setContent(
Text.Builder(context, "Hello World!")
.setTypography(Typography.TYPOGRAPHY_BODY1)
.setColor(argb(0xFFFFFFFF.toInt()))
.build()
)
.build()
M3
fun myLayout(
context: Context,
deviceConfiguration: DeviceParametersBuilders.DeviceParameters,
) =
materialScope(context, deviceConfiguration) {
primaryLayout(mainSlot = { text("Hello, World!".layoutString) })
}
ความแตกต่างที่สำคัญมีดังนี้
- การยกเลิกการใช้ Builders รูปแบบ Builder แบบเดิมสำหรับคอมโพเนนต์ UI ของ Material3 จะถูกแทนที่ด้วยไวยากรณ์ที่ประกาศได้มากขึ้นซึ่งได้รับแรงบันดาลใจจาก Compose (คอมโพเนนต์ที่ไม่ใช่ UI เช่น String/Color/Modifiers จะได้รับ Kotlin wrapper ใหม่ด้วย)
- ฟังก์ชันการเริ่มต้นและเลย์เอาต์ที่ได้มาตรฐาน เลย์เอาต์ M3 ใช้ฟังก์ชันการเริ่มต้นและโครงสร้างที่ได้มาตรฐาน
materialScope()
และprimaryLayout()
ฟังก์ชันที่จำเป็นเหล่านี้จะเริ่มต้นสภาพแวดล้อม M3 (การกำหนดธีม ขอบเขตของคอมโพเนนต์ผ่านmaterialScope
) และกำหนด เลย์เอาต์หลักที่อิงตามช่อง (ผ่านprimaryLayout
) ทั้ง 2 อย่างนี้ต้องเรียกใช้เพียงครั้งเดียวต่อเลย์เอาต์
ธีม
สี
ฟีเจอร์ที่โดดเด่นของ Material 3 Expressive คือ "การกำหนดธีมแบบไดนามิก" โดยไทล์ที่เปิดใช้ฟีเจอร์นี้ (เปิดอยู่โดยค่าเริ่มต้น) จะแสดงในธีมที่ระบบจัดให้ (ความพร้อมใช้งานขึ้นอยู่กับอุปกรณ์และการกำหนดค่าของผู้ใช้)
การเปลี่ยนแปลงอีกอย่างใน M3 คือการขยายจำนวนโทเค็นสี ซึ่งเพิ่มขึ้นจาก 4 เป็น 29 โทเค็นสีใหม่จะอยู่ในคลาส
ColorScheme
การออกแบบตัวอักษร
M3 คล้ายกับ M2.5 โดยอาศัยค่าคงที่ของขนาดแบบอักษรที่กำหนดไว้ล่วงหน้าเป็นอย่างมาก
จึงไม่แนะนำให้ระบุขนาดแบบอักษรโดยตรง ค่าคงที่เหล่านี้อยู่ในคลาส
Typography
และมีตัวเลือกที่สื่อความหมายได้มากขึ้น
เล็กน้อย
ดูรายละเอียดทั้งหมดได้ในเอกสารประกอบเกี่ยวกับการพิมพ์
รูปทรง
คอมโพเนนต์ M3 ส่วนใหญ่จะแตกต่างกันไปตามมิติข้อมูลของรูปร่างและสี
textButton
(ใน mainSlot
) ที่มีรูปร่าง full
:

ปุ่มข้อความเดียวกันที่มีรูปร่าง small
:

คอมโพเนนต์
คอมโพเนนต์ M3 มีความยืดหยุ่นและกำหนดค่าได้มากกว่าคอมโพเนนต์ M2.5 อย่างมาก ในขณะที่ M2.5 มักต้องใช้คอมโพเนนต์ที่แตกต่างกันสำหรับการปรับแต่งภาพที่หลากหลาย แต่ M3 มักใช้คอมโพเนนต์ "ฐาน" ที่มีความทั่วไปแต่กำหนดค่าได้สูงพร้อมค่าเริ่มต้นที่ดี
หลักการนี้ใช้กับเลย์เอาต์ "รูท" ใน M2.5 ค่านี้จะเป็น PrimaryLayout
หรือ EdgeContentLayout
ใน M3 หลังจากสร้างMaterialScope
ระดับบนสุดรายการเดียวแล้ว ระบบจะเรียกใช้ฟังก์ชัน primaryLayout()
ซึ่งจะแสดงผลเลย์เอาต์รูทโดยตรง (ไม่จำเป็นต้องใช้ Builder) และยอมรับ LayoutElements
สำหรับ "ช่อง" หลายช่อง เช่น titleSlot
, mainSlot
และ bottomSlot
ช่องเหล่านี้สามารถแสดงคอมโพเนนต์ UI ที่เฉพาะเจาะจงได้ เช่น
ที่ส่งคืนโดย text(), button() หรือ card() หรือโครงสร้างเลย์เอาต์ เช่น
Row
หรือ Column
จาก LayoutElementBuilders
ธีมเป็นอีกหนึ่งการปรับปรุงที่สำคัญของ M3 โดยค่าเริ่มต้น องค์ประกอบ UI จะยึดตามข้อกำหนดการจัดรูปแบบ M3 โดยอัตโนมัติและรองรับการกำหนดธีมแบบไดนามิก
M2.5 | M3 |
---|---|
องค์ประกอบแบบอินเทอร์แอกทีฟ | |
Button หรือ Chip |
|
ข้อความ | |
Text |
text() |
ตัวบ่งชี้ความคืบหน้า | |
CircularProgressIndicator |
circularProgressIndicator() หรือ segmentedCircularProgressIndicator() |
เลย์เอาต์ | |
PrimaryLayout หรือ EdgeContentLayout |
primaryLayout() |
— | buttonGroup() |
รูปภาพ | |
— | icon() , avatarImage() หรือ backgroundImage() |
ตัวปรับแต่ง
ใน M3 Modifiers
ซึ่งคุณใช้เพื่อตกแต่งหรือเพิ่มคอมโพเนนต์ จะมีลักษณะคล้าย Compose มากขึ้น
การเปลี่ยนแปลงนี้ช่วยลดโค้ดสำเร็จรูปได้ด้วยการสร้างประเภทภายในที่เหมาะสมโดยอัตโนมัติ
(การเปลี่ยนแปลงนี้ไม่เกี่ยวข้องกับการใช้คอมโพเนนต์ UI ของ M3 หากจำเป็น คุณสามารถใช้ตัวแก้ไขสไตล์ Builder จาก ProtoLayout 1.2 กับคอมโพเนนต์ UI ของ M3 และในทางกลับกัน)
M2.5
// A Builder-style modifier to set the opacity of an element to 0.5
fun myModifier(): ModifiersBuilders.Modifiers =
ModifiersBuilders.Modifiers.Builder()
.setOpacity(TypeBuilders.FloatProp.Builder(0.5F).build())
.build()
M3
// The equivalent Compose-like modifier is much simpler
fun myModifier(): LayoutModifier = LayoutModifier.opacity(0.5F)
คุณสร้างตัวแก้ไขได้โดยใช้รูปแบบ API หรือจะใช้ฟังก์ชันส่วนขยาย toProtoLayoutModifiers()
เพื่อแปลง LayoutModifier
เป็น ModifiersBuilders.Modifier
ก็ได้
ฟังก์ชันตัวช่วย
แม้ว่า ProtoLayout 1.3 จะอนุญาตให้แสดงคอมโพเนนต์ UI จำนวนมากโดยใช้ API ที่ได้แรงบันดาลใจจาก Compose แต่เลย์เอาต์พื้นฐาน เช่น แถวและคอลัมน์จาก LayoutElementBuilders
จะยังคงใช้รูปแบบ Builder ต่อไป
หากต้องการลดช่องว่างด้านสไตล์และส่งเสริมความสอดคล้องกับ API ของคอมโพเนนต์ M3
ใหม่ ให้พิจารณาใช้ฟังก์ชันช่วย
ไม่มีผู้ช่วย
primaryLayout(
mainSlot = {
LayoutElementBuilders.Column.Builder()
.setWidth(expand())
.setHeight(expand())
.addContent(text("A".layoutString))
.addContent(text("B".layoutString))
.addContent(text("C".layoutString))
.build()
}
)
พร้อมผู้ช่วย
// Function literal with receiver helper function
fun column(builder: Column.Builder.() -> Unit) =
Column.Builder().apply(builder).build()
primaryLayout(
mainSlot = {
column {
setWidth(expand())
setHeight(expand())
addContent(text("A".layoutString))
addContent(text("B".layoutString))
addContent(text("C".layoutString))
}
}
)
ย้ายข้อมูลไปยังการ์ด 1.2 / ProtoLayout 1.0
ตั้งแต่เวอร์ชัน 1.2 เป็นต้นไป API เลย์เอาต์ของไทล์ส่วนใหญ่จะอยู่ในเนมสเปซ androidx.wear.protolayout
หากต้องการใช้ API เวอร์ชันล่าสุด ให้ทําตามขั้นตอนการย้ายข้อมูลต่อไปนี้ในโค้ด
อัปเดตทรัพยากร Dependency
ในไฟล์บิลด์ของโมดูลแอป ให้ทำการเปลี่ยนแปลงต่อไปนี้
Groovy
// Removeimplementation 'androidx.wear.tiles:tiles-material:version'// Include additional dependencies implementation "androidx.wear.protolayout:protolayout:1.3.0" implementation "androidx.wear.protolayout:protolayout-material:1.3.0" implementation "androidx.wear.protolayout:protolayout-expression:1.3.0" // Update implementation "androidx.wear.tiles:tiles:1.5.0"
Kotlin
// Removeimplementation("androidx.wear.tiles:tiles-material:version")// Include additional dependencies implementation("androidx.wear.protolayout:protolayout:1.3.0") implementation("androidx.wear.protolayout:protolayout-material:1.3.0") implementation("androidx.wear.protolayout:protolayout-expression:1.3.0") // Update implementation("androidx.wear.tiles:tiles:1.5.0")
อัปเดตเนมสเปซ
ในไฟล์โค้ดที่ใช้ Kotlin และ Java ของแอป ให้ทำการอัปเดตต่อไปนี้ หรือจะเรียกใช้สคริปต์การเปลี่ยนชื่อเนมสเปซ นี้ก็ได้
- แทนที่การนำเข้า
androidx.wear.tiles.material.*
ทั้งหมดด้วยandroidx.wear.protolayout.material.*
ทำขั้นตอนนี้สำหรับคลังandroidx.wear.tiles.material.layouts
ด้วย แทนที่การนำเข้า
androidx.wear.tiles.*
อื่นๆ ส่วนใหญ่ด้วยandroidx.wear.protolayout.*
การนำเข้าสำหรับ
androidx.wear.tiles.EventBuilders
,androidx.wear.tiles.RequestBuilders
,androidx.wear.tiles.TileBuilders
และandroidx.wear.tiles.TileService
ควรคงเดิมเปลี่ยนชื่อเมธอดที่เลิกใช้งานแล้วบางรายการจากคลาส TileService และ TileBuilder ดังนี้
TileBuilders
:getTimeline()
ถึงgetTileTimeline()
และsetTimeline()
ถึงsetTileTimeline()
TileService
:onResourcesRequest()
ถึงonTileResourcesRequest()
RequestBuilders.TileRequest
:getDeviceParameters()
ถึงgetDeviceConfiguration()
,setDeviceParameters()
ถึงsetDeviceConfiguration()
,getState()
ถึงgetCurrentState()
และsetState()
ถึงsetCurrentState()