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

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

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

আপনার উইজেট কীভাবে উন্নত করবেন তা দেখার অতিরিক্ত উপায়ের জন্য, Compose গাইড আপনার উইজেট উন্নত করুন দেখুন।

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

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 ১২ বা তার পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসেই শুধু ডায়নামিক কালার উপলভ্য। নিম্নতর ভার্সনের জন্য কাস্টম থিম প্রদান করতে, ডিফল্ট থিম অ্যাট্রিবিউট ব্যবহার করে আপনার কাস্টম রঙ এবং নতুন কোয়ালিফায়ার (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-এর আগের ভার্সনে @android:id/background ব্যবহার করতে পারে কোনও সমস্যা ছাড়াই, তবে এটি উপেক্ষা করা হয়।

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

Android ১২ থেকে শুরু করে, আপনি বিভিন্ন 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
)