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

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

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

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

গতিশীল রং অর্জন করার দুটি উপায় আছে:

রুট লেআউটে থিম সেট হয়ে গেলে, আপনি রুট বা এর যেকোনো বাচ্চাদের মধ্যে সাধারণ রঙের বৈশিষ্ট্য ব্যবহার করতে পারেন ডায়নামিক রঙগুলি বেছে নিতে।

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

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

নিম্নলিখিত উদাহরণে উপাদান 3 থিম ব্যবহার করে, ডিভাইসের থিমের রঙ হল "বেগুনি।" অ্যাকসেন্ট রঙ এবং উইজেট ব্যাকগ্রাউন্ড হালকা এবং গাঢ় মোডের জন্য খাপ খায়, যেমনটি চিত্র 1 এবং 2 এ দেখানো হয়েছে।

<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>
লাইট মোড থিমে উইজেট
চিত্র 1. হালকা থিমে উইজেট।
ডার্ক মোড থিমে উইজেট
চিত্র 2. অন্ধকার থিমে উইজেট।

গতিশীল রঙের জন্য পশ্চাদগামী সামঞ্জস্য

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

এখানে উপাদান 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

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

ভয়েস সমর্থন সক্ষম করুন

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

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

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

আপনার অ্যাপের উইজেট পিকার অভিজ্ঞতা উন্নত করুন

অ্যান্ড্রয়েড 12 আপনাকে গতিশীল উইজেট প্রিভিউ এবং উইজেট বিবরণ যোগ করে আপনার অ্যাপের জন্য উইজেট পিকার অভিজ্ঞতা উন্নত করতে দেয়।

উইজেট পিকারে স্কেলেবল উইজেট প্রিভিউ যোগ করুন

অ্যান্ড্রয়েড 12 থেকে শুরু করে, উইজেট পিকারে প্রদর্শিত উইজেট প্রিভিউ স্কেলযোগ্য। আপনি এটি উইজেটের ডিফল্ট আকারে সেট করা একটি XML বিন্যাস হিসাবে প্রদান করেন। পূর্বে, উইজেট প্রিভিউ ছিল একটি স্ট্যাটিক অঙ্কনযোগ্য রিসোর্স, কিছু কিছু ক্ষেত্রে প্রিভিউগুলিকে ভুলভাবে প্রতিফলিত করে যে উইজেটগুলি হোম স্ক্রিনে যুক্ত হলে কীভাবে প্রদর্শিত হয়।

স্কেলযোগ্য উইজেট পূর্বরূপ বাস্তবায়ন করতে, পরিবর্তে একটি XML বিন্যাস প্রদান করতে appwidget-provider উপাদানের previewLayout বৈশিষ্ট্য ব্যবহার করুন:

<appwidget-provider
    android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>

আমরা বাস্তবসম্মত ডিফল্ট বা পরীক্ষার মান সহ প্রকৃত উইজেটের মতো একই লেআউট ব্যবহার করার পরামর্শ দিই। বেশিরভাগ অ্যাপ একই previewLayout এবং initialLayout ব্যবহার করে। সঠিক প্রিভিউ লেআউট তৈরির বিষয়ে নির্দেশনার জন্য, এই পৃষ্ঠায় নিম্নলিখিত বিভাগটি দেখুন।

আমরা previewLayout এবং previewImage বৈশিষ্ট্য উভয়ই নির্দিষ্ট করার পরামর্শ দিই, যাতে ব্যবহারকারীর ডিভাইস previewLayout সমর্থন না করলে আপনার অ্যাপটি previewImage ব্যবহার করতে পারে। previewLayout অ্যাট্রিবিউটটি previewImage অ্যাট্রিবিউটের চেয়ে প্রাধান্য পায়।

সঠিক পূর্বরূপ নির্মাণের জন্য প্রস্তাবিত পদ্ধতি

স্কেলযোগ্য উইজেট পূর্বরূপ বাস্তবায়ন করতে, একটি XML বিন্যাস প্রদান করতে appwidget-provider উপাদানের previewLayout বৈশিষ্ট্য ব্যবহার করুন:

<appwidget-provider
    ...
    android:previewLayout="@layout/my_widget_preview">
</appwidget-provider>
একটি উইজেট পূর্বরূপ দেখানো একটি চিত্র৷
চিত্র 3. একটি উইজেট প্রিভিউ যা ডিফল্টভাবে একটি 3x3 এলাকায় প্রদর্শিত হয় কিন্তু এটির XML বিন্যাসের কারণে একটি 3x1 এলাকায় ফিট হতে পারে।

একটি সঠিক পূর্বরূপ প্রদর্শন করতে, আপনি নিম্নলিখিত ধাপগুলি সম্পূর্ণ করে ডিফল্ট মান সহ প্রকৃত উইজেট বিন্যাস সরাসরি প্রদান করতে পারেন:

  • TextView উপাদানের জন্য android:text="@string/my_widget_item_fake_1" সেট করা হচ্ছে।

  • ImageView উপাদানগুলির জন্য একটি ডিফল্ট বা স্থানধারক চিত্র বা আইকন সেট করা, যেমন android:src="@drawable/my_widget_icon"

ডিফল্ট মান ছাড়া, প্রিভিউ ভুল বা খালি মান দেখাতে পারে। এই পদ্ধতির একটি গুরুত্বপূর্ণ সুবিধা হল আপনি স্থানীয় পূর্বরূপ সামগ্রী প্রদান করতে পারেন।

ListView , GridView , বা StackView ধারণ করা আরও জটিল প্রিভিউগুলির জন্য প্রস্তাবিত পদ্ধতির জন্য, বিশদ বিবরণের জন্য ডায়নামিক আইটেমগুলি অন্তর্ভুক্ত করে নির্ভুল পূর্বরূপ তৈরি করুন দেখুন।

স্কেলযোগ্য উইজেট পূর্বরূপের সাথে পশ্চাদগামী সামঞ্জস্য

অ্যান্ড্রয়েড 11 (এপিআই লেভেল 30) বা আপনার উইজেটের নিচের প্রিভিউ দেখাতে উইজেট পিকারদের অনুমতি দিতে, previewImage অ্যাট্রিবিউট নির্দিষ্ট করুন।

আপনি উইজেটের চেহারা পরিবর্তন করলে, পূর্বরূপ চিত্রটি আপডেট করুন।

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

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

একটি উইজেট বাছাইকারীকে দেখানো একটি চিত্র একটি উইজেট এবং তার বিবরণ দেখাচ্ছে৷
চিত্র 4. নমুনা উইজেট বাছাইকারী একটি উইজেট এবং তার বিবরণ দেখাচ্ছে।

&lt;appwidget-provider&gt; এর description বৈশিষ্ট্য ব্যবহার করে আপনার উইজেটের জন্য একটি বিবরণ প্রদান করুন। উপাদান:

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

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

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

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

এই উন্নত রূপান্তরটি সক্ষম করতে, আপনার পটভূমি উপাদান সনাক্ত করতে @android:id/background বা android.R.id.background ব্যবহার করুন:

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

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

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

অ্যান্ড্রয়েড 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_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);