WindowManager

Thư viện Jetpack WindowManager cho phép nhà phát triển ứng dụng hỗ trợ các kiểu dáng thiết bị mới cũng như môi trường nhiều cửa sổ. Thư viện này cung cấp một nền tảng API phổ biến cho API phiên bản 14 trở lên. Bản phát hành ban đầu hướng đến thiết bị có thể gập lại, nhưng các phiên bản trong tương lai sẽ mở rộng ra thêm nhiều kiểu màn hình và tính năng cửa sổ.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 4 tháng 9 năm 2024 1.3.0 - - 1.4.0-alpha02

Khai báo phần phụ thuộc

Để thêm phần phụ thuộc trên WindowsManager, bạn phải thêm kho lưu trữ Google Maven vào dự án. Hãy đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun của mình:

Groovy

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.3.0")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.4

Phiên bản 1.4.0-alpha02

Ngày 4 tháng 9 năm 2024

Phát hành androidx.window:window-*:1.4.0-alpha02. Phiên bản 1.4.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

Thêm tính năng hỗ trợ cho WindowSizeClass tuỳ chỉnh.

  • Mở hàm khởi tạo cho WindowSizeClass để nhà phát triển có thể sử dụng hàm khởi tạo của riêng họ.
  • Thêm các phương thức tiện ích isAtLeast để nhà phát triển có thể xử lý một loạt giá trị WindowSizeClass.
  • Thêm một hàm mở rộng trên Set<WindowSizeClass> để tính toán kết quả phù hợp nhất trong Tập hợp.
  • Thêm hằng số cho các điểm ngắt được Android đề xuất.
  • Thêm tập hợp điểm ngắt tương ứng với các điểm ngắt được Android đề xuất.

Thay đổi về API

  • Cập nhật tên phương thức giới hạn cho WindowSizeClass. (If89a6)
  • Cập nhật API WindowSizeClass để hỗ trợ thêm các giá trị điểm ngắt mới trong tương lai. Thay vì có giới hạn tuyệt đối, chúng ta sử dụng giới hạn dưới và các nhà phát triển nên kiểm tra giới hạn dưới khi xử lý WindowSizeClass. WindowWidthSizeClassWindowHeightSizeClass hiện tại sẽ không được dùng nữa vì sẽ không được phát triển thêm nữa. (I014ce)

Phiên bản 1.4.0-alpha01

Ngày 7 tháng 8 năm 2024

Phát hành androidx.window:window-*:1.4.0-alpha01. Phiên bản 1.4.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Tính năng Ghim hoạt động ngăn xếp cho phép các ứng dụng ghim nội dung trong một vùng chứa và tách biệt thành phần điều hướng với vùng chứa khác.
  • Dải phân cách tương tác cho phép các ứng dụng hiển thị một đường phân chia cố định hoặc kéo được giữa hai hoạt động trong một bản trình bày phân tách.
  • Tính năng Làm mờ hộp thoại toàn màn hình cho phép các ứng dụng chỉ định vùng làm mờ hộp thoại để làm mờ toàn bộ cửa sổ tác vụ hoặc chỉ làm mờ vùng chứa hiện hộp thoại.
  • Lệnh gọi lại thông tin cửa sổ hoạt động được nhúng cho phép các ứng dụng liên tục nhận thông tin cập nhật của cửa sổ hoạt động được nhúng.
  • Nền ảnh động nhúng cho phép các ứng dụng chỉ định nền ảnh động, cải thiện chất lượng ảnh động chuyển đổi khi sử dụng ActivityEmbedding.
  • Tính năng Quản lý ActivityStack được cải tiến cho phép các ứng dụng có nhiều quyền kiểm soát hơn đối với ActivityStacks khi sử dụng ActivityEmbedding, bao gồm:
  • Khởi chạy một hoạt động trong một ActivityStack được chỉ định
  • Hoàn tất ActivityStack

Thay đổi về API

  • API mới WindowInfoTracker#supportedPostures:

    • API để xác định xem thiết bị có hỗ trợ chế độ trên mặt bàn cho thiết bị có thể gập lại hay không. Thêm WindowAreaSessionSessioner#getWindow
  • Thêm các API để hỗ trợ ghim ActivityStack:

    • SplitPinRule lớp
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Thêm API để bật và định cấu hình bộ chia tương tác

    • DividerAttributes lớp
    • SplitAttributes.Builder#setDividerAttributes
  • Thêm API để thiết lập EmbeddingConfigurationDimAreaBehavior cho hộp thoại

    • EmbeddingConfiguration lớp
    • DimAreaBehavior lớp
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Thêm API để nhận thông tin cập nhật về cửa sổ hoạt động được nhúng

    • EmbeddedActivityWindowInfo lớp
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Thêm API để đặt nền ảnh động nhúng

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • Thêm API để hoàn tất ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • Thêm API để thiết lập ActivityStack chạy

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • Các API sau đã ổn định và không còn mang tính thử nghiệm nữa:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (được chuyển từ SplitController#invalidateTopậnSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • Thêm các API cho phiên bản 1.4. (I56774)

Sửa lỗi

  • Khắc phục lỗi trên một số thiết bị nhất định, trong đó UNAVAILABLE sẽ được trả về thay vì ACTIVE khi một phiên đang hoạt động.
  • Ngừng hỗ trợ transferActivityToWindowArea trên các thiết bị có vendorApiLevel là 2 do API không hỗ trợ.
  • Ra mắt API để hỗ trợ tính năng kéo sang toàn màn hình cho bộ chia có thể kéo trong tính năng Nhúng hoạt động. (I645c9)
  • Cho phép ứng dụng tắt ảnh động ActivityEmbedding thông qua tham số ảnh động cho SplitAttributes. (Idc01a)
  • Xoá nội dung chỉ dẫn thủ công quyền truy cập vào các API nền tảng mới vì việc này tự động xảy ra thông qua tính năng lập mô hình API khi sử dụng R8 với AGP 7.3 trở lên (ví dụ: R8 phiên bản 3.3) và đối với tất cả các bản dựng khi sử dụng AGP 8.1 trở lên (ví dụ: D8 phiên bản 8.1). Những ứng dụng không sử dụng AGP nên cập nhật lên D8 phiên bản 8.1 trở lên. Xem bài viết này để biết thêm chi tiết. (Ia60e0, b/345472586)
  • Cho phép tiện ích sử dụng tham số ảnh động cho SplitAttributes để thiết bị có thể sử dụng tham số đó cho hiệu ứng chuyển đổi ảnh động. (Iede00)
  • Ẩn API lớp phủ (Ic4251)
  • Ra mắt các API để định cấu hình bộ chia cố định hoặc có thể kéo cho phần phân tách (Ia7a78)
  • Thêm mật độ vào WindowMetrics (Id6723)
  • Thêm API để nhận SupportedPostures. (If557a)
  • Xoá setLaunchingActivityStack khỏi API thử nghiệm (I191cf)
  • Ra mắt ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • Ngừng sử dụng #getToken và thêm #getActivityStackToken (Ie0471)
  • Ra mắt bộ chuyển đổi lệnh gọi lại cho flow API (API luồng embeddedActivityWindowInfo) (Ida77f)
  • Thêm bộ chuyển đổi lệnh gọi lại cho API luồng OverlayInfo (I7264f)
  • Ra mắt WindowSdkExtensionsRule để ghi đè extensionsVersion cho mục đích kiểm thử. (Ifb928)
  • – Di chuyển #setLaunchingActivityStack sang Bundle để tương thích với cách sử dụng ActivityOptionsCompat.
    • Người dùng phải truyền activityOptions.toBundle thay vì chính ActvityOptions.
    • Xoá #setLaunchingActivityStack(Activity). Người dùng nên di chuyển để sử dụng ActivityEmbeddingController#getActivityStac(Activity) nhằm có được ActivityStack và chuyển ActivityStack cho #setLaunchingActivityStack. (Ie0cpc)
  • – Ra mắt ActivityStack.TokenSpltInfo.Token làm giá trị nhận dạng để giao tiếp giữa WM Jetpack và các tiện ích.
    • Ngừng sử dụng/thay thế các API để nhận/trả lại Mã thông báo thay vì IBinder. (I12b24)
  • – Giới thiệu ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Xoá SplitController#invalidateTopVisibleSplitAttributes vì tính năng này được hợp nhất thành #invalidateVisibleActivityStacks (I02ef5)
  • – Thêm API để thiết lập cấu hình nhúng. (I59a4a)
  • - Thêm ghim/bỏ ghim các API ActivityStack androidx.Window hàng đầu
    • Đang cập nhật ứng dụng minh hoạ để cho phép ghim/bỏ ghim ActivityStack trên cùng (I24dd3)
  • Thêm lại #finishActivityStacksActivityEmbeddingOptions (Ic1ab3)
  • Xoá các API không ổn định. (Ibc534, b/302380585)

Phiên bản 1.3

Phiên bản 1.3.0

Ngày 29 tháng 5 năm 2024

Phát hành androidx.window:window-*:1.3.0. Phiên bản 1.3.0 bao gồm các thay đổi sau.

Những thay đổi quan trọng kể từ phiên bản 1.2.0

  • Hỗ trợ đa nền tảng Kotlin cho các lớp kích thước cửa sổ.

Phiên bản 1.3.0-rc01

Ngày 14 tháng 5 năm 2024

WindowManager Jetpack 1.3 mang đến khả năng hỗ trợ Đa nền tảng Kotlin cho các tính năng WindowSizeClass, cũng như nhiều bản sửa lỗi.

Phát hành androidx.window:window-*:1.3.0-rc01. Phiên bản 1.3.0-rc01 bao gồm các thay đổi sau.

Phiên bản 1.3.0-beta02

Ngày 1 tháng 5 năm 2024

Phát hành androidx.window:window-*:1.3.0-beta02. Phiên bản 1.3.0-beta02 bao gồm các thay đổi sau.

Thay đổi về API

Sửa lỗi

  • Sửa lỗi KotlinReflectionInternalError do proguard xoá một số tệp trên một số phương thức triển khai thiết bị. (I01b02)

Phiên bản 1.3.0-beta01

Ngày 3 tháng 4 năm 2024

Phát hành androidx.window:window-*:1.3.0-beta01. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.

Phiên bản 1.3.0-alpha03

Ngày 6 tháng 3 năm 2024

Phát hành androidx.window:window-*:1.3.0-alpha03. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.

Thay đổi về API

  • Phân tách WindowSizeClassUtil thành các phương thức tập trung hơn. (Ie9292)
  • Khôi phục WindowSizeClass#compute (I21355, b/324293374)

Sửa lỗi

  • Khắc phục sự cố khi ngữ cảnh được cung cấp không được mở gói chính xác. (94d10ce , b/318787482)

Phiên bản 1.3.0-alpha02

Ngày 7 tháng 2 năm 2024

Phát hành androidx.window:window-*:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Cập nhật giao diện API của API Lớp kích thước cửa sổ để cải thiện tính linh hoạt cho những nhà phát triển muốn sử dụng lớp kích thước của riêng họ.

Thay đổi về API

  • Thêm giới hạn chiều cao vào bộ chọn chiều rộng. (I23393)
  • Thêm các hàm hiệu dụng để chọn WindowSizeClass trong một tập hợp. Thêm các hàm tính điểm thử nghiệm để nhà phát triển có thể viết bộ chọn của riêng mình. Thêm hàm mở rộng bộ chọn để chọn WindowSizeClass rộng nhất trong một giới hạn nhất định. (I0c944)
  • Mở hàm khởi tạo WindowSizeClass để có thể thêm các điểm ngắt tuỳ chỉnh. (Ic1ff3)
  • Thêm hàm tiện lợi để tạo lớp kích thước từ chiều rộng, chiều cao và mật độ. (If67f4)

Sửa lỗi

  • Khắc phục trường hợp ngoại lệ khi giá trị số thực độ chính xác đơn bị cắt bớt về 0. (272ffac)

Phiên bản 1.3.0-alpha01

Ngày 15 tháng 11 năm 2023

Phát hành androidx.window:window-*:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Giới thiệu các API Cửa sổ thử nghiệm để truy cập vào màn hình sau.
  • Các API kiểm thử để tạo FoldingFeature hiện đã ổn định.
  • Các API kiểm thử để thiết lập giá trị ActivityEmbedding giả hiện đã ổn định.
  • WindowLayoutInfoPublisherRule hiện báo cáo việc ghi đè khi nhận được giá trị từ một UiContext.
  • WindowInfoTracker báo cáo dữ liệu về tính năng gập đến tham số UiContext.
  • Hiển thị Phiên bản tiện ích trên thiết bị.
  • Hằng số WindowProperties cho cơ chế ghi đè cho mỗi ứng dụng của người dùng:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — Thông báo ứng dụng đã chọn không tương thích với tỷ lệ khung hình dành cho người dùng ghi đè.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— Thông báo hệ thống mà ứng dụng đã chọn không tham gia chế độ toàn màn hình của người dùng chế độ cài đặt ghi đè khả năng tương thích với tỷ lệ khung hình

Phiên bản 1.2

Phiên bản 1.2.0

Ngày 15 tháng 11 năm 2023

Phát hành androidx.window:window-*:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.1.0

  • Giới thiệu các API Cửa sổ thử nghiệm để truy cập vào màn hình sau.
  • Các API kiểm thử để tạo FoldingFeature hiện đã ổn định.
  • Các API kiểm thử để thiết lập giá trị ActivityEmbedding giả hiện đã ổn định.
  • WindowLayoutInfoPublisherRule hiện báo cáo việc ghi đè khi nhận được giá trị từ một UiContext.
  • WindowInfoTracker báo cáo dữ liệu về tính năng gập đến tham số UiContext.
  • Hiển thị Phiên bản tiện ích trên thiết bị.

Phiên bản 1.2.0-rc01

Ngày 1 tháng 11 năm 2023

Phát hành androidx.window:window-*:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

  • Giới thiệu các API Cửa sổ thử nghiệm để truy cập vào màn hình sau.
  • Các API kiểm thử để tạo FoldingFeature hiện đã ổn định.
  • Các API kiểm thử để thiết lập giá trị ActivityEmbedding giả hiện đã ổn định.
  • WindowLayoutInfoPublisherRule hiện báo cáo việc ghi đè khi nhận được giá trị từ một UiContext.
  • WindowInfoTracker báo cáo dữ liệu về tính năng gập đến tham số UiContext.
  • Hiển thị Phiên bản tiện ích trên thiết bị.

Phiên bản 1.2.0-beta04

Ngày 18 tháng 10 năm 2023

Phát hành androidx.window:window-*:1.2.0-beta04. Phiên bản 1.2.0-beta04 bao gồm các thay đổi sau.

Thay đổi về API

Phiên bản 1.2.0-beta03

Ngày 20 tháng 9 năm 2023

Phát hành androidx.window:window-*:1.2.0-beta03. Phiên bản 1.2.0-beta03 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm các bước kiểm tra RequiresApi cho những API cần phiên bản tiện ích cụ thể để hoạt động đúng cách.
  • Thêm API để hiển thị phiên bản tiện ích trên thiết bị.

Thay đổi về API

  • Chú thích phiên bản tiện ích SDK cửa sổ bắt buộc trên các API công khai.
    • Xoá isXXXSupported trong thành phần Nhúng hoạt động. (Ie3dae)
  • Ra mắt WindowSdkExtensions để báo cáo phiên bản tiện ích trên thiết bị.
    • Ra mắt RequiresWindowSdkExtension để chú thích phiên bản tiện ích tối thiểu bắt buộc. (I05fd4)
  • Làm cho WindowAreaInfo#getCapability không rỗng. (I17048)

Phiên bản 1.2.0-beta01

Ngày 26 tháng 7 năm 2023

Phát hành androidx.window:window-*:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Giới thiệu các API Cửa sổ thử nghiệm để truy cập vào màn hình sau.
  • Các API kiểm thử để tạo FoldingFeature hiện đã ổn định.
  • Các API kiểm thử để thiết lập giá trị ActivityEmbedding giả hiện đã ổn định.
  • WindowLayoutInfoPublisherRule hiện báo cáo việc ghi đè khi nhận được giá trị từ một UiContext.
  • WindowInfoTracker báo cáo dữ liệu về tính năng gập đến tham số UiContext.

Các thay đổi về API

  • Đánh dấu API WindowArea là thử nghiệm để cho phép thay đổi API tiếp tục hoạt động đối với bản phát hành ổn định trong phiên bản 1.3 (I857f5)
  • Cập nhật các tệp API để chú thích việc tạm ngưng khả năng tương thích (I8e87a, b/287516207)

Phiên bản 1.2.0-alpha03

Ngày 21 tháng 6 năm 2023

Phát hành androidx.window:window-*:1.2.0-alpha03. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Xoá các API không còn được dùng nữa khỏi khu vực API.
  • Thêm các API để hỗ trợ hiển thị đồng thời.
  • Thêm thuộc tính để chọn không sử dụng tính năng ghi đè để buộc thay đổi kích thước.
  • Thêm thuộc tính để chọn không sử dụng tính năng ghi đè tỷ lệ khung hình.
  • Điều chỉnh cho ActivityEmbeddingRule ổn định để hỗ trợ kiểm thử đơn vị cho tính năng Nhúng hoạt động.

Các thay đổi về API

  • Xoá các API không dùng nữa (I18d39)
  • Thêm tính năng hỗ trợ hiển thị đồng thời. (Ifcbb0)

Sửa lỗi

  • Thêm thuộc tính tương thích để chọn không sử dụng tính năng ghi đè để buộc thay đổi kích thước (Ie7ab1)
  • Xoá SESSION_STATE_CONTENT_INVISIBLE khỏi giao diện mở rộng. (I6ed19)
  • Điều chỉnh cho ActivityEmbeddingRule ổn định để hỗ trợ kiểm thử đơn vị cho tính năng Nhúng hoạt động. (I8d6b6)
  • Thêm thuộc tính tương thích để chọn không sử dụng tính năng ghi đè tỷ lệ khung hình tối thiểu. (I66390)
  • Xoá API WindowArea không dùng nữa (Ieb67c)
  • Đổi tên thuộc tính vòng lặp yêu cầu hướng thành PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd)
  • Cập nhật tên hằng số phiên của vùng cửa sổ (I83675)
  • Thêm thuộc tính tương thích để chọn không sử dụng tính năng bỏ qua vòng lặp yêu cầu hướng khi phát hiện (I0a7a2)
  • Thêm WindowAreaComponent#STATUS_ACTIVE để nhấn mạnh rằng tính năng này đã đi vào hoạt động. (I62bc3)
  • Thêm các API RearDisplayPresentationMode (I0401c)
  • Xoá API màu nền vì lý do ổn định. (I34c3e)
  • API Ẩn vùng cửa sổ. (I39de0)
  • Thêm phương thức để ghi đè SplitInfo trong SplitController. Thêm phương thức kiểm thử để tạo gấp đôi cho SplitInfoActivityStack. (Icd69f)
  • Điều chỉnh để thẻ trở nên không bắt buộc đối với ActivityRule.Builder. (Ib0b44)
  • Xoá RatioSplitType, ExpandContainersSplitHingeSplitType. Chúng hiện là SplitType.
    • Thay thế #splitEqually(), #expandContainers()#splitByHinge để SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPANDSPLIT_TYPE_HINGE là hằng số
    • Xoá chức năng thiết lập kiểu dự phòng cho kiểu phân chia theo bản lề. Nếu không thể áp dụng kiểu phân chia theo bản lề do trạng thái hiện tại của cửa sổ hoặc thiết bị, sẽ áp dụng biện pháp dự phòng là chia đều vùng chứa tác vụ gốc. Dùng SplitController#setSplitAttributesCalculator để tuỳ chỉnh kiểu phân chia dự phòng. (Ifcc59)
  • Ngừng sử dụng add/removeSplitCallback
    • Di chuyển add/removeSplitCallback tới SplitControllerCallbackAdapter
    • Thêm tính năng hỗ trợ Flow để nhận danh sách SplitInfo (I7f1b6)
  • Thêm quy tắc kiểm thử cho ActivityEmbeddingController (I42e9b)
  • Đổi tên ActivityOptionsCompat thành ActivityEmbeddingOptions (I89301)
  • Thêm splitSupportStatus để cho biết liệu có thể nhúng Hoạt động hay không. (I10024)
  • Ra mắt SplitAttributes.BackgroundColor để thể hiện giá trị DEFAULT tốt hơn. Làm rõ rằng màu nền ảnh động không mờ không được hỗ trợ. Do đó, mọi màu không mờ sẽ được xem là màu mặc định, có thể sử dụng làm màu nền của cửa sổ giao diện hiện tại. (Ic6b95)
  • Thay thế alwaysAllow()alwaysDisallow() bằng ALWAYS_ALLOWALWAYS_DISALLOW. (I3057b)
  • Thêm các API cho SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Thêm TestActivityStack để tạo ActivityStack cho mục đích kiểm thử
    • Thêm TestSplitInfo để tạo SplitInfo cho mục đích kiểm thử. (I8e779)
  • Thêm phương án để tạo SplitAttributesCalculatorParams giả. Nhờ đó, nhà phát triển có thể xác minh SplitAttributesCalculator (Id4a6e)
  • Thêm WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) (I66c7f)

Phiên bản 1.2.0-alpha02

Ngày 7 tháng 6 năm 2023

Phát hành androidx.window:window-*:1.2.0-alpha02. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Cập nhật API Kiểm thử để có hằng số cho các tính năng gập không xác định.
  • Việc ghi đè bằng WindowLayoutInfoPublishRule sẽ ghi đè mọi giá trị của windowLayoutInfo, bao gồm cả API dựa trên Bối cảnh.

Các thay đổi về API

  • Thêm hằng số cho tính năng gập giữa không xác định. (I7530c)

Sửa lỗi

  • Cập nhật WindowLayoutInfoPublishRule để hỗ trợ ghi đè trên Context dựa trên WindowLayoutInfo. (I2037a)

Phiên bản 1.2.0-alpha01

Ngày 24 tháng 5 năm 2023

Phát hành androidx.window:window-*:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

Ổn định các API kiểm thử tính năng Nhúng hoạt động và WindowLayoutInfoTracker. ActivityEmbeddingRule đã được nâng cấp lên thành ổn định. WindowMetricsCalculatorRule đã được nâng cấp lên thành ổn định. Các hàm Utility để tạo FoldingFeature cho mục đích kiểm thử đã được nâng cấp lên thành ổn định.

Các thay đổi về API

  • Điều chỉnh cho ActivityEmbeddingRule ổn định để hỗ trợ kiểm thử đơn vị cho tính năng Nhúng hoạt động. (I8d6b6)
  • WindowMetrisCalculatorTestRule đã ổn định cho phép sử dụng các số liệu mã giả lập để kiểm thử JVM. Bạn nên dùng trình mô phỏng để có kết quả chính xác.
  • Ổn định các API kiểm thử cho WindowLayoutInfo để hỗ trợ việc kiểm thử JVM. (Ie036e)
  • Thêm IntRange để kiểm thử các giá trị của tính năng gập. (I69f7d)

Phiên bản 1.1

Phiên bản 1.1.0

Ngày 7 tháng 6 năm 2023

Phát hành androidx.window:window-*:1.1.0. Phiên bản 1.1.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.0.0

Nhúng hoạt động

  • Thêm PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED dưới dạng thuộc tính boolean của thẻ <application> trong tệp kê khai ứng dụng.
  • Không dùng isSplitSupported nữa và thay thế bằng splitSupportStatus để cung cấp thông tin chi tiết hơn về lý do không dùng được tính năng phân tách.
  • Thêm lớp SplitController.SplitSupportStatus lồng ghép để cung cấp hằng số trạng thái cho thuộc tính splitSupportStatus.
  • Tái cấu trúc SplitController thành một số mô-đun:
    • Mô-đun ActivityEmbeddingController dành cho các API liên quan đến Activity hoặc ActivityStack.
    • Chuyển isActivityEmbedded từ SplitController sang ActivityEmbeddingController.
    • Mô-đun RuleController dành cho các tác vụ liên quan đến EmbeddingRule:
    • Xoá các API SplitController:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Thêm các API RuleController:
    • addRule() — Thêm quy tắc hoặc cập nhật quy tắc có cùng thẻ.
    • removeRule() — Xoá một quy tắc khỏi bộ quy tắc đã đăng ký.
    • setRules() — Thiết lập một bộ quy tắc.
    • clearRules() — Xoá tất cả quy tắc đã đăng ký.
    • parseRules() — Phân tích cú pháp các quy tắc từ phần định nghĩa quy tắc XML.
  • Tất cả mô-đun đều yêu cầu bối cảnh để được khởi tạo bằng phương thức #getInstance(), bao gồm:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Thêm lớp EmbeddingAspectRatio để xác định các hằng số hành vi giống kiểu enum liên quan đến tỷ lệ khung hình hiển thị.
  • Thêm lớp SplitAttributes để xác định bố cục phân tách.
  • Thêm hàm tính SplitAttributes vào SplitController để tuỳ chỉnh bố cục phân tách:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() để kiểm tra xem các API SplitAttributesCalculator có được hỗ trợ trên thiết bị hay không
  • Thêm trường EmbeddingRule#tag.
  • Các bản cập nhật API trong SplitRule:
    • Thêm defaultSplitAttributes — Xác định bố cục phân tách mặc định của một phần phân tách; thay thế splitRatiolayoutDirection.
    • Thêm bản dịch cho các thuộc tính XML splitRatiosplitLayoutDirection vào defaultSplitAttributes.
    • Thay đổi định nghĩa kích thước tối thiểu để sử dụng pixel không phụ thuộc vào mật độ (dp) thay vì pixel.
    • Thêm minHeightDp với giá trị mặc định là 600dp.
    • Thay đổi minWidth thành minWidthDp với giá trị mặc định là 600dp.
    • Thay đổi minSmallestWidth thành minSmallestWidthDp với giá trị mặc định là 600dp.
    • Thêm maxAspectRatioInHorizontal với giá trị mặc định là ALWAYS_ALLOW.
    • Thêm maxAspectRatioInPortrait với giá trị mặc định là 1,4.
    • Xác định lớp lồng ghép FinishBehavior để thay thế cho hằng số hành vi hoàn chỉnh.
    • Áp dụng thay đổi về thuộc tính cho lớp lồng ghép Builder của SplitPairRuleSplitPlaceholderRule.
  • Thay thế SplitInfo#getSplitRatio() bằng SplitInfo#getSplitAttributes() để cung cấp thêm thông tin liên quan đến phần phân tách.

WindowLayout

  • Thêm tính năng hỗ trợ bối cảnh giao diện người dùng không hoạt động (thử nghiệm) vào WindowInfoTracker.
  • Thêm bối cảnh giao diện người dùng không hoạt động (thử nghiệm) vào WindowMetricsCalculator.

Các bước di chuyển

  • Để cho phép tính năng nhúng hoạt động hiển thị các hoạt động trong phần phân tách, ứng dụng phải thêm thuộc tính PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED vào thẻ <application> của tệp kê khai: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Điều này cho phép hệ thống tối ưu hoá hành vi của phần phân tách cho ứng dụng trước thời hạn.
  • Tỷ lệ SplitInfo
    • Kiểm tra xem phần phân tách có được đưa vào ngăn xếp hay không: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Kiểm tra tỷ lệ hiện tại: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Di chuyển SplitController:
    • Thay đổi SplitController.getInstance() thành SplitController.getInstance(Context)
    • Thay đổi SplitController.initialize(Context, @ResId int) thành RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
    • Thay đổi SplitController.getInstance().isActivityEmbedded(Activity) thành ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • Thay đổi SplitController.getInstance().registerRule(rule) thành RuleController.getInstance(Context).addRule(rule)
    • Thay đổi SplitController.getInstance().unregisterRule(rule) thành RuleController.getInstance(Context).removeRule(rule)
    • Thay đổi SplitController.getInstance().clearRegisteredRules() thành RuleController.getInstance(Context).clearRules()
    • Thay đổi SplitController.getInstance().getSplitRules() thành RuleController.getInstance(Context).getRules()
  • Di chuyển thuộc tính SplitRule:
    • minWidthminSmallestWidth hiện sử dụng đơn vị dp thay vì pixel. Ứng dụng có thể sử dụng các lệnh gọi sau: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) hoặc chỉ cần chia minWith theo pixel bằng displayMetrics#density.
  • Hành vi hoàn chỉnh phải được di chuyển sang hằng số lớp FinishBehavior giống kiểu enum:
    • Thay đổi FINISH_NEVER thành FinishBehavior.NEVER
    • Thay đổi FINISH_ALWAYS thành FinishBehavior.ALWAYS
    • Thay đổi FINISH_ADJACENT thành FinishBehavior.ADJACENT
  • Hướng bố cục phải được di chuyển sang SplitAttributes.LayoutDirection:
    • Thay đổi ltr thành SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • Thay đổi rtl thành SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • Thay đổi locale thành SplitAttributes.LayoutDirection.LOCALE
    • splitRatio phải được di chuyển sang SplitAttributes.SplitType.ratio(splitRatio).
  • Di chuyển SplitPairRule.Builder:
    • Thay đổi SplitPairRule.Builder(filters, minWidth, minSmallestWidth) thành kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • Thay đổi setLayoutDirection(layoutDirection)setSplitRatio(ratio) thành kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary nhận hằng số FinishBehavior giống kiểu enum. Xem “Di chuyển SplitRule” biết thông tin.
    • Sử dụng setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) để cho thấy các phần phân tách trên thiết bị hướng dọc.
  • Di chuyển SplitPlaceholder.Builder:
    • Chỉ có các tham số filtersplaceholderIntent. Các thuộc tính khác chuyển sang phương thức setter. Xem “Di chuyển SplitPairRule.Builder” để biết thêm thông tin.
    • setFinishPrimaryWithPlaceholder nhận các hằng số FinishBehavior giống như kiểu enum. Xem “Di chuyển SplitRule” biết thông tin.
    • Thay đổi setLayoutDirection(layoutDirection)setSplitRatio(ratio) thành: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Sử dụng setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) để cho thấy các phần phân tách trên thiết bị hướng dọc.

Phiên bản 1.1.0-rc01

Ngày 10 tháng 5 năm 2023

Phát hành androidx.window:window-*:1.1.0-rc01. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

  • Phát hành ActivityEmbedding dưới dạng API ổn định.
  • Nhiều bản sửa lỗi.

Phiên bản 1.1.0-beta02

Ngày 5 tháng 4 năm 2023

Phát hành androidx.window:window-*:1.1.0-beta02. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.

Tính năng mới

  • Sửa chữa nội bộ và làm sạch.

Phiên bản 1.1.0-beta01

Ngày 22 tháng 3 năm 2023

Phát hành androidx.window:window-*:1.1.0-beta01. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

Nhúng hoạt động

  • Thêm PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED dưới dạng thuộc tính boolean của thẻ <application> trong tệp kê khai ứng dụng.
  • Không dùng isSplitSupported nữa và thay thế bằng splitSupportStatus để cung cấp thông tin chi tiết hơn về lý do không dùng được tính năng phân tách.
  • Thêm lớp SplitController.SplitSupportStatus lồng ghép để cung cấp hằng số trạng thái cho thuộc tính splitSupportStatus.
  • Tái cấu trúc SplitController thành một số mô-đun:
    • Mô-đun ActivityEmbeddingController dành cho các API liên quan đến Activity hoặc ActivityStack.
    • Chuyển isActivityEmbedded từ SplitController sang ActivityEmbeddingController.
    • Mô-đun RuleController dành cho các tác vụ liên quan đến EmbeddingRule:
    • Xoá các API SplitController:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Thêm các API RuleController:
      • addRule() — Thêm quy tắc hoặc cập nhật quy tắc có cùng thẻ.
      • removeRule() — Xoá một quy tắc khỏi bộ quy tắc đã đăng ký.
      • setRules() — Thiết lập một bộ quy tắc.
      • clearRules() — Xoá tất cả quy tắc đã đăng ký.
      • `parseRules() — Phân tích cú pháp các quy tắc từ phần định nghĩa quy tắc XML.
  • Tất cả mô-đun đều yêu cầu bối cảnh để được khởi tạo bằng phương thức #getInstance(), bao gồm:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Thêm lớp EmbeddingAspectRatio để xác định các hằng số hành vi giống kiểu enum liên quan đến tỷ lệ khung hình hiển thị.
  • Thêm lớp SplitAttributes để xác định bố cục phân tách.
  • Thêm hàm tính SplitAttributes vào SplitController để tuỳ chỉnh bố cục phân tách:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() để kiểm tra xem các API SplitAttributesCalculator có được hỗ trợ trên thiết bị hay không
  • Thêm trường EmbeddingRule#tag.
  • Các bản cập nhật API trong SplitRule:
    • Thêm defaultSplitAttributes — Xác định bố cục phân tách mặc định của một phần phân tách; thay thế splitRatiolayoutDirection.
    • Thêm bản dịch cho các thuộc tính XML splitRatiosplitLayoutDirection vào defaultSplitAttributes.
    • Thay đổi định nghĩa kích thước tối thiểu để sử dụng pixel không phụ thuộc vào mật độ (dp) thay vì pixel.
    • Thêm minHeightDp với giá trị mặc định là 600dp.
    • Thay đổi minWidth thành minWidthDp với giá trị mặc định là 600dp.
    • Thay đổi minSmallestWidth thành minSmallestWidthDp với giá trị mặc định là 600dp.
    • Thêm maxAspectRatioInHorizontal với giá trị mặc định là ALWAYS_ALLOW.
    • Thêm maxAspectRatioInPortrait với giá trị mặc định là 1.4.
    • Xác định lớp lồng ghép FinishBehavior để thay thế cho hằng số hành vi hoàn chỉnh.
    • Áp dụng thay đổi về thuộc tính cho lớp lồng ghép Builder của SplitPairRuleSplitPlaceholderRule.
  • Thay thế SplitInfo#getSplitRatio() bằng SplitInfo#getSplitAttributes() để cung cấp thêm thông tin liên quan đến phần phân tách.

WindowLayout

  • Thêm tính năng hỗ trợ bối cảnh giao diện người dùng không hoạt động vào WindowInfoTracker.
  • Thêm bối cảnh giao diện người dùng không hoạt động vào WindowMetricsCalculator.

Các bước di chuyển

  • Để cho phép tính năng nhúng hoạt động hiển thị các hoạt động trong phần phân tách, ứng dụng phải thêm thuộc tính PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED vào thẻ <application> của tệp kê khai: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> Điều này cho phép hệ thống tối ưu hoá hành vi của phần phân tách cho ứng dụng trước thời hạn.
  • Tỷ lệ SplitInfo
    • Kiểm tra xem phần phân tách có được đưa vào ngăn xếp hay không: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Kiểm tra tỷ lệ hiện tại: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • Di chuyển SplitController:
    • Thay đổi SplitController.getInstance() thành SplitController.getInstance(Context)
    • Thay đổi SplitController.initialize(Context, @ResId int) thành RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • Thay đổi SplitController.getInstance().isActivityEmbedded(Activity) thành ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
    • Thay đổi SplitController.getInstance().registerRule(rule) thành RuleController.getInstance(Context).addRule(rule)
    • Thay đổi SplitController.getInstance().unregisterRule(rule) thành RuleController.getInstance(Context).removeRule(rule)
    • Thay đổi SplitController.getInstance().clearRegisteredRules() thành RuleController.getInstance(Context).clearRules()
    • Thay đổi SplitController.getInstance().getSplitRules() thành RuleController.getInstance(Context).getRules()
  • Di chuyển thuộc tính SplitRule:
    • minWidthminSmallestWidth hiện sử dụng đơn vị dp thay vì pixel. Ứng dụng có thể sử dụng các lệnh gọi sau: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) hoặc chỉ cần chia minWith theo pixel bằng displayMetrics#density.
  • Hành vi hoàn chỉnh phải được di chuyển sang hằng số lớp FinishBehavior giống kiểu enum:
    • Thay đổi FINISH_NEVER thành FinishBehavior.NEVER
    • Thay đổi FINISH_ALWAYS thành FinishBehavior.ALWAYS
    • Thay đổi FINISH_ADJACENT thành FinishBehavior.ADJACENT
  • Hướng bố cục phải được di chuyển sang SplitAttributes.LayoutDirection:
    • Thay đổi ltr thành SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
    • Thay đổi rtl thành SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
    • Thay đổi locale thành SplitAttributes.LayoutDirection.LOCALE
    • splitRatio phải được di chuyển sang SplitAttributes.SplitType.ratio(splitRatio).
  • Di chuyển SplitPairRule.Builder:
    • Thay đổi SplitPairRule.Builder(filters, minWidth, minSmallestWidth) thành kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • Thay đổi setLayoutDirection(layoutDirection)setSplitRatio(ratio) thành kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondarysetFinishSecondaryWithPrimary nhận hằng số FinishBehavior giống kiểu enum. Xem “Di chuyển SplitRule” biết thông tin.
    • Sử dụng setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) để cho thấy các phần phân tách trên thiết bị hướng dọc.
  • Di chuyển SplitPlaceholder.Builder:
    • Chỉ có các tham số filtersplaceholderIntent. Các thuộc tính khác chuyển sang phương thức setter. Xem “Di chuyển SplitPairRule.Builder” để biết thêm thông tin.
    • setFinishPrimaryWithPlaceholder nhận các hằng số FinishBehavior giống như kiểu enum. Xem “Di chuyển SplitRule” biết thông tin.
    • Thay đổi setLayoutDirection(layoutDirection)setSplitRatio(ratio) thành: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Sử dụng setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) để cho thấy các phần phân tách trên thiết bị hướng dọc.

Phiên bản 1.1.0-alpha06

Ngày 22 tháng 2 năm 2023

Phát hành androidx.window:window-*:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 chứa các cam kết này.

Tính năng mới

  • Hiển thị phiên bản thử nghiệm lấy WindowLayoutInfo từ ngữ cảnh giao diện người dùng.

Các thay đổi về API

  • Thêm splitSupportStatus để cho biết liệu có thể nhúng Hoạt động hay không. (I10024)
  • Đặt API WindowLayoutInfo cho ngữ cảnh giao diện người dùng làm thử nghiệm. (I58ee0)
  • Giới thiệu WindowAreaController và API để bật Chế độ RearDisplay giúp di chuyển cửa sổ hiện tại sang màn hình được căn chỉnh cho phù hợp với máy ảnh sau. (Iffcbf)
  • Cập nhật màu nền mặc định. (I1ac1b)
  • Thêm các tham số SplitAttributes. (I18bdd)
  • Thêm các API cho SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Cải thiện các API xoay quanh maxAspectRatio:
    1. Thay thế alwaysAllow()alwaysDisallow() bằng ALWAYS_ALLOWALWAYS_DISALLOW.
    2. Cập nhật tài liệu về API của @see bằng tài liệu độc lập. (I3057b)
  • Các hàm khởi tạo sau đây bị xoá khỏi API công khai vì các ứng dụng sẽ không gọi những hàm đó.
    • Hàm khởi tạo SplitInfo
    • Hàm khởi tạo ActivityStack (Ide534)
  • Giờ đây, SplitRule sẽ lấy maxAspectRatioInPortrait/Landscape. Hàm này chỉ cho phép phân tách hoạt động khi tỷ lệ khung hình của giới hạn gốc nhỏ hơn hoặc bằng maxAspectRatio được yêu cầu. (Ia5990)
  • Thay đổi RuleController#parseRules thành tĩnh (I785df)
  • Cải thiện các API xoay quanh ActivityEmbedding
    1. Điều chỉnh cách đặt tên API – Sử dụng thao tác thêm/xoá cho nhiều thực thể:
    2. registerRule thay đổi thành addRule
    3. unregisterRule thay đổi thành removeRule
    4. Thay thế getSplitRules bằng getRulesActivityRule không phải là quy tắc phân tách
    5. Thêm RuleController#setRules để đặt một loạt các quy tắc
    6. Trích xuất các API liên quan đến quy tắc từ SplitController sang singleton RuleController. Đó là:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Trích xuất #isActivityEmbedded từ SplitController sang singleton ActivityEmbeddingController. Đó là:
    14. isActivityEmbedded
    15. Xoá SplitController#initialize. Để đặt quy tắc từ tệp XML, vui lòng sử dụng RuleController#parseRules#setRules. Trước thay đổi này: SplitController.initialize(context, R.xml.static_rules) Sau thay đổi này: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Chúng tôi không phân biệt các quy tắc tĩnh với quy tắc thời gian chạy nữa. Tuy nhiên, việc gọi kết quả #clearRules sẽ xoá tất cả quy tắc bất kể quy tắc được đăng ký với định nghĩa quy tắc XML tĩnh hay trong thời gian chạy. Để có hành vi cũ của SplitController#clearRegisteredRules, vui lòng gọi RuleController#parseRules kèm theo mã nhận dạng tài nguyên XML và gọi RuleController#setRules để đặt lại các quy tắc đó. Trước thay đổi này: SplitController.getInstance(context).clearRegisteredRules() Sau thay đổi này: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • Cải thiện API SplitRule:
    1. Lấy kích thước tối thiểu trong DP thay vì pixel cho SplitRule.
    2. Tái cấu trúc cho Trình tạo SplitRule để lấy kích thước tối thiểu ở dạng không bắt buộc. (I95f17)
  • Truyền một Ngữ cảnh để khởi động SplitController (I42549)
  • Đổi tên SplitRule#layoutDir thành #layoutDirectionSplitRule Builder#setLayoutDir thành Builder#setLayoutDirection. (I3f6d1)

Phiên bản 1.1.0-alpha04

Ngày 9 tháng 11 năm 2022

Phát hành androidx.window:window-*:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Hiển thị một phương thức giúp xác định xem ActivityStack có trống cho ActivityEmbedding hay không.
  • Xoá thẻ API thử nghiệm khỏi API ActivityEmbedding.
  • Ẩn hàm khởi tạo ActivityRuleBuilder là cách xây dựng ưu tiên.
  • Thêm một phương thức thử nghiệm để nhận WindowInsets trên WindowMetrics.
  • Cập nhật SplitPlaceholderFinishBehavior để ngăn việc hoàn tất phần giữ chỗ. Việc hoàn tất phần giữ chỗ đã gây ra một số hành vi khó hiểu.

Các thay đổi về API

  • Đặt val isEmpty sang chế độ công khai để thay thế fun isEmpty.
  • Đổi tên các hoạt động của tham số ActivityStack thành activitiesInProcess. (Ia5055)
  • Xoá ActivityFilter#matchesClassNameActivityFilter#matchesClassNameOrWildCard vì chúng gây nhầm lẫn.
  • Thêm ActivityFilter#componentNameActivityFilter#intentAction để giúp phương thức gọi phân biệt các bộ lọc khác nhau (I41f22)
  • Xoá API @Deprecated khỏi API thử nghiệm (I216b3)
  • Xoá @ExperimentalWindowApi cho API nhúng hoạt động (I69ebe)
  • Ẩn hàm khởi tạo ActivityRule, sử dụng Trình tạo. (If4eb6)
  • Thêm API để kiểm tra xem một Hoạt động có thuộc ActivityFilter hay không. (Ia43cf)
  • Cập nhật các tệp API để phản ánh các thay đổi trong lớp WindowMetricsWindowMetricsCalculatorCompat (I667fe)
  • Cập nhật tên lớp và Javadoc cho thuộc tính của ActivityEmbedding (Ia1386)
  • Việc thêm tên thẻ thuộc tính ActivityEmbedding sẽ được dùng trong AndroidManifest.xml (Id1ad4)
  • Thêm API mới: SplitPlaceholderFinishBehaviorSplitPlaceholderRule.finishPrimaryWithPlaceholder, để thay thế cho SplitPlaceholderRule.finishPrimaryWithSecondary hiện tại (API này hiện xác định cách thức hoạt động của các hoạt động liên quan trong quy trình Nhúng hoạt động tại thời điểm hoàn tất hoạt động giữ chỗ). (I64647)

Sửa lỗi

  • Giới thiệu WindowAreaController và API để bật Chế độ RearDisplay giúp di chuyển cửa sổ hiện tại đến màn hình được căn chỉnh cho phù hợp với máy ảnh sau. (I388ab)

Phiên bản 1.1.0-alpha03

Ngày 27 tháng 7 năm 2022

Phát hành androidx.window:window-*:1.1.0-alpha03. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Cập nhật các giá trị mặc định cho quy tắc nhúng.

Các thay đổi về API

  • Cập nhật các giá trị mặc định cho thuộc tính quy tắc nhúng. (Ic4d35)

Phiên bản 1.1.0-alpha02

Ngày 11 tháng 5 năm 2022

Phát hành androidx.window:window-*:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Tính năng mới

  • Phát hành các thư viện bộ chuyển đổi để hỗ trợ Java và RxJava.

Phiên bản 1.1.0-alpha01

Ngày 11 tháng 5 năm 2022

Phát hành androidx.window:window-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Phát hành bộ chuyển đổi để hỗ trợ java và RxJava

Phiên bản 1.1.0-alpha01

Ngày 20 tháng 4 năm 2022

Phát hành androidx.window:window:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Khắc phục lỗi các tính năng gấp ngừng phát khi người dùng chuyển một ứng dụng vào chạy trong nền.
  • Mở rộng thử nghiệm trên API ActivityEmbedding.

Các thay đổi về API

  • API công khai để kiểm tra xem có hoạt động nào đang được nhúng hay không. (I39eb7)

Sửa lỗi

  • Thêm API tuỳ chỉnh hành vi hoàn tất cho các vùng chứa trong quá trình chia hoạt động (I1a1e4)
  • Thêm tuỳ chọn cấu hình mới cho quy tắc chia hoạt động. (Iec6af)

Phiên bản 1.0

Phiên bản 1.0.0

Ngày 26 tháng 1 năm 2022

Phát hành androidx.window:window-*:1.0.0. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Các tính năng chính của phiên bản 1.0.0

  • Hỗ trợ điện thoại gập qua WindowInfoTrackerFoldingFeature. WindowMetricsCalculator để giúp tính WindowMetrics hiện tại.

Phiên bản 1.0.0-rc01

Ngày 15 tháng 12 năm 2021

Phát hành androidx.window:window-*:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ cho điện thoại gập với WindowInfoTracker.
  • Thêm các phương thức để tính WindowMetrics hiện tại và tối đa.
  • Thêm các API kiểm thử hỗ trợ.

Phiên bản 1.0.0-beta04

Ngày 17 tháng 11 năm 2021

Phát hành androidx.window:window-*:1.0.0-beta04. Phiên bản 1.0.0-beta04 bao gồm các thay đổi sau.

Tính năng mới

  • Đổi tên WindowInfoRepository thành WindowInfoTracker.
  • Biến Activity thành một phần phụ thuộc phương thức tường minh cho WindowInfoTracker.
  • Thêm một TestRule đơn giản cho WindowsMetricsCalculator để hỗ trợ nhà phát triển sử dụng Robolectric.

Các thay đổi về API

  • Trích xuất tiện ích (I25a5f)
  • Thêm isEmpty trong ActivityStack (I5a4e6)
  • Đổi tên WindowInfoRepository thành WindowInfoTracker.
    • Cập nhật các phần phụ thuộc java/rxjava/testing để khớp. (I0da63)
  • Thêm quy tắc kiểm thử cho một WindowMetricsCalculator đơn giản. (Ibacdb)

Phiên bản 1.0.0-beta03

Ngày 27 tháng 10 năm 2021

Phát hành androidx.window:window-*:1.0.0-beta03. Phiên bản 1.0.0-beta03 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm API Nhúng hoạt động (Activity Embedding) thử nghiệm Phiên bản bố cục ban đầu này cho phép hiển thị hai Hoạt động (Activity) cạnh nhau.

Các thay đổi về API

  • Xoá API currentWindowMetrics vì chúng tôi không thể cung cấp chính xác giá trị. Thay vào đó, vui lòng sử dụng WindowMetricsCalculator (Icda5f)
  • Cập nhật API tiện ích. (Ica92b)
  • Thêm giao diện cho một tính năng mới cho phép nhúng các hoạt động và hiển thị chúng bên cạnh nhau trong cửa sổ tác vụ mẹ. (I5711d)
  • Ẩn hàm khởi tạo cho WindowsMetrics và WindowLayoutInfo, vui lòng chuyển sang sử dụng API kiểm thử. (I5a1b5)
  • Thêm API để tạo đối tượng WindowLayoutInfo giả. (I4a2fd)

Sửa lỗi

Phiên bản 1.0.0-beta02

Ngày 1 tháng 9 năm 2021

Phát hành androidx.window:window-*:1.0.0-beta02. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.

Tính năng mới

  • Thêm chú giải thử nghiệm để chú thích API thử nghiệm. (I9f1b6)
  • Thêm phương pháp kiểm thử để tạo FoldingFeature kiểm thử chấp nhận Rect. Việc này sẽ giúp bạn dễ dàng kiểm thử khi sử dụng Robolectric trái ngược với một Activity thực. (Id1cca)

Phiên bản 1.0.0-beta01

Ngày 18 tháng 8 năm 2021

Phát hành androidx.window:window-*:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Xoá các hằng số cũ và khiến FoldingFeature trở thành một giao diện.

Các thay đổi về API

  • Xoá các hằng số cũ và khiến FoldFeature trở thành một giao diện. (I9a2d5)

Sửa lỗi

  • Các thư viện phụ thuộc vào thư viện Test Core được nâng cấp lên phiên bản 1.4.0 và nay hoạt động được trên nền tảng Android phiên bản S. (I88b72, b/189353863)

Phiên bản 1.0.0-alpha10

Ngày 4 tháng 8 năm 2021

Phát hành androidx.window:window-*:1.0.0-alpha10. Phiên bản 1.0.0-alpha10 bao gồm các thay đổi sau.

Tính năng mới

  • Đổi tên WindowInfoRepo thành WindowInfoRepository và điều chỉnh các lớp/tệp tương ứng.
  • Chuyển đổi chỉ số cửa sổ hiện tại thành một Luồng (Flow) trong WindowsInfoRepository vì giá trị này thay đổi theo thời gian.
  • Đổi tên WindowInfoRepoJavaAdapter thành WindowInfoRepoCallbackAdapter
  • Thêm phương thức hỗ trợ tạo đối tượng kiểm thử FoldingFeature
  • Cập nhật các gói để nhóm các lớp dựa trên tính năng được hỗ trợ.

Các thay đổi về API

  • Đổi tên ActivityExt thành ActivityExtensions Đổi tên Repo thành Repository. (I61a16)
  • Cập nhật các gói cho lớp. (I23ae2)
  • Xoá WindowMetrics khỏi WindowInfoRepo (I24663)
  • Xoá WindowManager và sử dụng WindowInfoRepo
    • Biến WindowBackend thành thuộc tính nội bộ. (I06d9a)
  • Chuyển đổi chỉ số cửa sổ thành Luồng (Flow).
    • Đổi tên trình chuyển đổi java thành WindowInfoRepoCallbackAdapter
    • Xoá callbackFlow để không còn API thử nghiệm nào được sử dụng. (Ia4d15)
  • Thêm phương thức hỗ trợ để tạo tính năng hiển thị kiểm thử.
    • Thay đổi từ occlusionMode thành occlusionType (If4cff)

Sửa lỗi

  • Khắc phục lỗi Proguard trong đó thư viện cốt lõi đang bị xoá.
  • Khắc phục lỗi trong đó WindowLayoutInfo không được phân phối cho người đăng ký khác.
  • Khắc phục lỗi trong đó các thay đổi về cấu hình sẽ không kích hoạt các bản cập nhật tính năng gập.

Phiên bản 1.0.0-alpha09

Ngày 30 tháng 6 năm 2021

Phát hành androidx.window:window-*:1.0.0-alpha09. Phiên bản 1.0.0-alpha09 bao gồm các thay đổi sau.

Tính năng mới

  • Thay đổi từ hằng số nguyên sang giá trị enum không ràng buộc.
  • Thêm một bản kiểm thử để tạo tính năng gấp kiểm thử.

Các thay đổi về API

  • Thêm phương thức hỗ trợ để tạo tính năng hiển thị phép kiểm thử. (I3cf54)
    • Đổi occlusionMode thành occlusionType.

Sửa lỗi

  • Phát ra giá trị ban đầu khi thêm nhiều người dùng sử dụng luồng dữ liệu.

Phiên bản 1.0.0-alpha08

Ngày 16 tháng 6 năm 2021

Phát hành androidx.window:window-*:1.0.0-alpha08. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.

Tính năng mới

  • Phát hành cấu phần phần mềm kiểm thử giúp dễ dàng kiểm thử hơn khi sử dụng WindowInfoRepository. Sử dụng WindowInfoRepository để nhận thông tin về DisplayFeatures và WindowMetrics. (I57f66, Ida620)

Phiên bản 1.0.0-alpha07

Ngày 2 tháng 6 năm 2021

Phát hành androidx.window:window-*:1.0.0-alpha07. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.

Tính năng mới

  • Di chuyển thư viện cửa sổ cốt lõi sang Kotlin. Sẽ sử dụng coroutine và các hàm tạm ngưng để hiển thị dữ liệu không đồng bộ từ giờ trở đi.
  • Thêm WindowInfoRepo làm điểm tương tác chính để nhận WindowMetrics và luồng WindowLayoutInfo.
  • Cấu phần phần mềm window-java mới sẽ hiển thị các API sử dụng được cho Java để đăng ký và huỷ đăng ký các lệnh gọi lại.
  • Các cấu phần phần mềm window-rxjava2window-rxjava3 mới sẽ hiển thị các API được điều chỉnh cho RxJava.

Các thay đổi về API

  • Thêm WindowServices để cung cấp các phần phụ thuộc một cách thống nhất.
    • Thêm API dựa trên coroutine để xử lý thông tin về bố cục cửa sổ. (Iab70f)
  • Di chuyển thư viện trình quản lý cửa sổ cốt lõi sang Kotlin. (Icca34)

Sửa lỗi

  • Thêm lớp dữ liệu mới để thể hiện các điều kiện ràng buộc tính năng. (I6dcd1)

Phiên bản 1.0.0-alpha06

Ngày 5 tháng 5 năm 2021

Phát hành androidx.window:window:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Tính năng mới

  • Chúng tôi đã bắt đầu quá trình chuyển sang Kotlin và sẽ hoàn tất trong bản phát hành tiếp theo.
  • DeviceState đã bị xoá khỏi API công khai, vui lòng sử dụng FoldingFeature.
  • Chúng tôi đã xoá STATE_FLIPPED khỏi trạng thái FoldingFeature vì hiện không được bất kỳ trường hợp sử dụng nào hỗ trợ.
  • Chúng tôi cũng đã xoá những API khác không dùng nữa.

Các thay đổi về API

  • Thêm Kotlin làm phần phụ thuộc.
    • Di chuyển thư viện Core sang Kotlin. (Idd995)
  • Xoá trình tạo DisplayFeature. (I61fa4)
  • Xoá DeviceState khỏi API công khai, hãy dùng FoldingFeature. (Id6079)
  • Xoá lệnh gọi lại trạng thái thiết bị khỏi tiện ích. (I5ea83)
  • Xoá STATE_FLIPPED khỏi FoldingFeature. (I9c4e1)
  • Xoá các phương thức đăng ký không dùng nữa. (Ib381b)

Phiên bản 1.0.0-alpha05

Ngày 24 tháng 3 năm 2021

Phát hành androidx.window:window:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.

Tính năng mới

Chúng tôi đã thêm các phương thức thuận tiện vào FoldingFeature để ứng dụng biết được tính năng này có đang chia tách, che khuất và xác định hướng của bản lề hay không. Chúng tôi cũng đang ẩn loại bản lề để

Chúng tôi sẽ xoá các phương thức đọc đồng bộ khỏi WindowManager. Phương thức đọc đồng bộ dễ gặp lỗi do có một tình huống tương tranh ngầm ẩn. Đăng ký trình nghe (event listener) và lệnh gọi lại để nhận thông tin cập nhật trên WindowLayoutInfo.

Các thay đổi về API

  • Thêm các phương thức thuận tiện để xử lý FoldingFeatures (Ie733f)
  • Xoá các phương thức đọc đồng bộ khỏi WindowManager (I96fd4)

Phiên bản 1.0.0-alpha04

Ngày 10 tháng 3 năm 2021

Phát hành androidx.window:window:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Khắc phục lỗi không phát WindowLayoutInfo nếu OEM không triển khai. Giờ đây chúng tôi phát ra tín hiệu WIndowLayoutInfo trống.
  • Khắc phục lỗi trạng thái không cập nhật đúng nếu trạng thái bản lề thay đổi khi ứng dụng đang chạy ở chế độ nền. Trạng thái nay đã nhất quán trở lại.
  • Cập nhật các tệp Proguard để bỏ qua cảnh báo khỏi các phần phụ thuộc thời gian chạy.

Sửa lỗi

  • Phát ra tín hiệu giá trị trống khi thiếu thư viện OEM. (Ide935)

Phiên bản 1.0.0-alpha03

Ngày 18 tháng 2 năm 2021

Phát hành androidx.window:window:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Phát ra tín hiệu giá trị trống cho WindowLayoutInfo khi triển khai OEM trống. Việc này sẽ giúp bạn dễ dàng sử dụng thư viện trên nhiều thiết bị hơn. Do các API không đồng bộ nên vẫn khuyến khích viết một số mã phòng thủ cho ứng dụng và phát ra tín hiệu giá trị mặc định sau khi hết thời gian chờ. Chúng tôi không đảm bảo về việc triển khai của OEM và giá trị ban đầu có thể bị chậm trễ.

Sửa lỗi

  • Phát ra tín hiệu giá trị trống khi thiếu thư viện OEM. (Ide935)

Phiên bản 1.0.0-alpha02

Ngày 27 tháng 1 năm 2021

Phát hành androidx.window:window:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm những thay đổi sau.

Tính năng mới

  • Chúng tôi không dùng một số API nữa để giúp đơn giản hoá API và giảm sai sót. Có thể kể đến một số ví dụ đáng chú ý như xoá hoạt động đọc đồng bộ khỏi WindowManager và ngừng sử dụng DeviceState. Các thao tác đọc đồng bộ có thể dẫn đến tình huống tương tranh và giao diện người dùng thể hiện không chính xác.

  • Chúng tôi đã chuyển đổi DisplayFeature thành một giao diện mà các tính năng khác sẽ triển khai trong tương lai. Tính năng đầu tiên là FoldingFeature, tức là đường gập màn hình hoặc bản lề. Tính năng này cũng chứa trạng thái của bản lề thay thế cho DeviceState.

  • WindowMetrics ra mắt trong phiên bản Android 11 cung cấp cho các nhà phát triển tính năng truy vấn chỉ số về một cửa sổ theo cách đơn giản, chẳng hạn như vị trí và kích thước của cửa sổ trên màn hình và phần lồng ghép của hệ thống nào đó. Chúng tôi đã điều chỉnh API cho phiên bản cũ trong bản phát hành này để nhà phát triển có thể tận dụng WindowMetrics và tiếp tục hỗ trợ các phiên bản Android trước đây. Có thể lấy WindowMetrics thông qua WindowManager#getCurrentWindowMetrics() và các API WindowManager#getmaximumWindowMetrics().

Các thay đổi về API

  • Các API không còn được dùng nữa sẽ bị xoá trong phiên bản alpha tiếp theo (Ib7cc4)
  • Cập nhật ExtensionInterface để chấp nhận các tham chiếu tường minh đến thuộc tính Activity. (I07ded)
  • Giới thiệu WindowMetrics API. (I3ccee)
  • Xoá các phương thức đọc đồng bộ khỏi WindowManager (I69983)
  • Bảo vệ gói ExtensionWindowsBackend. (Ied208)

Sửa lỗi

  • Cập nhật các API ExtensionInterface để chấp nhận bối cảnh dạng hình ảnh. (I8e827)

Đóng góp bên ngoài

  • Hợp nhất DeviceState và WindowsLayoutInfo để truy cập dữ liệu dễ dàng hơn. (Id34f4)

Phiên bản 1.0.0-alpha01

Ngày 27 tháng 2 năm 2020

Phát hành androidx.window:window:1.0.0-alpha01androidx.window:window-extensions:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau. Đây là bản phát hành đầu tiên của thư viện Trình quản lý cửa sổ (Window Manager).

Tính năng mới

  • DisplayFeature: API mới này xác định các yếu tố gián đoạn trên bề mặt màn hình phẳng liên tục, chẳng hạn như bản lề hoặc đường gập màn hình
  • DeviceState: API mới này cho biết tư thế hiện tại của điện thoại trong danh sách tư thế đã xác định (ví dụ: CLOSED, OPENED, HALF_OPENED, v.v.)