این صفحه شامل جزئیاتی برای بهبودهای اختیاری ویجت است که از Android 12 در دسترس هستند (سطح API 31). این ویژگی ها اختیاری هستند، اما برای پیاده سازی و بهبود تجربه ویجت کاربران شما ساده هستند.
از رنگ های پویا استفاده کنید
با شروع اندروید 12، یک ویجت میتواند از رنگهای تم دستگاه برای دکمهها، پسزمینهها و سایر اجزا استفاده کند. این انتقال نرمتر و سازگاری را در بین ویجتهای مختلف فراهم میکند.
دو راه برای دستیابی به رنگ های پویا وجود دارد:
از تم پیشفرض سیستم (
@android:style/Theme.DeviceDefault.DayNight
) در طرحبندی اصلی استفاده کنید.از طرح زمینه Material 3 (
Theme.Material3.DynamicColors.DayNight
) از کتابخانه Material Components برای Android استفاده کنید که در Material Components برای Android نسخه 1.6.0 موجود است.
هنگامی که موضوع در چیدمان ریشه تنظیم شد، می توانید از ویژگی های رنگ رایج در ریشه یا هر یک از فرزندان آن برای انتخاب رنگ های پویا استفاده کنید.
چند نمونه از ویژگی های رنگی که می توانید استفاده کنید به شرح زیر است:
-
?attr/primary
-
?attr/primaryContainer
-
?attr/onPrimary
-
?attr/onPrimaryContainer
در مثال زیر با استفاده از تم Material 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>


سازگاری با عقب برای رنگ های پویا
رنگهای پویا فقط در دستگاههای دارای اندروید ۱۲ یا بالاتر در دسترس هستند. برای ارائه یک طرح زمینه سفارشی برای نسخههای پایینتر، با استفاده از ویژگیهای تم پیشفرض، یک تم پیشفرض با رنگهای سفارشی خود و یک واجد شرایط جدید ( 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
<resources>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
android:background="?android:attr/colorBackground"
android:theme="@style/MyWidgetTheme" />
</resources>
پشتیبانی صوتی را فعال کنید
App Actions به Google Assistant اجازه میدهد ویجتها را در پاسخ به دستورات صوتی کاربر نشان دهد. با پیکربندی ویجت خود برای پاسخ به مقاصد داخلی (BII) ، برنامه شما میتواند به طور فعال ویجتها را روی سطوح دستیار مانند Android و Android Auto نمایش دهد. کاربران این گزینه را دارند که ویجتهای نمایش داده شده توسط Assistant را به لانچر خود پین کنند ، که این امر باعث تشویق در تعامل در آینده میشود.
برای مثال، میتوانید ویجت خلاصه تمرین را برای برنامه تمرین خود پیکربندی کنید تا دستورات صوتی کاربر را که GET_EXERCISE_OBSERVATION
BII را راهاندازی میکنند، انجام دهد. وقتی کاربران این BII را فعال میکنند، «دستیار» با درخواستهایی مانند «Hey Google، چند مایل در این هفته در ExampleApp دویدم؟» به طور فعال ویجت شما را نمایش میدهد؟
دهها BII وجود دارد که چندین دسته از تعاملات کاربر را پوشش میدهد و تقریباً به هر برنامه اندرویدی اجازه میدهد ویجتهای خود را برای صدا ارتقا دهد. برای شروع، به ادغام اقدامات برنامه با ویجت های Android مراجعه کنید.
یک نام به ویجت خود اضافه کنید
هنگامی که ویجت ها در انتخابگر ویجت نمایش داده می شوند، باید یک نام منحصر به فرد داشته باشند.
نام ابزارک ها از ویژگی label
عنصر receiver
ویجت در فایل AndroidManifest.xml بارگیری می شود.
<receiver
….
android:label="Memories">
….
</receiver>
توضیحاتی برای ویجت خود اضافه کنید
با شروع اندروید 12، توضیحاتی را برای انتخابگر ویجت ارائه دهید تا برای ویجت شما نمایش داده شود.

با استفاده از ویژگی description
<appwidget-provider>
عنصر:
<appwidget-provider
android:description="@string/my_widget_description">
</appwidget-provider>
میتوانید از ویژگی descriptionRes
در نسخههای قبلی اندروید استفاده کنید، اما توسط انتخابگر ویجت نادیده گرفته میشود.
انتقال نرمتر را فعال کنید
با شروع اندروید 12، زمانی که کاربر برنامه شما را از ویجت راه اندازی می کند، لانچرها انتقال نرم تری را ارائه می دهند.
برای فعال کردن این انتقال بهبودیافته، از @android:id/background
یا android.R.id.background
برای شناسایی عنصر پسزمینه خود استفاده کنید:
// Top-level layout of the widget.
<LinearLayout
android:id="@android:id/background">
</LinearLayout>
برنامه شما میتواند از @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);