شما می توانید تجربه کاشی خود را با تعاملی کردن بیشتر افزایش دهید. با افزودن اصلاحکننده Clickable
به عنصر طرحبندی درون کاشی، میتوانید به ضربه زدن کاربر به آن عنصر طرحبندی واکنش نشان دهید.
این صفحه چندین عمل متداول را که کاربران در کاشی های تعاملی انجام می دهند، همراه با راهنمایی در مورد نحوه اجرای این رفتار در کاشی های برنامه شما فهرست می کند.
یک طرح کاشی جدید بارگیری کنید
وقتی کاربر روی یک عنصر تعاملی ضربه می زند، از LoadAction
برای تازه کردن طرح کاشی خود استفاده کنید.
در قطعه کد زیر، شناسه قابل کلیک مجموعه در setId()
به فراخوانی onTileRequest()
ارسال می شود، بنابراین می توانید یک طرح بندی متفاوت را بر اساس این شناسه ارائه دهید:
override fun onTileRequest(requestParams: TileRequest) = Futures.immediateFuture(
Tile.Builder()
.setResourcesVersion("1")
.setTileTimeline(Timeline.fromLayoutElement(
when(requestParams.currentState.lastClickableId) {
"foo" -> myFooLayout()
else -> myOtherLayout()
}
)).build()
)
به روز رسانی وضعیت در کاشی
اگر یک عنصر تعاملی در کاشی شما چندین حالت ممکن دارد، از LoadAction
برای نشان دادن مقدار جدید عنصر استفاده کنید. در قطعه کد زیر، کاشی مقدار به روز شده یک چک باکس را نشان می دهد:
private fun checkboxChip(
checkboxValue: Boolean,
deviceParameters: DeviceParametersBuilders.DeviceParameters
): Chip =
Chip.Builder(
context,
Clickable.Builder()
.setOnClick(LoadAction.Builder()
.build()
).build(),
deviceParameters
).setIconContent(if (checkboxValue) "check" else "checkoff")
// Set checkbox labels and colors here.
.build()
درخواست تجدید محتوای کاشی کنید
برای درخواست بهروزرسانی برای کل محتوای کاشی، از LoadAction
استفاده کنید و وضعیت درخواست کاشی را بهروزرسانی کنید، همانطور که در قطعه کد زیر نشان داده شده است.
private fun tappableElement(): LayoutElement =
Button.Builder(this, Clickable.Builder()
.setId("foo")
.setOnClick(LoadAction.Builder()
.setRequestState(
StateBuilders.State.Builder()
/* Update state information here. */
.build()
).build()
).build())
.setTextContent("Tap me!")
.build()
یک فعالیت را با استفاده از پیوند عمیق بارگیری کنید
برای بارگیری یک فعالیت با استفاده از پیوند عمیق ، یک عنصر قابل کلیک را با یک شی LoadAction
مرتبط کنید:
private fun tappableElement(): LayoutElement =
Text.Builder()
.setText("Tap me!")
.setModifiers(Modifiers.Builder()
.setClickable(Clickable.Builder()
.setId("foo")
.setOnClick(LoadAction.Builder().build())
.build()
).build()
).build()
سپس، در متد onTileRequest()
، از یک شی TaskStackBuilder
به عنوان کمک کننده استفاده کنید:
override fun onTileRequest(requestParams: TileRequest): ListenableFuture<TileBuilders.Tile> {
val lastClickableId = requestParams.currentState.lastClickableId
if (lastClickableId == "foo") {
TaskStackBuilder.create(this)
.addNextIntentWithParentStack(Intent(
Intent.ACTION_VIEW,
"https://www.example.com/$lastClickableId".toUri(),
context,
MyWearOsAppActivity::class.java
))
.startActivities()
}
// The user clicked somewhere else on the tile instead.
}
بارگیری یک فعالیت صادر شده
برای بارگیری یک فعالیت صادر شده با نام کلاس و با موارد اضافی قصد، از LaunchAction
استفاده کنید.
private fun tappableElement(): LayoutElement =
Text.Builder(this, "Tap me!")
.setModifiers(Modifiers.Builder()
.setClickable(Clickable.Builder()
.setId("foo")
.setOnClick(ActionBuilders.launchAction(
ComponentName("my.package.name", "MyActivity")
)).build()
).build()
).build()
در داخل فعالیت راه اندازی شده، می توانید شناسه ای را که برای کاشی استفاده شده است، همانطور که در مثال زیر نشان داده شده است، بازیابی کنید:
class MyActivity : FragmentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val clickableId =
intent.getStringExtra(TileService.EXTRA_CLICKABLE_ID)
// clickableId will be "foo" when launched from the Tile
}
}
{% کلمه به کلمه %}برای شما توصیه می شود
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- اولین کاشی خود را در Wear OS ایجاد کنید
- به فضاهای نام ProtoLayout مهاجرت کنید
- نمایش به روز رسانی های پویا در کاشی ها