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

কম্পোজ পদ্ধতিটি চেষ্টা করুন
অ্যান্ড্রয়েডের জন্য Jetpack Compose হলো প্রস্তাবিত UI টুলকিট। Compose-স্টাইলের API ব্যবহার করে কীভাবে উইজেট তৈরি করতে হয় তা শিখুন।

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

গতিশীল রঙ ব্যবহার করুন

অ্যান্ড্রয়েড ১২ থেকে, একটি উইজেট তার বাটন, ব্যাকগ্রাউন্ড এবং অন্যান্য উপাদানের জন্য ডিভাইস থিমের রঙ ব্যবহার করতে পারে। এর ফলে বিভিন্ন উইজেটের মধ্যে মসৃণ ট্রানজিশন এবং সামঞ্জস্য বজায় থাকে।

ডাইনামিক রঙ অর্জন করার দুটি উপায় আছে:

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

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

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

ম্যাটেরিয়াল ৩ থিম ব্যবহার করে তৈরি নিম্নলিখিত উদাহরণটিতে, ডিভাইসটির থিম কালার হলো 'বেগুনি'। চিত্র ১ এবং ২-এ যেমন দেখানো হয়েছে, অ্যাকসেন্ট কালার এবং উইজেটের ব্যাকগ্রাউন্ড লাইট ও ডার্ক মোডের জন্য পরিবর্তিত হয়।

<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
    ...
    app:tint="?attr/colorPrimaryContainer"
    android:src="@drawable/ic_partly_cloudy" />

    <!-- Other widget content. -->

</LinearLayout>
লাইট মোড থিমে উইজেট
চিত্র ১. লাইট থিমের উইজেট।
ডার্ক মোড থিমের উইজেটগুলি
চিত্র ২. ডার্ক থিমে থাকা উইজেট।

ডাইনামিক রঙের জন্য পশ্চাৎ সামঞ্জস্যতা

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

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

/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

<resources>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:background="?android:attr/colorBackground"
    android:theme="@style/MyWidgetTheme" />
</resources>

ভয়েস সাপোর্ট সক্রিয় করুন

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

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

ব্যবহারকারীর মিথস্ক্রিয়ার বিভিন্ন বিভাগকে অন্তর্ভুক্ত করে এমন কয়েক ডজন BII (বিল্ড-ইনস্টল ইন্টিগ্রেটর) রয়েছে, যা প্রায় যেকোনো অ্যান্ড্রয়েড অ্যাপকে তাদের উইজেটগুলোকে ভয়েসের জন্য উন্নত করতে দেয়। শুরু করার জন্য, ‘অ্যান্ড্রয়েড উইজেটের সাথে অ্যাপ অ্যাকশন ইন্টিগ্রেট করুন ’ দেখুন।

আপনার উইজেটে একটি নাম যোগ করুন

উইজেট পিকার-এ প্রদর্শিত হওয়ার সময় উইজেটগুলোর একটি অনন্য নাম থাকা প্রয়োজন।

AndroidManifest.xml ফাইলে থাকা উইজেটের receiver এলিমেন্টের label অ্যাট্রিবিউট থেকে উইজেটগুলোর নাম লোড করা হয়।

<receiver
    ….
   android:label="Memories">
     ….
</receiver>

আপনার উইজেটের জন্য একটি বিবরণ যোগ করুন

অ্যান্ড্রয়েড ১২ থেকে, আপনার উইজেটের জন্য উইজেট পিকার যাতে প্রদর্শিত হয়, তার জন্য একটি বিবরণ প্রদান করুন।

একটি ছবিতে একটি উইজেট পিকার দেখা যাচ্ছে, যেখানে একটি উইজেট এবং তার বিবরণ প্রদর্শিত হচ্ছে।
চিত্র ৩. একটি উইজেট এবং তার বিবরণ দেখানো একটি নমুনা উইজেট পিকার।

&lt;appwidget-provider&gt; এলিমেন্টের description অ্যাট্রিবিউট ব্যবহার করে আপনার উইজেটের জন্য একটি বিবরণ দিন:

<appwidget-provider
    android:description="@string/my_widget_description">
</appwidget-provider>

আপনি অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে descriptionRes অ্যাট্রিবিউটটি ব্যবহার করতে পারতেন, কিন্তু উইজেট পিকার এটিকে উপেক্ষা করত।

মসৃণ রূপান্তর সক্ষম করুন

অ্যান্ড্রয়েড ১২ থেকে, কোনো ব্যবহারকারী যখন উইজেট থেকে আপনার অ্যাপ চালু করেন, তখন লঞ্চারগুলো আরও মসৃণ ট্রানজিশন প্রদান করে।

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

// Top-level layout of the widget.
<LinearLayout
    android:id="@android:id/background">
</LinearLayout>

আপনার অ্যাপ অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে কোনো সমস্যা ছাড়াই @android:id/background ব্যবহার করতে পারে, কিন্তু তা উপেক্ষা করা হয়।

RemoteViews-এর রানটাইম পরিবর্তন ব্যবহার করুন

অ্যান্ড্রয়েড ১২ থেকে, আপনি 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_DP)

জাভা

// 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_DP);