بهبود دادن ابزاره

امتحان کردن روش «نوشتن»
‫Jetpack Compose جعبه‌ابزار واسط کاربر توصیه‌شده برای Android است. با نحوه ساختن ابزارک بااستفاده از APIهای سبک Compose آشنا شوید.

این صفحه شامل جزئیات بهبودهای اختیاری ابزارک است که از Android 12 (میانای برنامه‌سازی کاربردی سطح ۳۱) دردسترس است. این ویژگی‌ها اختیاری هستند، اما پیاده‌سازی آن‌ها ساده است و تجربه کاربران از ابزارک را بهبود می‌بخشد.

برای روش‌های دیگر دیدن نحوه بهبود ابزاره، به راهنمای Compose بهبود ابزاره مراجعه کنید.

استفاده از رنگ‌های پویا

از Android 12 به بعد، ابزاره می‌تواند از رنگ‌های زمینه دستگاه برای دکمه‌ها، پس‌زمینه‌ها، و دیگر عناصر استفاده کند. این کار باعث می‌شود گذارها روان‌تر و بین ابزاره‌های مختلف هماهنگی ایجاد شود.

دو راه برای دستیابی به رنگ‌های پویا وجود دارد:

  • از زمینه پیش‌فرض سیستم (@android:style/Theme.DeviceDefault.DayNight) در چیدمان ریشه استفاده کنید.

  • از زمینه Material 3 (Theme.Material3.DynamicColors.DayNight) از کتابخانه Material Components for Android استفاده کنید، که از Material Components for Android v1.6.0 دردسترس است.

پس‌از تنظیم شدن زمینه در چیدمان ریشه، می‌توانید از مشخصه‌های رنگ رایج در ریشه یا هریک از فرزندان آن برای انتخاب رنگ‌های پویا استفاده کنید.

برخی‌از نمونه‌های مشخصه‌های رنگ که می‌توانید استفاده کنید عبارت‌اند از:

  • ?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
        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» امکان می‌دهد ابزارک‌ها را در پاسخ به فرمان‌های صوتی مرتبط کاربر نمایش دهد. با پیکربندی ابزاره‌تان برای پاسخ دادن به هدف‌های داخلی (BIIs)، برنامه شما می‌تواند ابزاره‌ها را به‌صورت پیش‌کنشی در سطوح «دستیار» مثل Android و Android Auto نمایش دهد. کاربران این گزینه را دارند که ابزارک‌های سنجاق‌شده نمایش‌داده‌شده توسط «دستیار» را به راه‌انداز خود اضافه کنند و درگیری‌های آینده را تشویق کنند.

برای مثال، می‌توانید ابزارک خلاصه تمرین را برای برنامه ورزشی‌تان پیکربندی کنید تا فرمان‌های صوتی کاربر را که GET_EXERCISE_OBSERVATION BII را راه‌اندازی می‌کنند اجرا کند. وقتی کاربران این BII را با درخواست‌هایی مثل «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 در نسخه‌های قبلی Android بدون خرابی استفاده کند، اما نادیده گرفته می‌شود.

استفاده از تغییر زمان اجرای 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
)