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

امتحان کردن روش Compose
Jetpack Compose جعبه‌ابزار واسط کاربر توصیه‌شده برای Android است. با نحوه ساختن ابزاره بااستفاده از میاناهای برنامه‌سازی کاربردی سبک 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

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

برای مثال، می‌توانید ابزاره خلاصه تمرین را برای برنامه ورزشی‌تان پیکربندی کنید تا فرمان‌های صوتی کاربر را که GET_EXERCISE_OBSERVATION BII را راه‌اندازی می‌کند برآورده کند. وقتی کاربران با درخواست‌هایی مثل «Ok Google، این هفته چند مایل در ExampleApp دویدم؟» این هدف داخلی را راه‌اندازی می‌کنند، «دستیار» ابزارک شما را به‌طور پیش‌کنشی نمایش می‌دهد.

ده‌ها «هدف داخلی» وجود دارد که چندین دسته از تعاملات کاربر را پوشش می‌دهد، و به تقریباً هر برنامه Android اجازه می‌دهد ابزارهایش را برای صدا بهبود بخشد. برای شروع، ادغام «کنش‌های برنامه» با ابزاره‌های Android را ببینید.

فعال کردن انتقال‌های روان‌تر

از Android نسخه ۱۲، راه‌اندازها انتقال روان‌تری را ارائه می‌دهند وقتی کاربر برنامه‌تان را از ابزاره راه‌اندازی می‌کند.

برای فعال کردن این انتقال بهبودیافته، از @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 مراجعه کنید.

نمونه کد زیر نحوه استفاده از چند مورد از این روش‌ها را نشان می‌دهد.

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