Thêm tính năng hỗ trợ cho cử chỉ vuốt ngược để dự đoán

Stay organized with collections Save and categorize content based on your preferences.
Hình 1: Bản minh hoạ giao diện cử chỉ vuốt ngược để dự đoán trên điện thoại

Android 13 (API cấp độ 33) ra mắt tính năng vuốt ngược để xem trước phần đích cho các thiết bị Android như điện thoại, thiết bị màn hình lớn và thiết bị có thể gập lại. Đây là một phần của bản phát hành nhiều năm. Khi tính năng này được triển khai đầy đủ, người dùng có thể xem trước phần đích hoặc kết quả khác của một cử chỉ quay lại trước khi quay lại, cũng như quyết định sẽ tiếp tục hay ở lại chế độ xem hiện tại.

Ví dụ: việc sử dụng cử chỉ quay lại có thể hiển thị bản xem trước dạng động của Màn hình chính đằng sau ứng dụng của bạn, như trình bày trong bản minh hoạ ở hình 1. Kể từ Android 13, bạn có thể kiểm thử ảnh động quay lại màn hình chính này bằng cách bật tuỳ chọn dành cho nhà phát triển (như mô tả trên trang này).

Nhằm hỗ trợ cử chỉ vuốt ngược để xem trước phần đích, bạn phải cập nhật ứng dụng bằng API OnBackPressedCallback AppCompat 1.6.0-alpha05 (AndroidX) trở lên hoặc API nền tảng OnBackInvokedCallback mới.

Bản cập nhật này cung cấp một đường dẫn di chuyển cho các API điều hướng quay lại không còn được hỗ trợ, tức là KeyEvent.KEYCODE_BACK và bất kỳ lớp nào có phương thức onBackPressed như ActivityDialog.

Lớp học lập trình

Ngoài việc sử dụng tài liệu trên trang này, bạn có thể thử tham gia lớp học lập trình của chúng tôi. Lớp học này cung cấp cách triển khai trường hợp sử dụng phổ biến của một WebView xử lý cử chỉ vuốt ngược để xem trước phần đích bằng AndroidX Activity APIs.

Cập nhật một ứng dụng sử dụng tính năng điều hướng quay lại mặc định

Việc cập nhật ứng dụng để hỗ trợ tính năng này rất đơn giản nếu ứng dụng của bạn không triển khai hành vi quay lại tuỳ chỉnh nào (nói cách khác, ứng dụng sẽ quay lại để xử lý hệ thống). Bạn chỉ cần chọn sử dụng tính năng này như mô tả trên trang này.

Cập nhật một ứng dụng sử dụng tính năng điều hướng quay lại tuỳ chỉnh

Nếu ứng dụng của bạn triển khai hành vi quay lại tuỳ chỉnh, có nhiều đường dẫn di chuyển tuỳ thuộc vào việc ứng dụng đó có sử dụng AndroidX hay không và cách xử lý thao tác điều hướng quay lại.

Ứng dụng của bạn sử dụng AndroidX Cách ứng dụng của bạn xử lý tính năng điều hướng quay lại Đường dẫn di chuyển đề xuất (đường liên kết trên trang này)
API AndroidX Di chuyển phương thức triển khai quay lại AndroidX hiện có
API nền tảng không được hỗ trợ Di chuyển ứng dụng AndroidX chứa API điều hướng quay lại không được hỗ trợ sang API AndroidX
Không API nền tảng không được hỗ trợ, có thể di chuyển Di chuyển ứng dụng dùng API điều hướng quay lại không được hỗ trợ cho API nền tảng
Các API nền tảng không được hỗ trợ nhưng không thể di chuyển Trì hoãn việc chọn tham gia cho đến khi đây là tính năng bắt buộc

Di chuyển cách triển khai điều hướng quay lại của AndroidX

Đây là trường hợp sử dụng phổ biến nhất (và được đề xuất nhiều nhất). Cách này áp dụng cho các ứng dụng mới hoặc ứng dụng hiện có triển khai cách xử lý thao tác bằng cử chỉ tuỳ chỉnh bằng OnBackPressedDispatcher, như mô tả trong phần Cung cấp tính năng điều hướng quay lại tuỳ chỉnh.

Nếu ứng dụng của bạn thuộc danh mục này, hãy làm theo các bước sau để thêm tính năng hỗ trợ cho cử chỉ vuốt ngược để dự đoán:

  1. Để đảm bảo rằng các API vốn đang sử dụng OnBackPressedDispatcher API (chẳng hạn như Mảnh và Thành phần điều hướng) hoạt động liền mạch với cử chỉ vuốt ngược để xem trước phần đích, hãy nâng cấp lên AndroidX Activity 1.6.0-alpha05.

    // In your build.gradle file:
    dependencies {
    
    // Add this in addition to your other dependencies
    implementation "androidx.activity:activity:1.6.0-alpha05"
    
  2. Chọn sử dụng cử chỉ vuốt ngược để dự đoán, như được mô tả trên trang này.

Di chuyển ứng dụng AndroidX chứa API điều hướng quay lại không được hỗ trợ sang API AndroidX

Nếu ứng dụng của bạn dùng thư viện AndroidX nhưng triển khai hoặc tham chiếu đến các API điều hướng quay lại không được hỗ trợ, thì bạn cần chuyển sang sử dụng AndroidX API để hỗ trợ hành vi mới.

Cách di chuyển API không được hỗ trợ sang API AndroidX:

  1. Di chuyển logic xử lý Quay lại của hệ thống sang OnBackPressedDispatcher của AndroidX bằng cách triển khai OnBackPressedCallback. Để biết hướng dẫn chi tiết, vui lòng xem phần Cung cấp tính năng điều hướng quay lại tuỳ chỉnh.

  2. Để ngừng chặn tính năng điều hướng Quay lại hệ thống, hãy tắt mọi thực thể OnBackPressedCallback đã bật trước đó, hoặc luôn không bật lệnh gọi lại nào.

  3. Đảm bảo bạn đã nâng cấp lên AndroidX Activity 1.6.0-alpha05.

    // In your build.gradle file:
    dependencies {
    
    // Add this in addition to your other dependencies
    implementation "androidx.activity:activity:1.6.0-alpha05"
    
  4. Sau khi đã di chuyển thành công ứng dụng, hãy chọn sử dụng cử chỉ vuốt ngược để dự đoán như mô tả trên trang này.

Di chuyển ứng dụng dùng API điều hướng quay lại không được hỗ trợ cho API nền tảng

Nếu ứng dụng của bạn không thể dùng các thư viện AndroidX và thay vào đó triển khai hoặc tham chiếu đến thành phần điều hướng Quay lại tuỳ chỉnh bằng các API không được hỗ trợ, thì bạn phải di chuyển sang API nền tảng OnBackInvokedCallback.

Hãy hoàn thành các bước sau để di chuyển API không được hỗ trợ sang API nền tảng:

  1. Sử dụng API OnBackInvokedCallback mới trên các thiết bị chạy Android 13 trở lên, đồng thời dựa vào API không được hỗ trợ trên các thiết bị chạy Android 12 trở xuống.

  2. Đăng ký logic quay lại tuỳ chỉnh trong OnBackInvokedCallback bằng logic trong phương thức onBackInvoked. Điều này ngăn hoạt động hiện tại hoàn tất và lệnh gọi lại của bạn sẽ có cơ hội phản ứng với thao tác Quay lại một khi người dùng hoàn tất thao tác Quay lại hệ thống.

  3. Để đảm bảo là các tính năng nâng cao trong tương lai đối với thành phần điều hướng Quay lại hệ thống được hỗ trợ đúng cách, ứng dụng của bạn PHẢI huỷ đăng ký OnBackInvokedCallback. Nếu không, người dùng có thể thấy hành vi không mong muốn khi sử dụng tính năng điều hướng Quay lại của hệ thống – ví dụ: "bị nghẽn" giữa các chế độ xem và buộc họ phải thoát ứng dụng.

    Sau đây là ví dụ về cách di chuyển logic ra khỏi onBackPressed:

    Kotlin

    @Override
    fun onCreate() {
        if (BuildCompat.isAtLeastT()) {
            onBackInvokedDispatcher.registerOnBackInvokedCallback(
                OnBackInvokedDispatcher.PRIORITY_DEFAULT
            ) {
                /**
                 * onBackPressed logic goes here. For instance:
                 * Prevents closing the app to go home screen when in the
                 * middle of entering data to a form
                 * or from accidentally leaving a fragment with a WebView in it
                 *
                 * Unregistering the callback to stop intercepting the back gesture:
                 * When the user transitions to the topmost screen (activity, fragment)
                 * in the BackStack, unregister the callback by using
                 * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback
                 * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback)
                 */
            }
        }
    }
    

    Java

    @Override
    void onCreate() {
      if (BuildCompat.isAtLeastT()) {
        getOnBackInvokedDispatcher().registerOnBackInvokedCallback(
            OnBackInvokedDispatcher.PRIORITY_DEFAULT,
            () -> {
              /**
               * onBackPressed logic goes here - For instance:
               * Prevents closing the app to go home screen when in the
               * middle of entering data to a form
               * or from accidentally leaving a fragment with a WebView in it
               *
               * Unregistering the callback to stop intercepting the back gesture:
               * When the user transitions to the topmost screen (activity, fragment)
               * in the BackStack, unregister the callback by using
               * OnBackInvokeDispatcher.unregisterOnBackInvokedCallback
               * (https://developer.android.com/reference/kotlin/android/view/OnBackInvokedDispatcher#unregisteronbackinvokedcallback)
               */
            }
        );
      }
    }
    
  4. Khi bạn đã di chuyển thành công ứng dụng của mình, hãy chọn sử dụng cử chỉ vuốt ngược để xem trước phần đích như mô tả trong phần sau.

Chọn sử dụng cử chỉ vuốt ngược để dự đoán

Khi đã xác định được cách cập nhật ứng dụng dựa vào trường hợp của mình, bạn có thể dễ dàng chọn sử dụng nhằm hỗ trợ tính năng vuốt ngược để xem trước phần đích.

Để chọn sử dụng, ở AndroidManifest.xml, trong thẻ <application>, hãy đặt cờ android:enableOnBackInvokedCallback thành true.

<application
    ...
    android:enableOnBackInvokedCallback="true"
    ... >
...
</application>

Nếu bạn không cung cấp một giá trị thì giá trị mặc định sẽ là false, giá trị này vô hiệu hoá tính tăng cử chỉ vuốt ngược để dự đoán.

Kiểm thử ảnh động cử chỉ vuốt ngược để dự đoán

Kể từ bản phát hành chính thức Android 13, bạn có thể bật tuỳ chọn dành cho nhà phát triển để kiểm thử ảnh động quay lại màn hình chính trong hình 1.

Để kiểm tra ảnh động này, hãy hoàn tất các bước sau:

  1. Trên thiết bị của bạn, hãy chuyển đến phần Cài đặt > Hệ thống > Tuỳ chọn cho nhà phát triển (Settings > System > Developer options).

  2. Chọn Ảnh động vuốt ngược dự đoán.

  3. Chạy ứng dụng đã cập nhật và dùng cử chỉ vuốt ngược để xem ứng dụng hoạt động.