Cải thiện tiện ích

Thử cách dùng Compose
Jetpack Compose là bộ công cụ giao diện người dùng được đề xuất cho Android. Tìm hiểu cách tạo tiện ích bằng API kiểu Compose.

Trang này cung cấp thông tin chi tiết về các tính năng nâng cao không bắt buộc của tiện ích, có từ Android 12 (cấp độ API 31). Những tính năng này không bắt buộc nhưng rất dễ triển khai và cải thiện trải nghiệm tiện ích của người dùng.

Để biết thêm các cách cải thiện tiện ích, hãy xem hướng dẫn về Compose Cải thiện tiện ích.

Sử dụng màu động

Kể từ Android 12, một tiện ích có thể sử dụng màu giao diện của thiết bị cho các nút, nền và các thành phần khác. Điều này giúp chuyển đổi mượt mà hơn và đảm bảo tính nhất quán giữa các tiện ích.

Có hai cách để đạt được màu động:

Sau khi đặt giao diện trong bố cục gốc, bạn có thể sử dụng các thuộc tính màu phổ biến trong bố cục gốc hoặc bất kỳ phần tử con nào của bố cục gốc để chọn màu động.

Sau đây là một số ví dụ về thuộc tính màu mà bạn có thể sử dụng:

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

Trong ví dụ sau đây sử dụng giao diện Material 3, màu giao diện của thiết bị là "tím". Màu nhấn và nền tiện ích sẽ điều chỉnh cho phù hợp với chế độ sáng và tối, như trong hình 1 và 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
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:tint="?attr/colorPrimaryContainer"
        android:src="@drawable/ic_cloud" />

    <!-- Other widget content. -->

</LinearLayout>

Tiện ích trong giao diện chế độ sáng
Hình 1. Tiện ích ở giao diện sáng.
Tiện ích trong giao diện chế độ tối
Hình 2. Tiện ích trong giao diện tối.

Khả năng tương thích ngược cho màu động

Màu động chỉ có trên các thiết bị chạy Android 12 trở lên. Để cung cấp giao diện tuỳ chỉnh cho các phiên bản thấp hơn, hãy tạo một giao diện mặc định có màu sắc tuỳ chỉnh và một bộ hạn định mới (values-v31) bằng cách sử dụng các thuộc tính giao diện mặc định.

Dưới đây là ví dụ về cách sử dụng giao diện 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" />

Bật tính năng hỗ trợ bằng giọng nói

Hành động trong ứng dụng cho phép Trợ lý Google hiển thị các tiện ích theo lệnh thoại có liên quan của người dùng. Bằng cách định cấu hình tiện ích để phản hồi ý định tích hợp (BII), ứng dụng của bạn có thể chủ động hiển thị các tiện ích trên các nền tảng của Trợ lý như Android và Android Auto. Người dùng có thể ghim các tiện ích mà Trợ lý hiển thị vào trình chạy của họ, nhờ đó khuyến khích họ tương tác trong tương lai.

Ví dụ: bạn có thể định cấu hình tiện ích tóm tắt bài tập thể dục cho ứng dụng thể dục của mình để thực hiện các lệnh thoại của người dùng kích hoạt BII GET_EXERCISE_OBSERVATION. Trợ lý chủ động hiển thị tiện ích của bạn khi người dùng kích hoạt BII này bằng cách đưa ra các yêu cầu như "Ok Google, tuần này tôi đã chạy được bao nhiêu dặm trên ExampleApp?"

Có hàng chục BII bao gồm một số danh mục tương tác của người dùng, cho phép hầu hết mọi ứng dụng Android cải thiện tiện ích bằng giọng nói. Để bắt đầu, hãy xem bài viết Tích hợp Hành động trong ứng dụng với các tiện ích Android.

Cho phép chuyển đổi mượt mà hơn

Kể từ Android 12, trình chạy sẽ cung cấp hiệu ứng chuyển đổi mượt mà hơn khi người dùng chạy ứng dụng của bạn từ một tiện ích.

Để bật hiệu ứng chuyển đổi cải tiến này, hãy sử dụng @android:id/background hoặc android.R.id.background để xác định phần tử nền:

<!-- 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>

Ứng dụng của bạn có thể sử dụng @android:id/background trên các phiên bản Android cũ mà không bị lỗi, nhưng quyền này sẽ bị bỏ qua.

Sử dụng tính năng sửa đổi RemoteViews trong thời gian chạy

Kể từ Android 12, bạn có thể tận dụng một số phương thức RemoteViews để sửa đổi các thuộc tính RemoteViews trong thời gian chạy. Hãy xem tài liệu tham khảo API RemoteViews để biết danh sách đầy đủ các phương thức được thêm vào.

Ví dụ về mã sau đây cho thấy cách sử dụng một số phương thức này.

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