আপনার উইজেট উন্নত করা

'কম্পোজ' ফিচার ব্যবহার করে দেখুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-স্টাইল API ব্যবহার করে কীভাবে উইজেট তৈরি করতে হয় তা জানুন।

এই পৃষ্ঠায় ঐচ্ছিক উইজেট এনহ্যান্সমেন্টের বিবরণ দেওয়া আছে যা Android 12 (API লেভেল 31) থেকে শুরু করে উপলভ্য। এইসব ফিচার ঐচ্ছিক, তবে এগুলি সহজেই প্রয়োগ করা যায় এবং ব্যবহারকারীর উইজেট অভিজ্ঞতা উন্নত করে।

আপনার উইজেট কীভাবে আরও উন্নত করবেন তা দেখার অতিরিক্ত উপায় জানতে, 'কম্পোজ' নির্দেশিকার আপনার উইজেট উন্নত করুন দেখুন।

ডায়নামিক কালার ব্যবহার করা

Android 12 থেকে শুরু করে, বোতাম, ব্যাকগ্রাউন্ড ও অন্যান্য কম্পোনেন্টের জন্য উইজেট ডিভাইসের থিমের রঙ ব্যবহার করতে পারে। এর ফলে বিভিন্ন উইজেট জুড়ে মসৃণ ট্রানজিশন ও ধারাবাহিকতা প্রদান করা যায়।

ডায়নামিক কালার পাওয়ার দুটি উপায় আছে:

রুট লেআউটে থিম সেট করা হয়ে গেলে, ডায়নামিক কালার বেছে নিতে, আপনি রুট বা এর যেকোনও চাইল্ডে সাধারণ কালার অ্যাট্রিবিউট ব্যবহার করতে পারবেন।

আপনি ব্যবহার করতে পারেন এমন রঙের অ্যাট্রিবিউটের কিছু উদাহরণ নিচে দেওয়া হল:

  • ?attr/primary
  • ?attr/primaryContainer
  • ?attr/onPrimary
  • ?attr/onPrimaryContainer

Material 3 থিম ব্যবহার করে নিম্নলিখিত উদাহরণে, ডিভাইসের থিমের রঙ হল "কিছুটা বেগুনি"। ১ ও ২ নম্বর ছবিতে দেখানো হয়েছে যে অ্যাকসেন্ট রঙ ও উইজেট ব্যাকগ্রাউন্ড হালকা ও গাঢ় মোডের সাথে মানিয়ে নেয়।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?attr/colorPrimaryContainer"
    android:theme="@style/Theme.Material3.DynamicColors.DayNight">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:tint="?attr/colorPrimaryContainer"
        android:src="@drawable/ic_cloud" />

    <!-- Other widget content. -->

</LinearLayout>

লাইট মোড থিমে উইজেট
ছবি ১. লাইট থিমে উইজেট।
ডার্ক মোড থিমের উইজেট
ছবি ২. ডার্ক থিমে উইজেট।

ডায়নামিক কালারের জন্য ব্যাকওয়ার্ড কম্প্যাটিবিলিটি

ডায়নামিক কালার শুধু Android 12 বা এর পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে উপলভ্য। নিম্নলিখিত ভার্সনের জন্য কাস্টম থিম প্রদান করতে, আপনার কাস্টম কালার ও নতুন কোয়ালিফায়ার (values-v31) সহ একটি ডিফল্ট থিম তৈরি করুন এবং ডিফল্ট থিম অ্যাট্রিবিউট ব্যবহার করুন।

Material 3 থিম ব্যবহার করে এখানে একটি উদাহরণ দেওয়া হল:

/values/styles.xml

<resources>
  <style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight">
    <!-- Override default colorBackground attribute with custom color. -->
    <item name="android:colorBackground">@color/my_background_color</item>

    <!-- Add other colors/attributes. -->

  </style>
</resources>

/values-v31/styles.xml

<resources>
  <!-- Do not override any color attribute. -->
  <style name="MyWidgetTheme" parent="Theme.Material3.DynamicColors.DayNight" />
</resources>

/layout/my_widget_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="?android:attr/colorBackground"
    android:theme="@style/MyWidgetTheme" />

ভয়েস সহায়তা চালু করা

অ্যাপ অ্যাকশন, Google Assistant-কে ব্যবহারকারীর প্রাসঙ্গিক ভয়েস কমান্ডের উত্তর হিসেবে উইজেট দেখাতে দেয়। বিল্ট-ইন ইনটেন্ট (BII)-এর উত্তর দেওয়ার জন্য আপনার উইজেট কনফিগার করার মাধ্যমে, আপনার অ্যাপ Android এবং Android Auto-এর মতো Assistant সারফেসে আগে থেকেই উইজেট দেখাতে পারে। ব্যবহারকারীদের কাছে Assistant-এর দেখানো উইজেট পিন করার বিকল্প আছে, যা তারা লঞ্চারে করতে পারেন। এটি ভবিষ্যতে এনগেজমেন্ট বাড়াতে সাহায্য করে।

যেমন, আপনি ব্যায়াম অ্যাপের জন্য ওয়ার্কআউট সারসংক্ষেপ উইজেট কনফিগার করতে পারেন ব্যবহারকারীর ভয়েস কমান্ড পূরণ করতে যা GET_EXERCISE_OBSERVATION BII ট্রিগার করে। ব্যবহারকারীরা এই BII ট্রিগার করলে Assistant আগে থেকেই আপনার উইজেট দেখায়। এটি তারা এই ধরনের অনুরোধ করে করেন, "Ok Google, আমি এই সপ্তাহে ExampleApp-এ কত মাইল হেঁটেছি?"

ব্যবহারকারীর ইন্টার‍্যাকশনের বিভিন্ন বিভাগ কভার করে এমন ডজন ডজন BII আছে, যা প্রায় যেকোনও Android অ্যাপকে ভয়েসের জন্য তাদের উইজেট উন্নত করতে দেয়। শুরু করতে, Android উইজেটের সাথে অ্যাপ অ্যাকশন ইন্টিগ্রেট করা দেখুন।

আরও মসৃণ ট্রানজিশন চালু করা

Android 12 থেকে শুরু করে, কোনও ব্যবহারকারী উইজেট থেকে আপনার অ্যাপ লঞ্চ করলে, লঞ্চার আরও মসৃণ ট্রানজিশন প্রদান করে।

এই উন্নত ট্রানজিশন চালু করতে, আপনার ব্যাকগ্রাউন্ড এলিমেন্ট শনাক্ত করতে @android:id/background বা android.R.id.background ব্যবহার করুন:

<!-- Top-level layout of the widget. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/background"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
</LinearLayout>

আপনার অ্যাপ @android:id/background ব্যবহার করতে পারে, তবে এটি উপেক্ষা করা হয়।

RemoteViews-এর রানটাইম মডিফিকেশন ব্যবহার করা

Android 12 থেকে শুরু করে, আপনি এমন একাধিক RemoteViews পদ্ধতি ব্যবহার করতে পারবেন যা RemoteViews অ্যাট্রিবিউটের রানটাইম মডিফিকেশন প্রদান করে। যোগ করা পদ্ধতির সম্পূর্ণ তালিকা পেতে RemoteViews API রেফারেন্স দেখুন।

নিচের কোডের উদাহরণ থেকে এইসব পদ্ধতির কয়েকটির ব্যবহার সম্পর্কে জানতে পারবেন।

// Set the colors of a progress bar at runtime.
remoteView.setColorStateList(
    R.id.progress, "setProgressTintList", createProgressColorStateList()
)

// Specify exact sizes for margins.
remoteView.setViewLayoutMargin(
    R.id.text, RemoteViews.MARGIN_END, 8f, TypedValue.COMPLEX_UNIT_DIP
)