টাইলস সঙ্গে মিথস্ক্রিয়া

আপনি এটিকে ইন্টারেক্টিভ করে আপনার টাইল অভিজ্ঞতা আরও উন্নত করতে পারেন। টাইলের মধ্যে একটি লেআউট উপাদানে 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
    }
}
{% verbatim %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}