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 11 tháng 5 năm 2022 1.0.0 - - 1.1.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.1.0-alpha02"

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

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

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

    // For testing
    implementation "androidx.window:window-testing:1.1.0-alpha02"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.1.0-alpha02")

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

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

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

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

Ý kiến phản hồi

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.1

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 chứa những cam kết này.

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 chứa những cam kết này.

Tính năng mới

  • Khắc phục lỗi ứng dụng chạy ở chế độ nền ngừng phát ra các tính năng gấp.
  • Mở rộng thử nghiệm trên ActivityEmbedding API.

Thay đổi về API

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

Sửa lỗi

  • Thêm API tùy chỉnh hành vi hoàn thiện cho các vùng chứa trong phân tách hoạt động (I1a1e4)
  • Đã thêm tùy 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 Một, 2022

androidx.window:window-*:1.0.0 đã phát hành. 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 chứa các thao tác lưu trữ thay đổi này.

Tính năng mới

  • Thêm tuỳ chọn hỗ trợ cho điện thoại gập thông qua 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.

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 cho Activity thử nghiệm. Phiên bản bố cục ban đầu này cho phép hiển thị hai Activity cạnh nhau.

Thay đổi về API

  • Xoá currentWindowMetrics API vì chúng tôi không không cấp được chính xác. 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 chứa những cam kết này.

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.

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ợ.

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 những thay đổi này.

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ử.

Thay đổi về API

  • Thêm phương thức hỗ trợ để tạo tính năng hiển thị 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 dừ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 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.

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.

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 chứa những cam kết này.

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.

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 chứa những cam kết này.

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 chứa những cam kết này.

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à không dùng DeviceState nữa. 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().

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