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 1 tháng 5 năm 2024 1.2.0 - 1.3.0-beta02 -

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.2.0"

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

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

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

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

Kotlin

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

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

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

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

    // For testing
    implementation("androidx.window:window-testing:1.2.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

Hãy 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.3

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.

Các thay đổi về API

  • Ngừng hỗ trợ việc tạo và sử dụng các WindowSizeClass tuỳ chỉnh. (Id1143)

Sửa lỗi

  • Sửa lỗi KotlinReflectionInternalError do Proguard loại bỏ một số tệp trên một số phương thức triển khai thiết bị nhất định. (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.

Các 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 đúng cách. (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ác điểm cập nhật đối với khu vực API của Window Size Class API (API Lớp kích thước cửa sổ) để tăng tính linh hoạt cho những nhà phát triển muốn sử dụng các lớp kích thước của riêng họ.

Các thay đổi về API

  • Thêm các điều kiện ràng buộc 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 họ. Thêm một hàm mở rộng bộ chọn để chọn WindowSizeClass rộng nhất trong một giới hạn cho trước. (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 theo 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 bị cắt bớt thành 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 đè người dùng cho mỗi ứng dụng:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE – Thông báo cho hệ thống mà ứng dụng đã chọn không ghi đè khả năng tương thích tỷ lệ khung hình dành cho người dùng.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE – Thông báo cho hệ thống mà ứng dụng đã chọn không sử dụng tuỳ chọn toàn màn hình trong chế độ cài đặt ghi đè khả năng tương thích với tỷ lệ khung hình cho người dùng

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.

Các 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 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.

Các 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 lượt kiểm tra RequiresApi để tìm những API cần một phiên bản cụ thể của tiện ích để hoạt động đúng cách.
  • Thêm một API để hiển thị phiên bản tiện ích trên thiết bị.

Các 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 cần thiết. (I05fd4)
  • Đặt WindowAreaInfo#getCapability là 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.)