WindowManager
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.
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
.WindowWidthSizeClass
vàWindowHeightSizeClass
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ụngActivityEmbedding
, 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ớpSplitController#pinTopActivityStack
SplitController#unpinTopActivityStack
Thêm API để bật và định cấu hình bộ chia tương tác
DividerAttributes
lớpSplitAttributes.Builder#setDividerAttributes
Thêm API để thiết lập
EmbeddingConfiguration
vàDimAreaBehavior
cho hộp thoạiEmbeddingConfiguration
lớpDimAreaBehavior
lớpActivityEmbeddingController#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ớpActivityEmbeddingController#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ạyActivityEmbeddingOptions#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 choSplitAttributes
. (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ụngActivityOptionsCompat
.- Người dùng phải truyền
activityOptions.toBundle
thay vì chínhActvityOptions
. - Xoá
#setLaunchingActivityStack(Activity)
. Người dùng nên di chuyển để sử dụngActivityEmbeddingController#getActivityStac(Activity)
nhằm có đượcActivityStack
và chuyểnActivityStack
cho#setLaunchingActivityStack
. (Ie0cpc)
- Người dùng phải truyền
- – Ra mắt
ActivityStack.Token
vàSpltInfo.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)
- Xoá
- – 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)
- Đang cập nhật ứng dụng minh hoạ để cho phép ghim/bỏ ghim
- Thêm lại
#finishActivityStacks
vàActivityEmbeddingOptions
(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
- Ngừng hỗ trợ việc tạo và sử dụng
WindowSizeClass
tuỳ chỉnh. (Mã nhận dạng 1143)
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ọnWindowSizeClass
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ộtUiContext
.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ộtUiContext
.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ộtUiContext
.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
- Xoá các API không ổn định. (Ibc534, b/302380585)
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)
- Xoá
- 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)
- Ra mắt
- 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ộtUiContext
.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
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
trongSplitController
. Thêm phương thức kiểm thử để tạo gấp đôi choSplitInfo
vàActivityStack
. (Icd69f) - Điều chỉnh để thẻ trở nên không bắt buộc đối với
ActivityRule.Builder
. (Ib0b44) - Xoá
RatioSplitType
,ExpandContainersSplit
vàHingeSplitType
. Chúng hiện làSplitType
.- Thay thế
#splitEqually()
,#expandContainers()
và#splitByHinge
đểSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
vàSPLIT_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)
- Thay thế
- Ngừng sử dụng
add
/removeSplitCallback
- Di chuyển
add
/removeSplitCallback
tớiSplitControllerCallbackAdapter
- Thêm tính năng hỗ trợ
Flow
để nhận danh sáchSplitInfo
(I7f1b6)
- Di chuyển
- Thêm quy tắc kiểm thử cho
ActivityEmbeddingController
(I42e9b) - Đổi tên
ActivityOptionsCompat
thànhActivityEmbeddingOptions
(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()
vàalwaysDisallow()
bằngALWAYS_ALLOW
vàALWAYS_DISALLOW
. (I3057b) - Thêm các API cho
SplitRule
,SplitAttributes
,SplitAttributesCalculator
. (I92d23) - Thêm
TestActivityStack
để tạoActivityStack
cho mục đích kiểm thử- Thêm
TestSplitInfo
để tạoSplitInfo
cho mục đích kiểm thử. (I8e779)
- Thêm
- Thêm phương án để tạo
SplitAttributesCalculatorParams
giả. Nhờ đó, nhà phát triển có thể xác minhSplitAttributesCalculator
(Id4a6e) - Thêm
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
và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ủawindowLayoutInfo
, 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ênContext
dựa trênWindowLayoutInfo
. (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ằngsplitSupportStatus
để 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ínhsplitSupportStatus
. - 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 đếnActivity
hoặcActivityStack
. - Chuyển
isActivityEmbedded
từSplitController
sangActivityEmbeddingController
. - Mô-đun
RuleController
dành cho các tác vụ liên quan đếnEmbeddingRule
: - 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.
- Mô-đun
- 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àoSplitController
để tuỳ chỉnh bố cục phân tách:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
để kiểm tra xem các APISplitAttributesCalculator
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ếsplitRatio
vàlayoutDirection
. - Thêm bản dịch cho các thuộc tính XML
splitRatio
vàsplitLayoutDirection
vàodefaultSplitAttributes
. - 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ànhminWidthDp
với giá trị mặc định là 600dp. - Thay đổi
minSmallestWidth
thànhminSmallestWidthDp
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
SplitPairRule
vàSplitPlaceholderRule
.
- Thêm
- Thay thế
SplitInfo#getSplitRatio()
bằngSplitInfo#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. }
- Kiểm tra xem phần phân tách có được đưa vào ngăn xếp hay không:
- Di chuyển SplitController:
- Thay đổi
SplitController.getInstance()
thànhSplitController.getInstance(Context)
- Thay đổi
SplitController.initialize(Context, @ResId int)
thànhRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
- Thay đổi
SplitController.getInstance().isActivityEmbedded(Activity)
thànhActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
- Thay đổi
SplitController.getInstance().registerRule(rule)
thànhRuleController.getInstance(Context).addRule(rule)
- Thay đổi
SplitController.getInstance().unregisterRule(rule)
thànhRuleController.getInstance(Context).removeRule(rule)
- Thay đổi
SplitController.getInstance().clearRegisteredRules()
thànhRuleController.getInstance(Context).clearRules()
- Thay đổi
SplitController.getInstance().getSplitRules()
thànhRuleController.getInstance(Context).getRules()
- Thay đổi
- Di chuyển thuộc tính
SplitRule
:minWidth
vàminSmallestWidth
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 chiaminWith
theo pixel bằngdisplayMetrics#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ànhFinishBehavior.NEVER
- Thay đổi
FINISH_ALWAYS
thànhFinishBehavior.ALWAYS
- Thay đổi
FINISH_ADJACENT
thànhFinishBehavior.ADJACENT
- Thay đổi
- Hướng bố cục phải được di chuyển sang
SplitAttributes.LayoutDirection
:- Thay đổi
ltr
thànhSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
- Thay đổi
rtl
thànhSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
- Thay đổi
locale
thànhSplitAttributes.LayoutDirection.LOCALE
splitRatio
phải được di chuyển sangSplitAttributes.SplitType.ratio(splitRatio)
.
- Thay đổi
- Di chuyển
SplitPairRule.Builder
:- Thay đổi
SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
thànhkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
- Thay đổi
setLayoutDirection(layoutDirection)
vàsetSplitRatio(ratio)
thànhkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
vàsetFinishSecondaryWithPrimary
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.
- Thay đổi
- Di chuyển
SplitPlaceholder.Builder
:- Chỉ có các tham số
filters
vàplaceholderIntent
. 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)
và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.
- Chỉ có các tham số
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ằngsplitSupportStatus
để 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ínhsplitSupportStatus
. - 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 đếnActivity
hoặcActivityStack
. - Chuyển
isActivityEmbedded
từSplitController
sangActivityEmbeddingController
. - Mô-đun
RuleController
dành cho các tác vụ liên quan đếnEmbeddingRule
: - 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.
- Mô-đun
- 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àoSplitController
để 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ếsplitRatio
vàlayoutDirection
. - Thêm bản dịch cho các thuộc tính XML
splitRatio
vàsplitLayoutDirection
vàodefaultSplitAttributes
. - 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ànhminWidthDp
với giá trị mặc định là 600dp. - Thay đổi
minSmallestWidth
thànhminSmallestWidthDp
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ủaSplitPairRule
vàSplitPlaceholderRule
.
- Thêm
- Thay thế
SplitInfo#getSplitRatio()
bằngSplitInfo#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. }
- Kiểm tra xem phần phân tách có được đưa vào ngăn xếp hay không:
- Di chuyển
SplitController
:- Thay đổi
SplitController.getInstance()
thànhSplitController.getInstance(Context)
- Thay đổi
SplitController.initialize(Context, @ResId int)
thànhRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
. - Thay đổi
SplitController.getInstance().isActivityEmbedded(Activity)
thànhActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
- Thay đổi
SplitController.getInstance().registerRule(rule)
thànhRuleController.getInstance(Context).addRule(rule)
- Thay đổi
SplitController.getInstance().unregisterRule(rule)
thànhRuleController.getInstance(Context).removeRule(rule)
- Thay đổi
SplitController.getInstance().clearRegisteredRules()
thànhRuleController.getInstance(Context).clearRules()
- Thay đổi
SplitController.getInstance().getSplitRules()
thànhRuleController.getInstance(Context).getRules()
- Thay đổi
- Di chuyển thuộc tính
SplitRule
:minWidth
vàminSmallestWidth
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 chiaminWith
theo pixel bằngdisplayMetrics#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ànhFinishBehavior.NEVER
- Thay đổi
FINISH_ALWAYS
thànhFinishBehavior.ALWAYS
- Thay đổi
FINISH_ADJACENT
thànhFinishBehavior.ADJACENT
- Thay đổi
- Hướng bố cục phải được di chuyển sang
SplitAttributes.LayoutDirection
:- Thay đổi
ltr
thànhSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
- Thay đổi
rtl
thànhSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
- Thay đổi
locale
thànhSplitAttributes.LayoutDirection.LOCALE
splitRatio
phải được di chuyển sangSplitAttributes.SplitType.ratio(splitRatio)
.
- Thay đổi
- Di chuyển
SplitPairRule.Builder
:- Thay đổi
SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
thànhkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
- Thay đổi
setLayoutDirection(layoutDirection)
vàsetSplitRatio(ratio)
thànhkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
vàsetFinishSecondaryWithPrimary
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.
- Thay đổi
- Di chuyển
SplitPlaceholder.Builder
:- Chỉ có các tham số
filters
vàplaceholderIntent
. 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)
và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.
- Chỉ có các tham số
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
:- Thay thế
alwaysAllow()
vàalwaysDisallow()
bằngALWAYS_ALLOW
vàALWAYS_DISALLOW
. - Cập nhật tài liệu về API của @see bằng tài liệu độc lập. (I3057b)
- Thay thế
- 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)
- Hàm khởi tạo
- Giờ đây,
SplitRule
sẽ lấymaxAspectRatioInPortrait/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ằngmaxAspectRatio
đượ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
- Đ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ể:
registerRule
thay đổi thànhaddRule
unregisterRule
thay đổi thànhremoveRule
- Thay thế
getSplitRules
bằnggetRules
vìActivityRule
không phải là quy tắc phân tách - Thêm
RuleController#setRules
để đặt một loạt các quy tắc - Trích xuất các API liên quan đến quy tắc từ
SplitController
sang singletonRuleController
. Đó là: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Trích xuất
#isActivityEmbedded
từSplitController
sang singletonActivityEmbeddingController
. Đó là: isActivityEmbedded
- Xoá
SplitController#initialize
. Để đặt quy tắc từ tệp XML, vui lòng sử dụngRuleController#parseRules
và#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)
- 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ủaSplitController#clearRegisteredRules
, vui lòng gọiRuleController#parseRules
kèm theo mã nhận dạng tài nguyên XML và gọiRuleController#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:
- Lấy kích thước tối thiểu trong DP thay vì pixel cho
SplitRule
. - 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)
- Lấy kích thước tối thiểu trong DP thay vì pixel cho
- Truyền một Ngữ cảnh để khởi động
SplitController
(I42549) - Đổi tên
SplitRule#layoutDir
thành#layoutDirection
vàSplitRule Builder#setLayoutDir
thànhBuilder#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 choActivityEmbedding
hay không. - Xoá thẻ API thử nghiệm khỏi API
ActivityEmbedding
. - Ẩn hàm khởi tạo
ActivityRule
vìBuilder
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ênWindowMetrics
. - 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ế funisEmpty
. - Đổi tên các hoạt động của tham số
ActivityStack
thànhactivitiesInProcess
. (Ia5055) - Xoá
ActivityFilter#matchesClassName
vàActivityFilter#matchesClassNameOrWildCard
vì chúng gây nhầm lẫn. - Thêm
ActivityFilter#componentName
vàActivityFilter#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
WindowMetrics
vàWindowMetricsCalculatorCompat
(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:
SplitPlaceholderFinishBehavior
vàSplitPlaceholderRule.finishPrimaryWithPlaceholder
, để thay thế choSplitPlaceholderRule.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
WindowInfoTracker
vàFoldingFeature
.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
- Khắc phục lỗi rò rỉ bộ nhớ. (I3fc79, b/202989046)
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ản1.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ànhocclusionType
.
- Đổi
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-rxjava2
vàwindow-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ùngFoldingFeature
. (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-alpha01
và androidx.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ìnhDeviceState
: 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.)