Material trong công cụ Compose
androidx.compose.material
androidx.compose.material.icons
(Xem tài liệu tham chiếu API cho tất cả các gói công cụ Compose)
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 12 năm 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
Cấu trúc
Compose là sự kết hợp của 7 mã nhận dạng Nhóm Maven (Maven Group Id) trong androidx
. Mỗi Nhóm chứa một tập con chức năng mục tiêu và mỗi tập con có một tập hợp ghi chú phát hành riêng.
Bảng này giải thích các nhóm và đưa ra đường liên kết đến từng tập hợp ghi chú phát hành.
Nhóm | Mô tả |
---|---|
compose.animation | Tạo ảnh động trong các ứng dụng Jetpack Compose để làm phong phú trải nghiệm người dùng. |
compose.compiler | Biến đổi các hàm @Composable và hỗ trợ hoạt động tối ưu hoá bằng trình biên dịch bổ trợ Kotlin. |
compose.foundation | Viết ứng dụng Jetpack Compose bằng các khối dựng có sẵn, cũng như mở rộng nền tảng để xây dựng các thành phần của hệ thống thiết kế của riêng bạn. |
compose.material | Xây dựng các giao diện người dùng Jetpack Compose bằng các thành phần Material Design có sẵn. Đây là điểm truy cập cấp cao hơn của Compose, được thiết kế nhằm cung cấp các thành phần theo như mô tả trên trang web www.material.io. |
compose.material3 | Xây dựng giao diện người dùng Jetpack Compose bằng các thành phần Material Design 3, phiên bản cải tiến tiếp theo của Material Design. Material 3 có khả năng tuỳ chỉnh giao diện cập nhật, cũng như các thành phần và tính năng cá nhân hoá Material You, chẳng hạn như màu động. Công cụ này được thiết kế để phù hợp với phong cách đồ hoạ và giao diện người dùng hệ thống mới trên Android 12. |
compose.runtime | Các khối dựng cơ bản cho mô hình lập trình và tính năng quản lý trạng thái của Compose, đồng thời là thời gian chạy cốt lõi để trình biên dịch bổ trợ Compose nhắm đến. |
compose.ui | Các thành phần cơ bản của giao diện người dùng Compose cần thiết để tương tác với thiết bị, bao gồm cả bố cục, bản vẽ và phương thức nhập. |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên Compose, bạn phải thêm kho lưu trữ Maven của Google vào dự án. Đọ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:
Groovy
dependencies { implementation "androidx.compose.material:material:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.material:material:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý 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.8
Phiên bản 1.8.0-alpha07
Ngày 11 tháng 12 năm 2024
Phát hành androidx.compose.material:material-*:1.8.0-alpha07
. Phiên bản 1.8.0-alpha07 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi đôi khi không tuân theo đối tượng sửa đổi kích thước trường văn bản. (I90d4c, b/356905963)
Phiên bản 1.8.0-alpha06
Ngày 13 tháng 11 năm 2024
Phát hành androidx.compose.material:material-*:1.8.0-alpha06
. Phiên bản 1.8.0-alpha06 bao gồm các thay đổi sau.
Phiên bản 1.8.0-alpha05
Ngày 30 tháng 10 năm 2024
Phát hành androidx.compose.material:material-*:1.8.0-alpha05
. Phiên bản 1.8.0-alpha05 bao gồm các thay đổi sau.
Sửa lỗi
- Tối ưu hoá hành vi
contentPadding
của Scaffold để tránh luôn phải kết hợp lại nội dung phần thân khicontentPadding
thay đổi. (I8c8e2, b/373904168) - Thay đổi giá trị của Thanh trượt Material khi nhấn các phím điều khiển. (I1c442)
Phiên bản 1.8.0-alpha04
Ngày 16 tháng 10 năm 2024
Phát hành androidx.compose.material:material-*:1.8.0-alpha04
. Phiên bản 1.8.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá
readOnly
khỏiTextFields
để ghim vào phiên bản nền tảng ổn định. (I3aaba)
Sửa lỗi
- Thêm tính năng hỗ trợ gợn sóng trong các thành phần mở rộng trên Android S+, chẳng hạn như thẻ mở rộng khi nhấp. Trước đây, gợn sóng sẽ không lấp đầy kích thước mới, nhưng giờ đây, gợn sóng sẽ mở rộng đến các giới hạn mới. (If509a, b/183019123)
Phiên bản 1.8.0-alpha02
Ngày 18 tháng 9 năm 2024
Phát hành androidx.compose.material:material-*:1.8.0-alpha02
. Phiên bản 1.8.0-alpha02 bao gồm các thay đổi sau.
Phiên bản 1.8.0-alpha01
Ngày 4 tháng 9 năm 2024
Phát hành androidx.compose.material:material-*:1.8.0-alpha01
. Phiên bản 1.8.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm trình tạo
NavGraphBuilder.bottomSheet
mới để tạo bottomSheet bằng các đối số an toàn ((I28589, I777db, b/351858980))
Phiên bản 1.7
Phiên bản 1.7.6
Ngày 11 tháng 12 năm 2024
Phát hành androidx.compose.material:material-*:1.7.6
. Phiên bản 1.7.6 bao gồm các thay đổi sau.
Phiên bản 1.7.5
Ngày 30 tháng 10 năm 2024
Phát hành androidx.compose.material:material-*:1.7.5
. Phiên bản 1.7.5 bao gồm các thay đổi sau.
Phiên bản 1.7.4
Ngày 16 tháng 10 năm 2024
Phát hành androidx.compose.material:material-*:1.7.4
. Phiên bản 1.7.4 bao gồm các thay đổi sau.
Phiên bản 1.7.2
Ngày 18 tháng 9 năm 2024
Phát hành androidx.compose.material:material-*:1.7.2
. Phiên bản 1.7.2 bao gồm các thay đổi sau.
Phiên bản 1.7.1
Ngày 10 tháng 9 năm 2024
- Không có thay đổi nào đối với cấu phần phần mềm Android. Xoá cấu phần phần mềm
-desktop
và thêm cấu phần phần mềm-jvmStubs
và-linuxx64Stubs
. Không có mục tiêu nào trong số này được dùng, chúng là phần giữ chỗ để hỗ trợ các nỗ lực của Jetbrains Compose.
Phiên bản 1.7.0
Ngày 4 tháng 9 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0
. Phiên bản 1.7.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.6.0
- Các thành phần Material đã được di chuyển để sử dụng các API gợn sóng mới và không còn truy vấn
RippleTheme
nữa. - Các thành phần Material trước đây chấp nhận
MutableInteractionSource
và mặc định làremember { MutableInteractionSource() }
hiện chấp nhậnMutableInteractionSource
có thể nhận giá trị rỗng và mặc định là rỗng. Nếu không di chuyển lên trên và sử dụngMutableInteractionSource
, bạn nên truyền giá trị rỗng. Điều này cho phép một số thành phần chỉ tạo một thực thể khi cần, giúp cải thiện hiệu suất. Bạn cũng nên thực hiện các thay đổi tương tự trong các thành phần của riêng mình. BottomDrawer
,ModalBottomSheet
,BackdropScaffold
và Bottomsheet chuẩn đã được chuyển sang API ổn định.
Phiên bản 1.7.0-rc01
Ngày 21 tháng 8 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-rc01
. Phiên bản 1.7.0-rc01 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta07
Ngày 7 tháng 8 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta07
. Phiên bản 1.7.0-beta07 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta06
Ngày 24 tháng 7 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta06
. Phiên bản 1.7.0-beta06 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta05
Ngày 10 tháng 7 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta05
. Phiên bản 1.7.0-beta05 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta04
Ngày 26 tháng 6 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta04
. Phiên bản 1.7.0-beta04 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta03
Ngày 12 tháng 6 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta03
. Phiên bản 1.7.0-beta03 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta02
Ngày 29 tháng 5 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta02
. Phiên bản 1.7.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Cập nhật API để tạo kiểu cho đường liên kết: di chuyển
TextLinkStyles
sangTextStyle
và xoáTextDefaults
khỏi material (I5477b)
Phiên bản 1.7.0-beta01
Ngày 14 tháng 5 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-beta01
. Phiên bản 1.7.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Cập nhật API để nhận các đường liên kết theo chủ đề Material trong Văn bản. Cụ thể, xoá các phương thức khỏi
TextDefaults
để tạoLinkAnnotations
theo chủ đề và phân tích cú pháp HTML bằng các đường liên kết theo chủ đề. Thay vào đó, hãy thêm một lớpTextLinkStyles
cho phép tạo kiểu cho các đường liên kết dưới dạng tham số cho thành phần kết hợp Văn bản. (I31b93)
Phiên bản 1.7.0-alpha08
Ngày 1 tháng 5 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha08
. Phiên bản 1.7.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
- Khắc phục lỗi
backgroundColor
không áp dụng choTextFieldDecorationBox
vàOutlinedTextFieldDecorationBox
. Hộp trang trí hiện chấp nhận tham sốshape
. (I371c2, b/307694651) - Xoá
RippleConfiguration#isEnabled
và đặtLocalRippleConfiguration
thành rỗng. Để tắt hiệu ứng gợn sóng, thay vì cung cấpRippleConfiguration
vớiisEnabled = false
, hãy cung cấpnull
choLocalRippleConfiguration
. (I22725) - Ngoài kiểu thông thường, các đường liên kết văn bản còn có tuỳ chọn định kiểu trạng thái nhấn, di chuột qua và lấy tiêu điểm. Mỗi phương thức
TextDefaults
đều có một đối sốpressedStyle
để hỗ trợ việc đó. (Ic473f, b/139312671)
Sửa lỗi
- Khoảng đệm trên cùng
OutlinedTextField
cho nhãn hiện tính đến cỡ chữ hệ thống. (Idc781)
Phiên bản 1.7.0-alpha07
Ngày 17 tháng 4 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha07
. Phiên bản 1.7.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
- Các đường liên kết văn bản có tuỳ chọn định kiểu trạng thái nhấn ngoài kiểu thông thường, di chuột qua và lấy tiêu điểm. (I5f864, b/139312671)
- Thêm một đối tượng
TextDefaults
chứa các phương thức để tạoLinkAnnotation
và phân tích cú pháp chuỗi được gắn thẻ HTML áp dụngMaterialTheme
cho các đường liên kết. (I98532, b/139312671)
Phiên bản 1.7.0-alpha06
Ngày 3 tháng 4 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha06
. Phiên bản 1.7.0-alpha06 bao gồm các thay đổi sau.
Thông báo
androidx.compose.material
không còn yêu cầu sử dụng cùng một phiên bản của mọi cấu phần phần mềm trong nhóm maven này. Người dùng có thể kết hợp các phiên bản thư viện nền tảng Compose (Ie5fba)
Thay đổi về API
- Di chuyển thêm các giá trị mặc định
ModalDrawer
vàBottomDrawer
vào đối tượngDrawerDefaults
. (Ib5b2e)
Phiên bản 1.7.0-alpha05
Ngày 20 tháng 3 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha05
. Phiên bản 1.7.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
- Cờ
ScaffoldSubcomposeInMeasureFix
đã bị xoá. (I67363)
Phiên bản 1.7.0-alpha04
Ngày 6 tháng 3 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha04
. Phiên bản 1.7.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Thêm cấu phần phần mềm
androidx.compose.material:material-navigation
mới để hỗ trợ các trang dưới cùng làm đích đến khi sử dụng Navigation Compose. Thao tác này sẽ thay thế thư viện Material Navigation đi kèm. (d65d57, b/180247978)
Phiên bản 1.7.0-alpha03
Ngày 21 tháng 2 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha03
. Phiên bản 1.7.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
BottomDrawer
đã được nâng cấp từ thử nghiệm lên ổn định.BottomDrawerState
hiện hiển thị tiến trình dưới dạng một hàm, cho phép truy vấn tiến trình giữa các mục tiêu cụ thể.BottomDrawerState
hiện cho phép tuỳ chỉnh thông số kỹ thuật của ảnh động vàconfirmStateChange
không còn là một hàm lambda theo sau nữa. (I9c029, b/261423850)BackdropScaffold
đã được nâng cấp từ thử nghiệm lên ổn định. Thông số kỹ thuật của ảnh động hiện là thông số kỹ thuậttween
theo nguyên tắc. Tham sốsnackbarHost
củaBackdropScaffold
không còn là tham số cuối cùng để tránh nhầm lẫn với các lambda ở cuối.BackdropScaffoldState
hiển thị APIprogress(from, to)
để truy vấn tiến trình giữa các neo. (I73f48, b/261423218)- Trang tính dưới cùng chuẩn đã được nâng cấp từ thử nghiệm lên phiên bản ổn định. Xoá các hàm khởi tạo không dùng nữa. Quy cách ảnh động hiện là quy cách tween theo nguyên tắc. (I3c1a8, b/278692145, b/261409034)
- Bảng dưới cùng theo phương thức bật lên đã được nâng cấp từ thử nghiệm lên phiên bản ổn định. Xoá các hàm khởi tạo không dùng nữa. Thông số kỹ thuật của ảnh động hiện là thông số kỹ thuật
tween
theo nguyên tắc. (Ic53f4, b/278692145, b/266780235, b/261409034)
Sửa lỗi
- Khắc phục lỗi
BackdropScaffold
có thể gặp sự cố trong một số trường hợp cụ thể khi kết hợp vớiLookaheadScope
. (I51396) - Xoá thành phần phụ bên trong
BottomSheetScaffold
để cải thiện hiệu suất. Khắc phục vấn đềBottomSheetScaffold
gặp sự cố trong một số trường hợp cụ thể khi kết hợp vớiLookaheadScope
. (I2f90c) - Xoá thành phần kết hợp phụ bên trong
ModalBottomSheetLayout
, cải thiện hiệu suất. (I7a025)
Phiên bản 1.7.0-alpha02
Ngày 7 tháng 2 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha02
. Phiên bản 1.7.0-alpha02 bao gồm các thay đổi sau.
Phiên bản 1.7.0-alpha01
Ngày 24 tháng 1 năm 2024
Phát hành androidx.compose.material:material-*:1.7.0-alpha01
. Phiên bản 1.7.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về hành vi
- Các thành phần Material đã được di chuyển để sử dụng các API gợn sóng mới và không còn truy vấn
RippleTheme
nữa.
Thay đổi về API
rememberRipple
vàRippleTheme
không còn được dùng trong material-ripple, với các API gợn sóng vàRippleConfiguration
mới được thêm vào material và các thư viện hệ thống thiết kế khác.Các thành phần Material trước đây chấp nhận
MutableInteractionSource
và mặc định ghi nhớ{ MutableInteractionSource() }
hiện chấp nhậnMutableInteractionSource
có thể nhận giá trị rỗng và mặc định là rỗng. Nếu không di chuyển lên trên và sử dụngMutableInteractionSource
, bạn nên truyền giá trị rỗng. Điều này cho phép một số thành phần chỉ tạo một thực thể khi cần, giúp cải thiện hiệu suất. Bạn cũng nên thực hiện các thay đổi tương tự trong các thành phần của riêng mình.
Phiên bản 1.6
Phiên bản 1.6.8
Ngày 12 tháng 6 năm 2024
Phát hành androidx.compose.material:material-*:1.6.8
. Phiên bản 1.6.8 bao gồm các thay đổi sau.
Phiên bản 1.6.7
Ngày 1 tháng 5 năm 2024
Phát hành androidx.compose.material:material-*:1.6.7
. Phiên bản 1.6.7 bao gồm các thay đổi sau.
Phiên bản 1.6.6
Ngày 17 tháng 4 năm 2024
Phát hành androidx.compose.material:material-*:1.6.6
. Không có thay đổi nào kể từ bản phát hành gần đây nhất.
Phiên bản 1.6.5
Ngày 3 tháng 4 năm 2024
Phát hành androidx.compose.material:material-*:1.6.5
. Phiên bản 1.6.5 bao gồm các thay đổi sau.
Phiên bản 1.6.4
Ngày 20 tháng 3 năm 2024
Phát hành androidx.compose.material:material-*:1.6.4
. Phiên bản 1.6.4 bao gồm các thay đổi sau.
Phiên bản 1.6.3
Ngày 6 tháng 3 năm 2024
Phát hành androidx.compose.material:material-*:1.6.3
. Phiên bản 1.6.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự hồi quy trong
ExposedDropdownMenu
để có thể lấy tiêu điểm lại. (c0e0ed, b/323694447)
Phiên bản 1.6.2
Ngày 21 tháng 2 năm 2024
Phát hành androidx.compose.material:material-*:1.6.2
. Phiên bản 1.6.2 bao gồm các thay đổi sau.
Phiên bản 1.6.1
Ngày 7 tháng 2 năm 2024
Phát hành androidx.compose.material:material-*:1.6.1
. Phiên bản 1.6.1 bao gồm các thay đổi sau.
Phiên bản 1.6.0
Ngày 24 tháng 1 năm 2024
Phát hành androidx.compose.material:material-*:1.6.0
. Phiên bản 1.6.0 bao gồm các thay đổi sau.
Phiên bản 1.6.0-rc01
Ngày 10 tháng 1 năm 2024
Phát hành androidx.compose.material:material-*:1.6.0-rc01
. Phiên bản 1.6.0-rc01 bao gồm các thay đổi sau.
Phiên bản 1.6.0-beta03
Ngày 13 tháng 12 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-beta03
. Phiên bản 1.6.0-beta03 bao gồm các thay đổi sau.
Phiên bản 1.6.0-beta02
Ngày 29 tháng 11 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-beta02
. Phiên bản 1.6.0-beta02 bao gồm các thay đổi sau.
Phiên bản 1.6.0-beta01
Ngày 15 tháng 11 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-beta01
. Phiên bản 1.6.0-beta01 bao gồm các thay đổi sau.
Phiên bản 1.6.0-alpha08
Ngày 18 tháng 10 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha08
. Phiên bản 1.6.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
- Ngừng sử dụng hàm
materialIcon
và chuyển sang sử dụng hàm nạp chồng có tham sốautoMirror
. (Ia338d)
Sửa lỗi – Tự động tăng chiều cao của mục điều hướng cho nội dung lớn. (0c4ecc, b/272336962)
Phiên bản 1.6.0-alpha07
Ngày 4 tháng 10 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha07
. Phiên bản 1.6.0-alpha07 bao gồm các thay đổi sau.
- Bản cập nhật phần phụ thuộc
Phiên bản 1.6.0-alpha06
Ngày 20 tháng 9 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha06
. Phiên bản 1.6.0-alpha06 bao gồm các thay đổi sau.
Thay đổi có thể gây lỗi về hành vi
- Xoá chức năng liên quan đến ngăn khỏi
BottomSheetScaffold
. GóiBottomSheetScaffold
trong một thành phần kết hợp Ngăn để thực hiện chức năng trước đó. Hãy xemBottomSheetScaffoldWithDrawerSample
để biết ví dụ. (I1dcc8)
Thay đổi về API
- Giới thiệu một cờ tạm thời để kiểm soát việc Scaffold có đo lường các thành phần con trong quá trình đo lường hay trong quá trình đặt hay không. Theo mặc định, giá trị này sẽ được đo lường theo đơn vị đo lường. Nếu bạn gặp vấn đề với hành vi mới này, vui lòng báo cáo vấn đề. (If6e3b)
Phiên bản 1.6.0-alpha05
Ngày 6 tháng 9 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha05
. Phiên bản 1.6.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tính năng hỗ trợ cho các biểu tượng tự động phản chiếu khi hiển thị ở bố cục từ phải sang trái. Các biểu tượng trong mô-đun material-icons-core và material-icons-extended hiện cung cấp các bộ biểu tượng bổ sung để hỗ trợ tính năng tự động phản chiếu khi biểu tượng cho phép. Các nhóm mới được đặt tiền tố là
Icons.AutoMirrored.Filled...
, v.v. và chứa các biểu tượng sẽ tự động phản chiếu trên bố cục RTL. Hãy xem danh sách biểu tượng Material để biết danh sách biểu tượng có thể (và nên) được tự động phản chiếu.
Thay đổi về API
- Thêm tính năng hỗ trợ cho các biểu tượng tự động phản chiếu khi hiển thị ở bố cục từ phải sang trái. Các biểu tượng trong mô-đun material-icons-core và material-icons-extended hiện cung cấp các bộ biểu tượng bổ sung để hỗ trợ tính năng tự động phản chiếu khi biểu tượng cho phép. Các nhóm mới được đặt tiền tố là
Icons.AutoMirrored.Filled...
, v.v. và chứa các biểu tượng sẽ tự động phản chiếu trên bố cục RTL. Hãy xem danh sách biểu tượng Material để biết danh sách biểu tượng có thể (và nên) được tự động phản chiếu. Các thuộc tính biểu tượng được cung cấp trước đây cho các biểu tượng đó hiện được đánh dấu là không dùng nữa và đưa ra đề xuất về khối thay thế để hỗ trợ quá trình di chuyển. Trong trường hợp bạn không có cách xử lý đặc biệt nào cho việc phản chiếu biểu tượng trên RTL, bạn nên chuyển sang bộ biểu tượng mới. Ví dụ:Icons.Filled.ArrowBack
phải được tái cấu trúc thànhIcons.AutoMirrored.Filled.ArrowBack
. (I4b511)
Phiên bản 1.6.0-alpha04
Ngày 23 tháng 8 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha04
. Phiên bản 1.6.0-alpha04 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề một số thành phần sử dụng
Subcomposition
(ví dụ:BottomSheetScaffold
) bên trong Scaffold bên trongLookaheadScope
đang cố gắng đọc kích thước của các thành phần đó quá sớm. (If2c5d) - Sửa lỗi tính toán
offset
củaDropdownMenu
để độ dời x chỉ phụ thuộc vào hướng bố cục cục bộ và độ dời y sẽ không còn bị đảo ngược khi trình đơn nằm gần cuối màn hình. (Iccc74, b/294103942) - Tối ưu hoá nội dung bố cục của
BottomSheetScaffold
và khắc phục vấn đề tiềm ẩn vớiBottomSheetScaffold
bên trongLookaheadLayout
. (Ic0afa)
Phiên bản 1.6.0-alpha03
Ngày 9 tháng 8 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha03
. Phiên bản 1.6.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Các thành phần Material2 hiện có một API riêng để truyền
windowInsets
nhằm hỗ trợ chức năng tràn viền trong Android. Không giống như các thành phần material3, các thành phần material2 không hỗ trợ phần lồng ghép theo mặc định và bạn phải truyền giá trị theo cách thủ công. Hãy tham khảo các mẫu tương ứng để biết hướng dẫn. (I655e8)
Phiên bản 1.6.0-alpha02
Ngày 26 tháng 7 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha02
. Phiên bản 1.6.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Chúng tôi sẽ di chuyển phần phụ thuộc mật độ sang cấp thành phần. Điều này áp dụng cho các thành phần sau:
SwipeToDismiss
và các thành phần dựa trên Trang tính. Vui lòng sử dụng phương thức nạp chồng mới được cung cấp, trong đó mật độ là một tham số. (I1846e) - Các chú thích bổ sung để chỉ định dữ liệu đầu vào được phép cho các thành phần kết hợp (I51109)
- 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)
- Thêm căn chỉnh Start mới cho
FabPosition
(Ib7aea, b/170592777) TextFieldColorsWithIcons
trong Material 2 không còn được dùng nữa và được thay thế bằngTextFieldColors
. Khi ghi đèleadingIconColor
hoặctrailingIconColor
, hãy ghi đè cả phương thức nạp chồng bằnginteractionSource
. (Id57ed, b/199377790)
Phiên bản 1.6.0-alpha01
Ngày 21 tháng 6 năm 2023
Phát hành androidx.compose.material:material-*:1.6.0-alpha01
. Phiên bản 1.6.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về hành vi
includeFontPadding
hiện làfalse
theo mặc định trong kiểu chữ Material 2. Kiểu chiều cao dòng mặc định cũng đã được thay đổi thànhTrim.None
vàAlignment.Center
, đồng thờilineHeight
rõ ràng (trong sp) đã được thêm vàoTextStyle
củaTypography
. Hãy tham khảo tài liệu API nếu bạn muốn tuỳ chỉnh các giá trị này và xem bài đăng trên blog để biết nội dung giải thích chuyên sâu về những thay đổi này. (Icabc3, I3f801, I04c03)
Thay đổi về API
- Các API
Swipeable
của Material không còn được dùng nữa. Vui lòng tham khảo các APIAnchoredDraggable
của Foundation được tối ưu hoá cho cả trường hợp sử dụng đơn giản và phức tạp. (I732e0)
Sửa lỗi
BottomSheetState
,ModalBottomSheetState
vàBottomDrawerState
hiện hiển thị một thuộc tính tiến trình cho biết tiến trình giữa neo hiện tại (đã ổn định) và neo gần nhất theo hướng vuốt. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
Phiên bản 1.5
Phiên bản 1.5.4
Ngày 18 tháng 10 năm 2023
Phát hành androidx.compose.material:material-*:1.5.4
. Phiên bản 1.5.4 bao gồm các thay đổi sau.
Phiên bản 1.5.3
Ngày 4 tháng 10 năm 2023
Phát hành androidx.compose.material:material-*:1.5.3
. Phiên bản này không có thay đổi nào
Phiên bản 1.5.2
Ngày 27 tháng 9 năm 2023
Phát hành androidx.compose.material:material-*:1.5.2
. Phiên bản 1.5.2 bao gồm các thay đổi sau.
Phiên bản 1.5.1
Ngày 6 tháng 9 năm 2023
Phát hành androidx.compose.material:material-*:1.5.1
mà không có thay đổi nào. Phiên bản 1.5.1 bao gồm các thay đổi sau.
Phiên bản 1.5.0
Ngày 9 tháng 8 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0
. Phiên bản 1.5.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.4.0
Thay đổi về API
- Tích hợp các thay đổi về API Swipeable1 trong
BottomSheetScaffold
. Tham sốconfirmStateChange
củaBottomSheetState
đã được đổi tên thànhconfirmValueChange
.progress
hiện được hiển thị dưới dạng giá trị float.animateTo
vàsnapTo
là nội bộ. Thay vào đó, hãy sử dụngexpand()
vàcollapse()
. Xoádirection
vàoverflow
.offset
được thay thế bằngrequireOffset()
. I323b4 - Đánh dấu hàm
snapTo
trong Drawer (Ngăn) là API không thử nghiệm. (Ib9c18, b/261425368) - Thêm tham số màu theo dõi cho các chỉ báo tiến trình vòng tròn cũng như tham số giới hạn nét cho cả chỉ báo tiến trình vòng tròn và tuyến tính. (Ie668c, b/216325962, b/222964817)
- Đổi tên
confirmStateChange
củaModalBottomSheetState
,ModalBottomSheetState.Saver
vàrememberModalBottomSheetState
thànhconfirmValueChange
. (Ib48d1) - Thêm
Modifier.minimumInteractiveComponentSize
. Bạn có thể sử dụng thuộc tính này để đặt trước kích thước tối thiểu là 48 dp để phân biệt các lượt tương tác chạm nếu phần tử này có kích thước nhỏ hơn. (I33f58, b/258495559) - Tích hợp các thay đổi về Swipeable API trong
ModalBottomSheetLayout
. animateTo củaModalBottomSheetState
không còn nhận tham sốanimationSpec
nữa và độ dời được hiển thị hiện có thể nhận giá trị rỗng. Hãy dùngrequireOffset
để yêu cầu thông số chênh lệch. (Ia2e79) - Thêm chú thích
@JvmDefaultWithCompatibility
(I8f206) - Các thay đổi được tích hợp trong API có thể vuốt trong
animateTo
củaModalDrawer. DrawerState
đã được thay thế bằng các phương thức mở và đóng. Ngoài ra, thông số chênh lệch (offset) hiện có thể nhận giá trị rỗng. Hãy dùngrequireOffset
để yêu cầu thông số chênh lệch. (I3de9e) - Cập nhật các Ngăn và Trang tính để trì hoãn đúng cách thao tác nhấn trong trường hợp các cử chỉ có thể trở thành sự kiện cuộn.
- Thêm tham số
minLines
vào Text (Văn bản) material và material3,TextField
vàOutlinedTextField
giúp đặt chiều cao tối thiểu của thành phần theo số lượng dòng (I4af1d)
Sửa lỗi
- Sửa lỗi
pullRefresh
không tiêu thụ tốc độ, khiến tình trạng cuộn quá mức xuất hiện. Đồng thời, thay đổi chữ ký API của lambdaonRelease
trongModifier.pullRefresh
để trả về một Độ chính xác đơn cho tốc độ đã tiêu thụ (I7db65, b/266874741) BottomSheetState
,ModalBottomSheetState
vàBottomDrawerState
hiện hiển thị một thuộc tính tiến trình cho biết tiến trình giữa neo hiện tại (đã ổn định) và neo gần nhất theo hướng vuốt. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)- Khắc phục thao tác đóng
AlertDialog
để xuất hiện bên dưới thao tác xác nhận khi các thao tác xếp chồng lên nhau để vừa với chiều rộng của hộp thoại. Bản sửa lỗi này điều chỉnh cách triển khai cho phù hợp với thông số kỹ thuật của Material Design. (I029de, b/235454277) BottomSheetScaffold
sẽ không tham gia thao tác cuộn lồng nữa khigesturesEnabled
được đặt thành false. (I634f3, b/215403277)- Khắc phục lỗi
BottomSheetScaffold
gặp sự cố khi được cung cấp nội dung trống cho các vị trí. (Ib24a5, b/235588730) - Khắc phục
PullRefreshIndicator
chặn các sự kiện nhấp/con trỏ. (2494256, b/271777421) - Khắc phục lỗi
ModalBottomSheetLayout
gặp sự cố trong trường hợp hiếm gặp khi thay đổi hướng. Ảnh động bố cục (ví dụ:Modifier.animateContentSize
) trong/trên nội dung trang tính hiện hoạt động trơn tru. (I2f981, b/266780234)
Phiên bản 1.5.0-rc01
Ngày 26 tháng 7 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-rc01
. Phiên bản 1.5.0-rc01 bao gồm các thay đổi sau.
Phiên bản 1.5.0-beta03
Ngày 28 tháng 6 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-beta03
. Phiên bản 1.5.0-beta03 bao gồm các thay đổi sau.
Sửa lỗi
BottomSheetState
,ModalBottomSheetState
vàBottomDrawerState
hiện hiển thị một thuộc tính tiến trình cho biết tiến trình giữa neo hiện tại (đã ổn định) và neo gần nhất theo hướng vuốt. (I1b317, b/271169225, b/276375124, b/276776071, b/270066861)
Phiên bản 1.5.0-beta02
Ngày 7 tháng 6 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-beta02
. Phiên bản 1.5.0-beta02 bao gồm các thay đổi sau.
Phiên bản 1.5.0-beta01
Ngày 24 tháng 5 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-beta01
. Phiên bản beta 1.5.0 bao gồm các thay đổi sau.
Thay đổi về API
- Độ lệch của
DrawerState
vàBottomDrawerState
không còn có thể nhận giá trị rỗng nữa. Thay vào đó, các phương thức này sẽ trả vềFloat.NaN
để cho biết không có độ dời. (Ie9855) - Thêm một tuỳ chọn để truyền vào
ScrollState
khi tạoDropdownMenu
hoặcExposedDropdownMenu
để kiểm soát trạng thái cuộn dọc của các mục trong trình đơn hiển thị. (Idb009, b/185304441) - Thêm tính năng hỗ trợ bật/tắt cử chỉ của
ModalBottomSheetLayout
để người dùng có thể định cấu hình tính năng này cho nhiều tính năng hơn trong bảng dưới cùng (I40af0) - Thêm tham số màu vào
BasicText
để cho phép tạo ảnh động hoặc đặt màu văn bản một cách hiệu quả. (Iffd88, b/246961787) - Đổi tên thuộc tính Ngữ nghĩa
isContainer
thànhisTraversalGroup
(I121f6)
Sửa lỗi
- Khắc phục thao tác đóng
AlertDialog
để xuất hiện bên dưới thao tác xác nhận khi các thao tác xếp chồng lên nhau để vừa với chiều rộng của hộp thoại. Bản sửa lỗi này điều chỉnh cách triển khai cho phù hợp với thông số kỹ thuật của Material Design. (I029de, b/235454277)
Phiên bản 1.5.0-alpha04
Ngày 10 tháng 5 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-alpha04
. Phiên bản 1.5.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Chúng tôi sẽ di chuyển phần phụ thuộc mật độ sang cấp thành phần. Điều này áp dụng cho các thành phần sau:
BottomDrawer
,ModalBottomSheetLayout
,BottomSheetScaffold
,Switch
,ModalDrawer
. Vui lòng sử dụng phương thức nạp chồng mới được cung cấp, trong đó mật độ là một tham số. (I8fbd8)
Phiên bản 1.5.0-alpha03
Ngày 19 tháng 4 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-alpha03
. Phiên bản 1.5.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Cập nhật nội bộ
BottomDrawer
để sử dụng các APISwipeableV2
mới. Do đó,BottomDrawerState
hiện sẽ chỉ có các API được xác định ở cấp lớp, không kế thừa các phương thức/thuộc tính từSwipeableState
. Chúng ta đang sử dụng thành phần kết hợp vớiSwipeableV2State
nội bộ. Độ lệch hiện là một thuộc tính dấu phẩy động có thể nhận giá trị rỗng, bạn vẫn có thể truy cập vào giá trị hiện tại và giá trị mục tiêu vuốt thông qua các thuộc tính currentValue và targetValue. Các phương thức cấp lớp trước đây như mở/mở rộng/đóng và các thuộc tính nhưisOpen/isClosed
vẫn được hỗ trợ. (Iad40c, b/178529942, b/220676296)
Sửa lỗi
- Cập nhật nội bộ của thành phần Switch. Giờ đây, nút chuyển sẽ xem trước trạng thái gần nhất (trạng thái mục tiêu) khi kéo. (Id90d4)
- Nội dung trang tính động (ví dụ:
Modifier.animateContentSize
trên nội dung trang tính) trongBottomSheetScaffold
đã được tối ưu hoá và hiện hoạt động trơn tru. (Ia913c, b/270518202, b/254446195) BottomSheetScaffold
sẽ không tham gia thao tác cuộn lồng nữa khigesturesEnabled
được đặt thànhfalse
. (I634f3, b/215403277)
Phiên bản 1.5.0-alpha02
Ngày 5 tháng 4 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-alpha02
. Phiên bản 1.5.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi
BottomSheetScaffold
gặp sự cố khi được cung cấp nội dung trống cho các vị trí. (Ib24a5, b/235588730) - Khắc phục
PullRefreshIndicator
chặn các lượt nhấp / sự kiện con trỏ (2494256, b/271777421)
Phiên bản 1.5.0-alpha01
Ngày 22 tháng 3 năm 2023
Phát hành androidx.compose.material:material-*:1.5.0-alpha01
. Phiên bản 1.5.0-alpha01 bao gồm các thay đổi sau.
Sửa lỗi
- Thêm mẫu tái chảy chipgroup. Cập nhật khoảng đệm ngang giữa các khối con trong mẫu nhóm khối một dòng để khớp với thông số kỹ thuật. (I3b155)
- Khắc phục lỗi
ModalBottomSheetLayout
gặp sự cố trong trường hợp hiếm gặp khi thay đổi hướng. Ảnh động bố cục (ví dụ:Modifier.animateContentSize
) trong/trên nội dung trang tính hiện hoạt động trơn tru. (I2f981, b/266780234)
Phiên bản 1.4
Phiên bản 1.4.3
Ngày 3 tháng 5 năm 2023
Phát hành androidx.compose.material:material-*:1.4.3
mà không có thay đổi nào (chỉ tăng phiên bản).
Phiên bản 1.4.2
Ngày 19 tháng 4 năm 2023
Phát hành androidx.compose.material:material-*:1.4.2
. Phiên bản 1.4.2 bao gồm các thay đổi sau.
Phiên bản 1.4.1
Ngày 5 tháng 4 năm 2023
Phát hành androidx.compose.material:material-*:1.4.1
. Phiên bản 1.4.1 bao gồm các thay đổi sau.
Phiên bản 1.4.0
Ngày 22 tháng 3 năm 2023
Phát hành androidx.compose.material:material-*:1.4.0
. Phiên bản 1.4.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.3.0
Thay đổi về API
- Thêm
Modifier.minimumInteractiveComponentSize
. Bạn có thể sử dụng thuộc tính này để đặt trước kích thước tối thiểu là 48 dp để phân biệt các lượt tương tác chạm nếu phần tử này có kích thước nhỏ hơn. (I33f58, b/258495559) - Tích hợp các thay đổi về Swipeable API trong
ModalDrawer
. Thay thếanimateTo
củaDrawerState
bằng phương thức mở và đóng. Ngoài ra, thông số chênh lệch (offset) hiện có thể nhận giá trị rỗng. Hãy dùngrequireOffset
để yêu cầu thông số chênh lệch. (I3de9e) - Thêm tham số
minLines
vào Text (Văn bản) material và material3,TextField
vàOutlinedTextField
giúp đặt chiều cao tối thiểu của thành phần theo số lượng dòng (I4af1d) - Thêm tham số
minLines
vàoBasicText
vàBasicTextField
. Nhờ đó có thể đặt chiều cao tối thiểu của các thành phần kết hợp (composable) này theo số dòng (I24294, b/122476634)
Phiên bản 1.4.0-rc01
Ngày 8 tháng 3 năm 2023
Phát hành androidx.compose.material:material-*:1.4.0-rc01
mà không có thay đổi nào. Phiên bản 1.4.0-rc01 bao gồm các thay đổi sau.
Phiên bản 1.4.0-beta02
Ngày 22 tháng 2 năm 2023
Phát hành androidx.compose.material:material-*:1.4.0-beta02
. Phiên bản 1.4.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Tích hợp các thay đổi về Swipeable API trong
BottomSheetScaffold
. Tham sốconfirmStateChange
củaBottomSheetState
đã được đổi tên thànhconfirmValueChange
.progress
hiện được hiển thị dưới dạng giá trị float.animateTo
vàsnapTo
là nội bộ. Thay vào đó, hãy sử dụngexpand()
vàcollapse()
. Xoádirection
vàoverflow
.offset
được thay thế bằngrequireOffset()
. (I323b4)
Sửa lỗi
- Xoá vai trò ngữ nghĩa khỏi các nền tảng có thể nhấp và chọn, những thành phần đã cập nhật (sử dụng các vai trò đó để đặt vai trò bằng modifier.semantics) (Ibb4ba)
- Cập nhật nhỏ cho các biểu tượng Material mở rộng, điều chỉnh các biểu tượng
desktop_mac
,directions
vàkitchen
được tô màu. (I65f5e)
Phiên bản 1.4.0-beta01
Ngày 8 tháng 2 năm 2023
Phát hành androidx.compose.material:material-*:1.4.0-beta01
. Phiên bản 1.4.0-beta01 bao gồm các thay đổi sau.
Các thay đổi về API
- Sửa lỗi
pullRefresh
không tiêu thụ tốc độ, khiến tình trạng cuộn quá mức xuất hiện. Đồng thời, thay đổi chữ ký API của lambdaonRelease
trongModifier.pullRefresh
để trả về một Độ chính xác đơn cho tốc độ đã tiêu thụ (I7db65, b/266874741) - Khôi phục phương thức getter
LocalMinimuTouchTargetEnforcement
của thuộc tính, đánh dấu phương thức này là không dùng nữa và chuyển hướng đếnLocalMinimumInteractiveComponentEnforcement
. (I60dd5)
Phiên bản 1.4.0-alpha05
Ngày 25 tháng 1 năm 2023
Phát hành androidx.compose.material:material-*:1.4.0-alpha05
. Phiên bản 1.4.0-alpha05 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề khi trạng thái
ModalBottomSheetLayout's HalfExpanded
được tính toán không chính xác và trang tính sẽ xuất hiện ở dạng nổi. (I8c615, b/265610459) - Khắc phục lỗi trong
ModalBottomSheetLayout
khiến trang tính gặp sự cố khi chuyển từ trạng thái ẩn sang trạng thái hiển thị trong một số trường hợp. (Ia9265, b/265444789)
Phiên bản 1.4.0-alpha04
Ngày 11 tháng 1 năm 2023
Phát hành androidx.compose.material:material-*:1.4.0-alpha04
. Phiên bản 1.4.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm thuộc tính ngữ nghĩa
IsContainer
trên Nền tảng. Thuộc tính này sẽ được dùng cho một thay đổi trong tương lai để xác định thứ tự truyền tải dựa trên ý nghĩa ngữ nghĩa của các phần tử, chẳng hạn như nền tảng. (I63379) - Đánh dấu hàm
snapTo
trong Drawer (Ngăn) là API không thử nghiệm. (Ib9c18, b/261425368) - Thêm tham số màu theo dõi cho các chỉ báo tiến trình vòng tròn cũng như tham số giới hạn nét cho cả chỉ báo tiến trình vòng tròn và tuyến tính. (Ie668c, b/216325962, b/222964817)
- Đổi tên
confirmStateChange
củaModalBottomSheetState
,ModalBottomSheetState.Saver
vàrememberModalBottomSheetState
thànhconfirmValueChange
. (Ib48d1) - Bổ sung tính chất rỗng cho kiểu dữ liệu trả về của các hàm ẩn không dùng nữa (Ibf7b0)
- Thêm
Modifier.minimumInteractiveComponentSize
. Bạn có thể sử dụng thuộc tính này để đặt trước kích thước tối thiểu là 48 dp để phân biệt các lượt tương tác chạm nếu phần tử này có kích thước nhỏ hơn. (I33f58, b/258495559) - Tích hợp các thay đổi về Swipeable API trong
ModalBottomSheetLayout
.animateTo
củaModalBottomSheetState
không còn nhận tham sốanimationSpec
nữa vàoffset
được hiển thị hiện có thể nhận giá trị rỗng. Sử dụngrequireOffset
để yêu cầuoffset
. (Ia2e79)
Sửa lỗi
- Trang tính của
ModalBottomSheetLayout
hiện có chiều rộng tối đa là 640 dp. (I71a4f, b/234927577) - Sửa lỗi
rememberPullRefreshState
không cập nhậtrefreshThreshold
vàrefreshingOffset
theo thời gian. (Ifed10, b/263159832) - Tiến trình cho các chỉ báo tiến trình hiện được giới hạn đúng với phạm vi dự kiến. (I8a7eb, b/262262727)
- Khi chưa nhận được bất kỳ liên kết nào,
ModalBottomSheetState
sẽ cập nhậtcurrentValue
mà không cần ảnh động khisnapTo
hoặcanimateTo
được gọi thay vì gửi một ngoại lệ. (I2c91b) - Khắc phục trạng thái bật khi triển khai
FilterChip
trên Material 2. (Id326a, b/261329817) - Sửa lỗi
ModalBottomSheetLayout
gặp sự cố nếu làHalfExpanded
khi xoay từ chiều dọc sang chiều ngang. Vui lòng đảm bảo bạn truyền tham số vào đúnginitialValue
, ví dụ: bằng cách kiểm tra cấu hình. (Ie8df7, b/182882364) - Sửa lỗi
ModalBottomSheetLayout
gặp sự cố nếu nội dung trang tính trống.ModalBottomSheetLayout
hiện cho phép hiển thị nội dung trang tính trống. Nếu còn trống, nội dung trang tính sẽ chỉ có trạng thái Ẩn. (Ic2288, b/200980998, b/216693030)
Vấn đề đã biết
- Khi cập nhật từ
androidx.compose.foundation:1.4.0-alpha03
lênandroidx.compose.foundation:1.4.0-alpha04
, bạn có thể gặp lỗijava.lang.NoSuchFieldError
. Đây là nơi vấn đề được báo cáo ban đầu. Chúng tôi đã gửi một bản sửa lỗi và bản sửa lỗi này sẽ có trong bản cập nhật Compose tiếp theo. Để giải quyết vấn đề này, hãy cập nhật thư việnandroidx.compose.material
vàandroidx.compose.material3
lên phiên bản mới nhất (1.1.0-alpha04) hoặc hạ cấpandroidx.compose.foundation
xuống 1.4.0-alpha03.
Phiên bản 1.4.0-alpha03
Ngày 7 tháng 12 năm 2022
Phát hành androidx.compose.material:material-*:1.4.0-alpha03
. Phiên bản 1.4.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm chú giải
@JvmDefaultWithCompatibility
(I8f206) - Tích hợp các thay đổi về API
Swipeable
trongModalDrawer
. Thay thếanimateTo
củaDrawerState
bằng phương thứcopen
vàclose
. Ngoài ra, thông số chênh lệch (offset) hiện có thể nhận giá trị rỗng. Hãy dùngrequireOffset
để yêu cầu thông số chênh lệch. (I3de9e) - Thêm Modifier API để truy vấn thông tin cuộn của đối tượng cấp trên. (I2ba9d, b/203141462)
- Dùng trong
Clickable
để trì hoãn đúng cách thao tác tương tác nhấn, khi các cử chỉ có thể trở thành sự kiện cuộn. - Sửa lỗi khiến
Clickables
không trì hoãn đúng cách các hiệu ứng gợn sóng khi được dùng bên trong mộtScrollable ViewGroup
. - Cập nhật các Ngăn và Trang tính để trì hoãn đúng cách thao tác nhấn trong trường hợp các cử chỉ có thể trở thành sự kiện cuộn.
Sửa lỗi
- Khắc phục lỗi khiến
PullRefreshIndicator
có thể gặp sự cố sau khi gọionRefresh
, nếu trạng thái làm mới không được đổi thành true. (Ie2416, b/248274004)
Thông tin cập nhật về phần phụ thuộc
- Giờ đây, giao diện người dùng Compose và Compose Material phụ thuộc vào Lifecycle 2.5.1. (I05ab0, b/258038814)
Phiên bản 1.4.0-alpha02
Ngày 9 tháng 11 năm 2022
Phát hành androidx.compose.material:material-*:1.4.0-alpha02
. Phiên bản 1.4.0-alpha02 bao gồm các thay đổi sau.
Các thay đổi về API
awaitFirstDown
vàwaitForUpOrCancellation
hiện chấp nhậnPointerEventPass
để linh hoạt hơn. (I7579a, b/212091796)- Thêm tham số
minLines
vào Text (Văn bản) material và material3,TextField
vàOutlinedTextField
giúp đặt chiều cao tối thiểu của thành phần theo số lượng dòng (I4af1d) - Thêm tham số
minLines
vàoBasicTex
t vàBasicTextField
. Nhờ đó có thể đặt chiều cao tối thiểu của các thành phần kết hợp (composable) này theo số dòng (I24294, b/122476634)
Phiên bản 1.4.0-alpha01
Ngày 24 tháng 10 năm 2022
Phát hành androidx.compose.material:material-*:1.4.0-alpha01
. Phiên bản 1.4.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm một phương thức mới là
awaitEachGesture()
cho trình phát hiện cử chỉ. Phương thức này hoạt động tương tự nhưforEachGesture()
, nhưng các vòng lặp trên cử chỉ hoạt động hoàn toàn trongAwaitPointerEventScope
, do đó, các sự kiện không bị mất giữa các vòng lặp. - Ngừng sử dụng
forEachGesture()
và thay bằngawaitEachGesture()
vì phương thức này khiến sự kiện bị mất giữa các cử chỉ. (Iffc3f, b/251260206)
Phiên bản 1.3
Phiên bản 1.3.1
Ngày 9 tháng 11 năm 2022
Phát hành androidx.compose.material:material-*:1.3.1
. Phiên bản 1.3.1 bao gồm các thay đổi sau.
Phiên bản 1.3.0
Ngày 24 tháng 10 năm 2022
Phát hành androidx.compose.material:material-*: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
Sự thay đổi có thể gây lỗi về hành vi
- Độ cao tối đa được hỗ trợ cho hộp thoại và cửa sổ bật lên đã giảm xuống còn 8 dp.
Các thay đổi về API
- Thêm thành phần Pull-To-Refresh (kéo để làm mới) vào Compose (I29168).
- Thay đổi tên tham số từ các giá trị thành giá trị trong RangeSlider (I3b79a).
Phiên bản 1.3.0-rc01
Ngày 5 tháng 10 năm 2022
Phát hành androidx.compose.material:material-*: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-beta03
Ngày 21 tháng 9 năm 2022
Phát hành androidx.compose.material:material-*:1.3.0-beta03
. Phiên bản 1.3.0-beta03 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm thành phần Pull-To-Refresh (kéo để làm mới) vào Compose (I29168)
Phiên bản 1.3.0-beta02
Ngày 7 tháng 9 năm 2022
Phát hành androidx.compose.material:material-*:1.3.0-beta02
. Phiên bản 1.3.0-beta02 bao gồm các thay đổi sau.
Không có thay đổi nào kể từ phiên bản 1.3.0-beta01
Phiên bản 1.3.0-beta01
Ngày 24 tháng 8 năm 2022
Phát hành androidx.compose.material:material-*:1.3.0-beta01
. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.
Sự thay đổi có thể gây lỗi về hành vi
Độ nâng tối đa được hỗ trợ cho hộp thoại và cửa sổ bật lên đã giảm xuống còn 8 dp.
Độ cao tối đa được hỗ trợ cho hộp thoại và cửa sổ bật lên trong Compose đã giảm từ 30 dp xuống còn 8 dp. Sự thay đổi này ảnh hưởng đến cả hộp thoại và cửa sổ bật lên tuỳ chỉnh trên giao diện người dùng cũng như Material. Sự thay đổi này được thực hiện để giảm thiểu lỗi hỗ trợ tiếp cận trên các phiên bản Android thấp hơn S, cũng như để đảm bảo rằng các dịch vụ hỗ trợ tiếp cận trong những cửa sổ đó có thể tương tác với nội dung bên trong hộp thoại hoặc cửa sổ bật lên.
Bạn sẽ chỉ chịu ảnh hưởng của sự thay đổi này nếu đang tạo hộp thoại hoặc cửa sổ bật lên tuỳ chỉnh với độ nâng được đặt ở mức lớn hơn 8 dp. Hãy cân nhắc giảm độ cao của hộp thoại hoặc cửa sổ bật lên. Nếu bạn cần chọn không sử dụng hành vi mới này, thì hãy cân nhắc tạo hộp thoại hoặc cửa sổ bật lên của riêng bạn với độ cao mong muốn. Bạn không nên làm vậy vì khả năng hỗ trợ tiếp cận có thể bị ảnh hưởng tiêu cực. Nhà phát triển cần đảm bảo rằng các dịch vụ hỗ trợ tiếp cận có thể đọc và tương tác với phần dưới cùng của hộp thoại hoặc cửa sổ bật lên.
Phiên bản 1.3.0-alpha03
Ngày 10 tháng 8 năm 2022
Phát hành androidx.compose.material:material-*:1.3.0-alpha03
. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.
Phiên bản 1.3.0-alpha02
Ngày 27 tháng 7 năm 2022
Phát hành androidx.compose.material:material-*:1.3.0-alpha02
. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.
Đóng góp bên ngoài
- Khắc phục vấn đề
AnimatedVisibility
vớiFloatingActionButton
trong Scaffold (I3a0ae, b/224005027)
Phiên bản 1.3.0-alpha01
Ngày 29 tháng 6 năm 2022
Phát hành androidx.compose.material:material-*:1.3.0-alpha01
. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.
Các thay đổi về API
- Thay đổi tên tham số từ các giá trị thành giá trị trong
RangeSlider
(I3b79a)
Sửa lỗi
- Cập nhật mẫu huy hiệu để cung cấp nội dung mô tả nội dung có ý nghĩa hơn. (I10b9d)
Phiên bản 1.2
Phiên bản 1.2.1
Ngày 10 tháng 8 năm 2022
Phát hành androidx.compose.material:material-*:1.2.1
. Phiên bản 1.2.1 bao gồm các thay đổi sau.
Phiên bản 1.2.0
Ngày 27 tháng 7 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0
. Phiên bản 1.2.0 bao gồm các thay đổi sau.
Phiên bản 1.2.0-rc03
Ngày 29 tháng 6 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-rc03
. Phiên bản 1.2.0-rc03 bao gồm các thay đổi sau.
- Không có thay đổi nào kể từ phiên bản 1.2.0-rc02.
Phiên bản 1.2.0-rc02
Ngày 22 tháng 6 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-rc02
. Phiên bản 1.2.0-rc02 bao gồm các thay đổi sau.
Phiên bản 1.2.0-rc01
Ngày 15 tháng 6 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-rc01
. Phiên bản 1.2.0-rc01 bao gồm bao gồm các thay đổi sau.
Các thay đổi về API
- Các giao diện trong thư viện Compose hiện được xây dựng bằng phương thức giao diện mặc định jdk8 (I5bcf1)
Sửa lỗi
- Cập nhật huy hiệu có thẻ biểu tượng ở đầu để gắn huy hiệu vào nhãn thay vì biểu tượng. (I90993)
Phiên bản 1.2.0-beta03
Ngày 2 tháng 6 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-beta03
. Phiên bản 1.2.0-beta03 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi khi
BottomSheetScaffold
vẽ đè lên bóng của thanh ứng dụng.BottomSheetScaffold
hiện cũng xem xét trạng thái của trang tính khi đặt Thanh thông báo nhanh: ở trạng thái thu gọn, Thanh thông báo nhanh sẽ được đặt phía trên trang tính và FAB; còn ở trạng thái mở rộng, Thanh thông báo nhanh nằm ở cuối trang tính. (Ia80b5, b/187771422)
Phiên bản 1.2.0-beta02
Ngày 18 tháng 5 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-beta02
. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.
Phiên bản 1.2.0-beta01
Ngày 11 tháng 5 năm 2022
Phát hành androidx.compose.material:material-*: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
- Đây là bản phát hành beta 1.2 đầu tiên!
Các thay đổi về API
- Đã đổi tên thành phần kết hợp
TextFieldDefaults.BorderStroke
để vẽ một nét đường viền trongOutlinedTextField
thànhTextFieldDefaults.BorderBox
. (I5f295)
Phiên bản 1.2.0-alpha08
Ngày 20 tháng 4 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-alpha08
. Phiên bản 1.2.0-alpha08 bao gồm các thay đổi sau.
Các thay đổi về API
- Mức sử dụng một phần (giảm/không có vị trí) trong
PointerInputChange
sẽ không được dùng nữa. Bạn có thể dùngconsume()
để thay đổi hoàn toàn. Bạn có thể sử dụngisConsumed
để xác định xem ai đó đã từng thực hiện thay đổi trước đây hay chưa. - Giờ đây,
PointerInputChange::copy()
luôn tạo một bản sao nông. Điều này có nghĩa là các bản sao củaPointerInputChange
sẽ được sử dụng sau khi một trong các bản sao được sử dụng. Nếu bạn muốn tạo mộtPointerInputChange
không liên kết, hãy dùng hàm khởi tạo. (Ie6be4, b/225669674)
Phiên bản 1.2.0-alpha07
Ngày 6 tháng 4 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-alpha07
. Phiên bản 1.2.0-alpha07 bao gồm các thay đổi sau.
Phiên bản 1.2.0-alpha06
Ngày 23 tháng 3 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-alpha06
. Phiên bản 1.2.0-alpha06 bao gồm các thay đổi sau.
Các thay đổi về API
- Cập nhật Card API có thể nhấp để tuân theo các thay đổi tại Surface API (I56bcb)
- Cập nhật Material 2 Surface API, bổ sung các hàm nạp chồng cho những Khu vực (Surface) có thể chọn và bật/tắt. (Ifcca5)
Phiên bản 1.2.0-alpha05
Ngày 9 tháng 3 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-alpha05
. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.
Các thay đổi về API
LazyVerticalGrid
vàLazyHorizontalGrid
hiện đang ổn định. (I307c0)LazyVerticalGrid/LazyHorizontalGrid
và tất cả API có liên quan đã được di chuyển vào gói con .grid. Vui lòng cập nhật các mục nhập của bạn từ androidx.compose.foundation.lazy thành androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)- Huỷ thay đổi trước đó (chỉ dựa vào Thành phần hiển thị cho
WindowInsetsControllerCompat
) và một lần nữa, bạn cần phải sử dụng Cửa sổ để quản lý một số cờ trong cửa sổ. Ngừng sử dụngViewCompat.getWindowInsetsController
và thay vào đó làWindowCompat.getInsetsController
để đảm bảo sử dụng đúng Cửa sổ (chẳng hạn như khi Chế độ xem nằm trong một hộp thoại). (I660ae, b/219572936) - Văn bản:
includeFontPadding
hiện bị tắt theo mặc định. Chúng tôi đã xử lý các sự cố cắt từ doincludeFontPadding=false
và hiện tượng cắt từ sẽ không nảy sinh trong các tập lệnh có phông chữ cao. (I31c84, b/171394808) - Thêm API
LazyVerticalGrid
mới để xác định kích thước trục chéo (I17723)
Phiên bản 1.2.0-alpha04
Ngày 23 tháng 2 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-alpha04
. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
Add support for filter chips
(I39a6e, b/192585545)- Thêm
TextFieldDecorationBox
vàOutlinedTextFieldDecorationBox
. Sử dụng các mã này cùng vớiBasicTextField
giúp bạn tạo trường văn bản tuỳ chỉnh dựa trên trường văn bản Material Design nhưng có thêm nhiều lựa chọn để tuỳ chỉnh. - Cung cấp phương thức điều chỉnh khoảng đệm ngang và dọc tại các trường văn bản. (I8c9f1, b/203764564, b/191543915, b/189971673, b/183136600, b/179882597, b/168003617)
Thêm
ComposableTarget
,ComposableTargetMarker
vàComposableOpenTarget
cho phép báo cáo thời gian biên dịch khi gọi một hàm có khả năng kết hợp nhắm đến một trình áp dụng mà nó không được thiết kế để sử dụng.Trong hầu hết các trường hợp, trình bổ trợ trình biên dịch Compose có thể suy ra các chú giải. Do đó, các chú giải này hiếm khi được sử dụng trực tiếp. Có những trường hợp không thể dự đoán được như việc tạo và sử dụng các hàm trừu tượng có khả năng kết hợp, trình áp dụng tuỳ chỉnh (chẳng hạn như phương thức giao diện), các trường hoặc biến toàn cục là các biểu thức lambda có khả năng kết hợp (biến và tham số cục bộ được suy đoán), hoặc khi sử dụng
ComposeNode
hoặc hàm có khả năng kết hợp liên quan.Đối với các trình áp dụng tuỳ chỉnh, những hàm có khả năng kết hợp gọi
ComposeNode
hoặcReusableComposeNode
cần thêm chú giảiCompoableTarget
cho hàm đó và mọi loại tham số lambda có khả năng kết hợp. Tuy nhiên, bạn nên tạo chú giải được chú thích bằngComposableTargetMarker
, sau đó trực tiếp sử dụng chú giải được đánh dấu thay choComposableTarget
. Một chú giải của thành phần kết hợp được đánh dấu bằngComposableTargetMarker
sẽ tương đương vớiComposbleTarget
có tên đủ điều kiện của lớp thuộc tính dưới dạng tham số của trình áp dụng. Để biết ví dụ về cách sử dụngComposableTargetMarker
, vui lòng xemanroidx.compose.ui.UiComposable
. (I38f11)
Phiên bản 1.2.0-alpha03
Ngày 9 tháng 2 năm 2022
Phát hành androidx.compose.material:material-*:1.2.0-alpha03
. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.
Sửa lỗi
- Thêm ví dụ về nhóm chip (I97080, b/192585545)
Phiên bản 1.2.0-alpha02
Ngày 26 tháng 1 năm 2022
androidx.compose.material:material-*:1.2.0-alpha02
đã được phát hành. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm
NonRestartableComposable
vào các phương thức đang làm quá tải những phương thức hiện có mà không cần logic phức tạp. Điều này giảm bớt các bước kiểm tra ghi nhớ do trình biên dịch tạo ra (các bước cân bằng) cho mọi tham số lặp lại ở hàm bên trong được gọi. (I90490) - Thêm tính năng hỗ trợ cho khối hành động (I07100, b/192585545)
Phiên bản 1.2.0-alpha01
Ngày 12 tháng 1 năm 2022
androidx.compose.material:material-*:1.2.0-alpha01
đã được phát hành. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.
Thông tin cập nhật về phần phụ thuộc
- Nay phụ thuộc vào Kotlin
1.6.10
.
Đóng góp bên ngoài
ModalBottomSheetState
hiện có một cờisSkipHalfExpanded
. Bạn có thể đặt trạng thái này từ đầu thông qua hàm khởi tạo hoặc cập nhật lại sau bằng cách đặt thuộc tínhisSkipHalfExpanded
củaModalBottomSheetState
thànhtrue
. Khi bạn cập nhật giá trị củaisSkipHalfExpanded
, trang tính sẽ được kết hợp lại. (I18b86, b/186669820)
Phiên bản 1.1
Phiên bản 1.1.1
Ngày 23 tháng 2 năm 2022
androidx.compose.material:material-*:1.1.1
đã được phát hành. Phiên bản 1.1.1 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa
NullPointerException
tạiandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Khắc phục sự cố do nội dung trong bảng nhớ tạm gây ra khi đọc từ bảng nhớ tạm trên Android. (I06020, b/197769306)
- Sửa RTL ở
LazyVerticalGrid
(aosp/1931080, b/207510535)
Phiên bản 1.1.0
Ngày 9 tháng 2 năm 2022
Phát hành androidx.compose.material:material-*: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
- Hỗ trợ ổn định cho hiệu ứng Cuộn quá mức của Android 12
- Những cải tiến đối với kích thước đích chạm
- Lưu ý rằng, đối với phiên bản Compose 1.0, các thành phần Material sẽ mở rộng không gian bố cục để đáp ứng các nguyên tắc hỗ trợ tiếp cận của Material cho kích thước đích chạm. Ví dụ: đích chạm Button (Nút) sẽ mở rộng tới kích thước tối thiểu 48 x 48 dp, ngay cả khi bạn đặt kích thước nhỏ hơn cho Nút. Nhờ vậy, Compose Material được điều chỉnh phù hợp với hành vi tương ứng của các Thành phần Material Design, tạo ra hành vi nhất quán khi kết hợp Khung hiển thị và Compose. Sự thay đổi này cũng đảm bảo rằng khi bạn tạo giao diện người dùng bằng các thành phần Compose Material, các yêu cầu tối thiểu về hỗ trợ tiếp cận đích chạm sẽ được đáp ứng.
- Hỗ trợ ổn định cho Dải điều hướng
- Đưa một số API thử nghiệm trước đây vào phiên bản chính thức
- Hỗ trợ các phiên bản Kotlin mới hơn
Phiên bản 1.1.0-rc03
Ngày 26 tháng 1 năm 2022
androidx.compose.material:material-*:1.1.0-rc03
đã được phát hành. Phiên bản 1.1.0-rc03 bao gồm các thay đổi sau.
Thay đổi về hành vi
Lưu ý rằng, đối với phiên bản Compose 1.0, các thành phần Material sẽ mở rộng không gian bố cục để đáp ứng các nguyên tắc hỗ trợ tiếp cận Material kích thước đích chạm. Ví dụ: đích chạm Button (Nút) sẽ mở rộng tới kích thước tối thiểu 48 x 48 dp, ngay cả khi bạn đặt kích thước nhỏ hơn cho Nút. Nhờ vậy, Compose Material được điều chỉnh phù hợp với hành vi tương ứng của các Thành phần Material Design, tạo ra hành vi nhất quán khi kết hợp Khung hiển thị và Compose. Sự thay đổi này cũng đảm bảo rằng khi bạn tạo giao diện người dùng bằng các thành phần Compose Material, các yêu cầu tối thiểu về hỗ trợ tiếp cận đích chạm sẽ được đáp ứng.
Sửa lỗi
- Thêm một số thông tin gỡ lỗi tốt hơn cho trình kiểm tra bố cục khi tiến hành kiểm tra các công cụ sửa đổi đích chạm tối thiểu. (aosp/1955036)
Phiên bản 1.1.0-rc01
Ngày 15 tháng 12 năm 2021
androidx.compose.material:material-*:1.1.0-rc01
đã được phát hành. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Chỉnh sửa bán kính góc được áp dụng cho các
Checkbox
(I38b03, b/175198975, b/202309440)
Phiên bản 1.1.0-beta04
Ngày 1 tháng 12 năm 2021
androidx.compose.material:material-*:1.1.0-beta04
đã được phát hành. Phiên bản 1.1.0-beta04 bao gồm các thay đổi sau.
Tính năng mới
- Cập nhật để tương thích với
1.6.0
Kotlin
Phiên bản 1.1.0-beta03
Ngày 17 tháng 11 năm 2021
androidx.compose.material:material-*:1.1.0-beta03
đã được phát hành. Phiên bản 1.1.0-beta03 bao gồm các thay đổi sau.
Phiên bản 1.1.0-beta02
Ngày 3 tháng 11 năm 2021
androidx.compose.material:material-*:1.1.0-beta02
đã được phát hành. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây, hiệu ứng gợn sóng và các chỉ báo khác sẽ chỉ bị trễ nếu nằm trong vùng chứa Modifier.scrollable(), thay vì luôn bị trì hoãn khi một sự kiện xảy ra. (Ibefe0, b/203141462)
Phiên bản 1.1.0-beta01
Ngày 27 tháng 10 năm 2021
androidx.compose.material:material-*:1.1.0-beta01
đã được phát hành. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Tính năng gợn sóng hiện hỗ trợ trạng thái di chuột và lấy tiêu điểm. Do đó, thao tác di chuột / tập trung vào một thành phần như Nút giờ sẽ hiển thị lớp phủ trạng thái chính xác.
Phiên bản 1.1.0-alpha06
Ngày 13 tháng 10 năm 2021
androidx.compose.material:material-*:1.1.0-alpha06
đã được phát hành. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm phương thức nạp chồng không có thành phần con cho Bố cục (Layout) với hiệu quả được cải thiện (Ib0d9a)
- Cách triển khai
ExposedDropdownMenu
dựa trênExposedDropdownMenuBox
cùngTextField
vàDropdownMenu
bên trong (If60b2) - Thêm
dismissOnOutsideClick
vàoPopupProperties
, thay thế chodismissOnClickOutside
không dùng nữa. Thuộc tính mới nhận được vị trí nhấp chuột và giới hạn liên kết, cho phép bạn kiểm soát tốt hơn việc có nên gọi onDismissRequest hay không. Ví dụ: thuộc tính này có thể hữu ích trong việc tránh loại bỏ thẻ ký tự liên kết (anchor) mỗi khi thẻ được nhấn.updateAndroidWindowManagerFlags
đã được thêm vàoPopupProperties
, cung cấp khả năng kiểm soát ở cấp độ thấp đối với các cờ do cửa sổ bật lên chuyển đến trình Android WindowManager. Tham số của biểu thức lambda sẽ là những cờ được tính toán từ giá trị PopupProperties dẫn đến cờ WindowManager: ví dụ như có thể làm tâm điểm (focusable). Kết quả của biểu thức lambda sẽ là những lá cờ cuối cùng được chuyển đến trình Android WindowManager. Theo mặc định, updateAndroidWindowManagerFlags sẽ không thay đổi những lá cờ đã được tính toán từ các thông số. Bạn nên sử dụng API này thận trọng, chỉ trong trường hợp cửa sổ bật lên có các yêu cầu về hành vi rất cụ thể. (I6e9f9)
Phiên bản 1.1.0-alpha05
Ngày 29 tháng 9 năm 2021
androidx.compose.material:material-*:1.1.0-alpha05
đã được phát hành. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm kích thước đích chạm tối thiểu cho các thành phần Material không có đích chạm có thể truy cập. Vì hoạt động thêm không gian bổ sung xung quanh các thành phần để đảm bảo chúng có đích chạm đủ lớn, hoạt động này có thể thay đổi các giao diện người dùng hiện giả định kích thước của các thành phần này là kích thước hình ảnh của chúng mà không tính đến kích thước của đích chạm. Bạn có thể dùng thành phần
LocalMinimumTouchTargetEnforcement
thử nghiệm cục bộ để vô hiệu hoá hành vi này trên một hệ thống phân cấp, nhưng đây chỉ là phương thức giải quyết tạm thời khi cập nhật giao diện người dùng hiện có để phù hợp với kích thước tối thiểu mới. (I9b966, b/149691127, b/171509422) - Đã thêm giao diện TextFieldColorsWithIcons thử nghiệm, mở rộng phần TextFieldColors để cung cấp InteractionSource đến leadingColor và trailingColor. Thao tác này cho phép sửa đổi giao diện của TextField theo trạng thái tiêu điểm. (I66923, b/198402662)
Phiên bản 1.1.0-alpha04
Ngày 15 tháng 9 năm 2021
androidx.compose.material:material-*:1.1.0-alpha04
đã được phát hành. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Ngừng sử dụng
performGesture
vàGestureScope
, thay thế bằngperformTouchInput
vàTouchInjectionScope
. (Ia5f3f, b/190493367) - Thêm
touchBoundsInRoot
vàoSemanticsNode
có kích thước đích chạm tối thiểu để nhà phát triển có thể đảm bảo rằng đích chạm đáp ứng các tiêu chí tối thiểu về khả năng hỗ trợ tiếp cận. (I2e14b, b/197751214)
Sửa lỗi
- Cho phép cắt đoạn video nhằm mở rộng giới hạn của đích chạm bên ngoài khu vực của đoạn video để có mục đích chạm tối thiểu. (I43e10, b/171509422)
- Cập nhật thành phần kết hợp
Divider
để tuân thủDp.Hairline
đối với tham số độ dày giúp hỗ trợ vẽ một trình chia pixel duy nhất, bất kể mật độ hiển thị là bao nhiêu. (I16ffb, b/196840810)
Phiên bản 1.1.0-alpha03
Ngày 1 tháng 9 năm 2021
androidx.compose.material:material-*:1.1.0-alpha03
đã được phát hành. 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
1.1.0-alpha03
của Compose để phụ thuộc vào Kotlin1.5.30
. (I74545)
Các thay đổi về API
- Thêm phương thức kiểm thử để lấy giới hạn được cắt đoạn. (I6b28e)
- Thêm kích thước đích chạm tối thiểu vào ViewConfiguration để sử dụng trong ngữ nghĩa và phương thức nhập con trỏ, giúp đảm bảo khả năng hỗ trợ tiếp cận. (Ie861c)
Phiên bản 1.1.0-alpha02
Ngày 18 tháng 8 năm 2021
androidx.compose.material:material-*:1.1.0-alpha02
đã được phát hành. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.
Đóng góp bên ngoài
- Khắc phục hoạt động của SwipeableState trong trường hợp độ lệch vuốt nằm trong lỗi làm tròn của điểm neo. (I03d39, b/191993377)
Phiên bản 1.1.0-alpha01
Ngày 4 tháng 8 năm 2021
androidx.compose.material:material-*:1.1.0-alpha01
đã được phát hành. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.
Các thay đổi về API
- Cập nhật phương thức
DrawScope#drawImage
sử dụng các nguồn và nguồn đích đến để sử dụng thông số FilterQuality không bắt buộc. Cách này hữu ích cho các hình ảnh pixel dùng để tạo pixel khi phóng to cho các hình ảnh dựa trên pixel. Cập nhật thành phần kết hợp BitmapPainter + Image (BitmapPainter + Hình ảnh) để sử dụng tham số FilterQuality tuỳ chọn (Ie4fb0, b/180311607) - Đổi tên BadgeBox thành BadgedBox, thay đổi các tham số để chấp nhận thành phần kết hợp Huy hiệu (Badge). Thêm thành phần Huy hiệu là nội dung huy hiệu thông thường đối với một BadgedBox. (I639c6)
- Thêm thành phần NavigationRail, xem tài liệu và ví dụ để biết thông tin sử dụng (I8de77)
Sửa lỗi
- Thêm mẫu NavigationRail được căn chỉnh dưới cùng và bản minh hoạ ứng dụng Danh mục. (I3cffc)
- Các hộp thoại hiện tuân theo hành vi định kích thước nền tảng. Đặt usePlatformDefaultWidth thành false để ghi đè hành vi này. (Iffaed, b/192682388)
- Thêm bản minh hoạ navigation-rail vào ứng dụng danh mục. (I04960)
- Thêm bản minh hoạ huy hiệu vào ứng dụng danh mục. (If285d)
Phiên bản 1.0
Phiên bản 1.0.5
Ngày 3 tháng 11 năm 2021
androidx.compose.material:material-*:1.0.5
đã được phát hành. Phiên bản 1.0.5 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố theo dõi các thực thể derivedStateOf. (aosp/1792247)
Phiên bản 1.0.4
Ngày 13 tháng 10 năm 2021
androidx.compose.material:material-*:1.0.4
đã được phát hành. Phiên bản 1.0.4 bao gồm các thay đổi sau.
Thông tin cập nhật về phần phụ thuộc
- Cập nhật để phụ thuộc vào Kotlin
1.5.31
Phiên bản 1.0.3
Ngày 29 tháng 9 năm 2021
androidx.compose.material:material-*:1.0.3
đã được phát hành. Phiên bản 1.0.3 bao gồm các thay đổi sau.
Thông tin cập nhật về phần phụ thuộc
- Cập nhật để phụ thuộc vào Kotlin
1.5.30
Phiên bản 1.0.2
Ngày 1 tháng 9 năm 2021
Phát hành androidx.compose.material:material-*:1.0.2
. Phiên bản 1.0.2 bao gồm các thay đổi sau.
Cập nhật để hỗ trợ bản phát hành Compose 1.0.2
. Compose 1.0.2
vẫn tương thích với Kotlin 1.5.21
.
Phiên bản 1.0.1
Ngày 4 tháng 8 năm 2021
androidx.compose.material:material-*:1.0.1
đã được phát hành. Phiên bản 1.0.1 bao gồm các thay đổi sau.
Thông tin cập nhật về phần phụ thuộc
- Cập nhật để phụ thuộc vào Kotlin
1.5.21
.
Phiên bản 1.0.0
Ngày 28 tháng 7 năm 2021
androidx.compose.material:material-*:1.0.0
đã được 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
Đây là bản phát hành chính thức đầu tiên của ứng dụng Compose. Vui lòng xem blog về Bản phát hành Compose chính thức để biết thêm thông tin chi tiết!
Lỗi đã biết
Nếu đang sử dụng Android Studio Bumblebee Canary 4 hoặc AGP
7.1.0-alpha04
/7.1.0-alpha05
, bạn có thể gặp sự cố sau đây:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Để khắc phục, hãy tạm thời tăng giá trị minSdkVersion lên 24 trở lên trong tệp
build.gradle
. Sự cố này sẽ được khắc phục trong phiên bản tiếp theo của Android Studio Bumblebee và AGP7.1
. (b/194289155)
Phiên bản 1.0.0-rc02
Ngày 14 tháng 7 năm 2021
androidx.compose.material:material-*:1.0.0-rc02
đã được phát hành. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.
Sửa lỗi
- Các hộp thoại hiện tuân theo hành vi định kích thước nền tảng. Đặt
usePlatformDefaultWidth
thành false để ghi đè hành vi này. (Iffaed, b/192682388)
Phiên bản 1.0.0-rc01
Ngày 1 tháng 7 năm 2021
androidx.compose.material:material-*:1.0.0-rc01
đã được phát hành. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm thành phần
BadgeBox
, hãy xem tài liệu và ví dụ để biết thông tin sử dụng (I5e284) - Đổi tên
useDefaultMaxWidth
trongPopupProperties
thànhusePlatformDefaultWidth
. (I05710) - Hộp thoại hiện có thể áp dụng với toàn bộ chiều rộng của màn hình. (I83929, b/190810877)
- Thêm nội dung triển khai thanh trượt Phạm vi thử nghiệm (I2f4b3)
Sửa lỗi
- Để phù hợp với thông số kỹ thuật OutlinedTextField của Material Design với thông tin nhập không hợp lệ, hệ thống ngừng sử dụng màu lỗi cho nhãn khi nhãn đang được dùng làm phần giữ chỗ. Phần sau đúng khi không có văn bản nhập trong trường văn bản và trường văn bản không có tiêu điểm. Với sự thay đổi đó, ý nghĩa của tham số
error:Boolean
trong hàmTextFieldColors.labelColor()
cũng thay đổi: giờ đây, nếu nhãn đang được dùng làm phần giữ chỗ, hàm này sẽ trả vềfalse
ngay cả khi giá trị nhập không hợp lệ. (I45f78)
Phiên bản 1.0.0-beta09
Ngày 16 tháng 6 năm 2021
androidx.compose.material:material-*:1.0.0-beta09
đã được phát hành. Phiên bản 1.0.0-beta09 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm tham số Hình dạng vào OutlinedTextField để có thể tuỳ chỉnh hình dạng đường viền (I8f39e, b/181322957)
- TextOverflow được thay đổi thành lớp cùng dòng. (I433af)
Sửa lỗi
- Scrim trong BottomDrawer, BackdropScaffold và ModalBottomSheetLayout sẽ biến mất, rồi Color.Unspecified được truyền (I2d899, b/182063309)
Bổ sung quy tắc hồ sơ
Bản phát hành này bổ sung các quy tắc hồ sơ cho những mô-đun Compose sau (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Quy tắc hồ sơ là gì?
Quy tắc hồ sơ cho thư viện được chỉ định trong tệp văn bản
baseline-prof.txt
nằm trongsrc/main
hoặc thư mục tương đương. Tệp này chỉ định quy tắc trên mỗi dòng, trong đó quy tắc trong trường hợp này là mẫu để khớp với phương thức hoặc lớp trong thư viện. Cú pháp cho các quy tắc này là tập mẹ của định dạng hồ sơ ART mà con người có thể đọc được, được dùng khi sử dụngadb shell profman --dump-classes-and-methods ...
. Các quy tắc này dùng một trong hai biểu mẫu để nhắm mục tiêu vào phương thức hoặc lớp.Quy tắc phương thức sẽ có mẫu sau:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Và quy tắc lớp sẽ có mẫu sau:
<CLASS_DESCRIPTOR>
Ở đây,
<FLAGS>
là một hoặc nhiều ký tự trong số các ký tựH
,S
vàP
để cho biết có cần gắn cờ "Hot", "Startup" hoặc "Post Startup" cho phương thức này hay không.<CLASS_DESCRIPTOR>
là phần mô tả cho lớp chứa phương thức được nhắm mục tiêu. Ví dụ: lớpandroidx.compose.runtime.SlotTable
sẽ có phần mô tả làLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
là chữ ký của phương thức và bao gồm tên, loại thông số và loại dữ liệu trả về của phương thức. Ví dụ: phương thứcfun isPlaced(): Boolean
trênLayoutNode
có chữ kýisPlaced()Z
.Những mẫu này có thể có ký tự đại diện (
**
,*
và?
) để có một quy tắc duy nhất bao gồm nhiều lớp hoặc phương thức.
Những quy tắc này có chức năng gì?
Phương thức có cờ
H
cho biết rằng phương thức này là một phương thức "khởi động nóng" và phải được biên dịch trước.Phương thức có cờ
S
cho biết đây là phương thức được gọi khi khởi động và phải được biên dịch trước khi thực thi để tránh chi phí biên dịch và diễn giải phương thức này tại thời điểm khởi động.Phương thức có cờ
P
cho biết đây là phương thức được gọi sau khi khởi động.Một lớp có trong tệp này cho biết rằng lớp này được dùng trong khi khởi động và cần được phân bổ trước trong vùng nhớ khối xếp để tránh chi phí tải lớp.
Cơ chế này hoạt động như thế nào?
- Thư viện có thể xác định những quy tắc sẽ được đóng gói trong cấu phần phần mềm AAR. Tiếp đến, khi tệp APK được tạo chứa các cấu phần mềm nêu trên, các quy tắc này được hợp nhất với nhau và các quy tắc hợp nhất dùng để tạo ra một hồ sơ ART nhị phân nhỏ gọn dành riêng cho tệp APK. Sau đó, ART có thể tận dụng hồ sơ này khi tệp APK được cài đặt trên thiết bị để biên soạn trước một số ứng dụng cụ thể nhằm cải thiện hiệu suất của ứng dụng, đặc biệt là lần chạy đầu tiên. Cần lưu ý rằng việc này sẽ không ảnh hưởng đến các ứng dụng có thể gỡ lỗi.
Phiên bản 1.0.0-beta08
Ngày 2 tháng 6 năm 2021
androidx.compose.material:material-*:1.0.0-beta08
đã được phát hành. Phiên bản 1.0.0-beta08 bao gồm các thay đổi sau.
Tính năng mới
Thay đổi API vi phạm hành vi
- HÀNH VI VI PHẠM: Thẻ hiện sử dụng các lượt nhấp, khiến các lượt nhấp được thêm vào qua
Card(Modifier.clickable)
không hoạt động. Vui lòng sử dụng tuỳ chọn nạp chồng thử nghiệm mới của Thẻ chấp nhận onClick. (Ia8744, b/183775620)- Thêm phương thức nạp chồng Thẻ mới cho phép xử lý các lượt nhấp cũng như các chức năng có thể nhấp khác: chỉ báo, interactionSource, bật/tắt. Không dùng được Thẻ không thể nhấp thông thường với
Modifier.clickable
vì Thẻ này sẽ không cắt đoạn chỉ báo hiệu ứng gợn sóng trong những trường hợp đó.
- Thêm phương thức nạp chồng Thẻ mới cho phép xử lý các lượt nhấp cũng như các chức năng có thể nhấp khác: chỉ báo, interactionSource, bật/tắt. Không dùng được Thẻ không thể nhấp thông thường với
- HÀNH VI VI PHẠM: Khu vực hiện sử dụng các lượt nhấp, khiến các lượt nhấp được thêm vào qua
Surface(Modifier.clickable)
không hoạt động. Vui lòng sử dụng tuỳ chọn nạp chồng thử nghiệm mới của Khu vực chấp nhận onClick. (I73e6c, b/183775620)- Thêm phương thức nạp chồng Khu vực mới cho phép xử lý các lượt nhấp cũng như các chức năng có thể nhấp khác: chỉ báo, interactionSource, bật/tắt. Không dùng được Khu vực không thể nhấp thông thường với
Modifier.clickable
vì Khu vực này sẽ không cắt đoạn chỉ báo hiệu ứng gợn sóng trong những trường hợp đó.
- Thêm phương thức nạp chồng Khu vực mới cho phép xử lý các lượt nhấp cũng như các chức năng có thể nhấp khác: chỉ báo, interactionSource, bật/tắt. Không dùng được Khu vực không thể nhấp thông thường với
Các thay đổi về API
FabPosition
đã được chuyển đổi thành lớp cùng dòng từ enum để hỗ trợ hoạt động mở rộng tiềm năng trong tương lai (I030fb)- Cách sử dụng enum tái cấu trúc cho lớp cùng dòng để tránh gặp vấn đề với những câu lệnh when đầy đủ khi các giá trị enum mới được thêm. (I2b5eb)
- Thêm thời gian chờ nhấn vào nút có thể nhấp hoặc bật/tắt để ngăn hiển thị gợn sóng trong khi cuộn/kéo (Ia2704, b/168524931)
- Thuộc tính ngữ nghĩa của ContentDescription và Text (Văn bản) không còn là giá trị đơn lẻ nữa mà là danh sách. Điều này cho phép hợp nhất chúng nguyên vẹn thay vì thực hiện phép nối. Đồng thời cung cấp các API kiểm thử tốt hơn để tận dụng những thay đổi này (Ica6bf, b/184825850)
- Ngừng sử dụng
Modifier.focusModifier()
và thay bằngModifier.focusTarget()
(I6c860) - Thay thế enum
FocusState
bằng giao diệnFocusState
(Iccc1a, b/187055290) - Đã xoá
LocalRippleNativeRendering
, giờ đây, phương thức triển khai hiệu ứng gợn sóng với View-backed được hỗ trợ là ổn định (I7fab3, b/188569367)
Sửa lỗi
- Thay đổi
Modifier.onGloballyPositioned()
để báo cáo các toạ độ của đối tượng sửa đổi này trong chuỗi đối tượng sửa đổi, chứ không phải là toạ độ bố cục sau khi áp dụng tất cả các đối tượng sửa đổi. Tức là thứ tự của các công cụ sửa đổi hiện đang ảnh hưởng đến những toạ độ sẽ được báo cáo. (Ieb67d, b/177926591) - Đã thêm một tệp README cho danh mục Compose Material hiện có. (If9191)
Phiên bản 1.0.0-beta07
Ngày 18 tháng 5 năm 2021
androidx.compose.material:material-*:1.0.0-beta07
đã được phát hành. Phiên bản 1.0.0-beta07 bao gồm các thay đổi sau.
Các thay đổi về API
- Bạn có thể không cần phải sử dụng các phương thức tiện ích mở rộng hỗ trợ lộ trình trong Navigation Compose. (I22beb, b/172823546)
Phiên bản 1.0.0-beta06
Ngày 5 tháng 5 năm 2021
androidx.compose.material:material-*:1.0.0-beta06
đã được phát hành. Phiên bản 1.0.0-beta06 bao gồm các thay đổi sau.
Các thay đổi về API
- Hiệu ứng gợn sóng đã được di chuyển sang sử dụng
RippleDrawable
nội bộ trên các thiết bị Android. Điều này có nghĩa là ảnh động hiệu ứng gợn sóng sẽ xảy ra trên RenderThread và sẽ chạy mượt ngay cả khi luồng giao diện người dùng đang tải, chẳng hạn như khi di chuyển giữa các màn hình. Điều này không làm thay đổi nền tảng API của hiệu ứng gợn sóng, nhưng có thể có những thay đổi hành vi phát sinh do thay đổi này. Để hỗ trợ hoạt động di chuyển, hệ thống đã thêmLocalRippleNativeRendering
– cung cấp giá trị làfalse
cho CompositionLocal này để quay lại thao tác triển khai hiệu ứng gợn sóng trước đó trong CompositionLocalProvider. API này là tạm thời và sẽ bị xoá trong tương lai. Vì vậy, nếu gặp sự cố khiến bạn phải sử dụng API này, vui lòng gửi lỗi. (I902f8, b/168777351, b/183019123) - Thêm các API hỗ trợ tiếp cận CollectionInfo và CollectionItemInfo cho phép đánh dấu bộ sưu tập và các mục của bộ sưu tập đó cho các dịch vụ hỗ trợ tiếp cận (Id54ef, b/180479017)
- Thêm
error
API hỗ trợ tiếp cận cho phép đánh dấu một nút chứa dữ liệu đầu vào không hợp lệ (I12997, b/180584804, b/182142737)
Sửa lỗi
- Cập nhật nội dung triển khai phần lồng ghép danh mục của Compose Material: https://github.com/google/accompanist/pull/365. (I25dc3)
- Các thành phần con cháu Hàng và Cột có weight(fill = false) không còn giúp thành phần mẹ lấp đầy toàn bộ không gian của trục chính hiện có. (Ied94d, b/186012444, b/184355105)
Phiên bản 1.0.0-beta05
Ngày 21 tháng 4 năm 2021
androidx.compose.material:material-*:1.0.0-beta05
đã được phát hành. Phiên bản 1.0.0-beta05 bao gồm các thay đổi sau.
Sửa lỗi
- Thêm hình ảnh thành phần thẻ thông tin, bộ chọn giao diện và URL trình đơn cụ thể hơn vào danh mục Compose Material hiện có. (I9b58e)
Phiên bản 1.0.0-beta04
Ngày 7 tháng 4 năm 2021
androidx.compose.material:material-*:1.0.0-beta04
đã được phát hành. Phiên bản 1.0.0-beta04 bao gồm các thay đổi sau.
Các thay đổi về API
- THAY ĐỔI API: Trạng thái
DrawerState
không còn kéo dài SwipeableState thử nghiệm nữa.- THAY ĐỔI API:
BottomDrawerState
hiện được đánh dấu là Thử nghiệm, để khớp với thành phần BottomDrawer thử nghiệm (I81114, b/181656094)
- THAY ĐỔI API:
- Đổi tên
hideSoftwareKeyboard
vàshowSoftwareKeyboard
trênSoftwareKeyboardController
lần lượt thànhhide()
vàshow()
.- Cung cấp giao diện CompositionLocal đầy đủ cho LocalSoftwareKeyboardController, cho phép cài đặt giao diện (đặc biệt hữu ích trong các hoạt động kiểm thử) (I579a6)
- Đã thêm API hỗ trợ tiếp cận LiveRegion. Nếu nút được đánh dấu là khu vực trực tiếp, các dịch vụ hỗ trợ tiếp cận sẽ tự động thông báo cho người dùng về các thay đổi của nút (Idcf6f, b/172590946)
Sửa lỗi
- Thêm nội dung triển khai danh mục Compose Material vào mô-đun hiện có. Hiện thiếu dữ liệu: hình ảnh thẻ thông tin thành phần, bộ chọn giao diện (được thêm vào các thay đổi tiếp theo). (Ie7a94)
Phiên bản 1.0.0-beta03
Ngày 24 tháng 3 năm 2021
androidx.compose.material:material-*:1.0.0-beta03
đã được phát hành. Phiên bản 1.0.0-beta03 bao gồm các thay đổi sau.
Thay đổi về API
- Ngừng sử dụng
DefaultMonotonicFrameClock
. Giờ đây, việc gọiwithFrameNanos
hoặcRecomposer.runRecomposeAndApplyChanges
mà không cóMonotonicFrameClock
sẽ gửiIllegalStateException
. (I4eb0d) - Thêm API mới
LeadingIconTab
để hỗ trợ hiển thị biểu tượng và văn bản cùng dòng trong thẻ. (I23267)
Đóng góp bên ngoài
- [Bởi Jossi Wolf]
BottomDrawer
hiện sẽ bao gồm nội dung của khe ngăn.BottomDrawer
không tạoIllegalStateException
khi thành phần mẹ có chiều cao vô hạn. Ngăn dưới cùng hiện sẽ mở ở trạng thái mở rộng nếu ngăn có kích thước nhỏ hơn 50% so với thành phần mẹ. Đã cập nhật các tài liệu quanhBottomDrawerState
vàModalBottomSheetLayoutState
.BottomDrawerState#isOpen
sẽ trả về giá trị true ngay bây giờ nếu ở trạng thái mở hoặc mở rộng. (I87241)
Phiên bản 1.0.0-beta02
Ngày 10 tháng 3 năm 2021
androidx.compose.material:material-*:1.0.0-beta02
đã được phát hành. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm API CompositionLocal
LocalSoftwareKeyboardController
mới để thay thế giao diệnSoftwareKeyboardController
trước đó trên TextField. (I5951e, b/168778053)
Sửa lỗi
- Thực thi các hạn chế về việc sử dụng công khai API thử nghiệm (I6aa29, b/174531520)
- Thay đổi nội dung căn chỉnh mặc định theo chiều ngang cho TopAppBar và BottomAppBar thành Start, nhất quán với Hàng (Ib2dc7)
- Thêm mô-đun và giao diện người dùng phần giữ chỗ mới cho danh mục Compose Material, hiện được lồng trong bản minh hoạ kiểm thử tích hợp hiện có. (Idfcb3)
androidx.compose.ui:ui
không còn phụ thuộc vào AppCompat hay Fragment. Nếu bạn đang sử dụng ComposeView trong ứng dụng và sử dụng Fragment và/hoặc AppCompat, hãy đảm bảo rằng bạn đang sử dụng AppCompat 1.3+ / Fragment 1.3+ – những phiên bản này cần thiết để thiết lập chính xác vòng đời và chủ thể trạng thái đã lưu cần thiết cho ComposeView. (I1d6fa, b/161814404)
Phiên bản 1.0.0-beta01
Ngày 24 tháng 2 năm 2021
androidx.compose.material:material-*:1.0.0-beta01
đã được phát hành. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.
Đây là bản phát hành đầu tiên của Compose 1.0.0 Beta.
Các thay đổi về API
- Đã đổi tên công cụ sửa đổi kích thước. Modifier.width/height/size được đổi tên thành requiredWidth/requiredHeight/requiredSize Modifier.preferredWidth/preferredHeight/preferredSize được đổi tên thành width/height/size. (I5b414)
- imageResource và vectorResource hiện là các hàm mở rộng trên các nội dung đồng hành ImageBitmap và ImageVector tương ứng. Các hàm load{Image,Vector,Font}Resource đã bị xoá. (I89130)
- Các đối tượng sửa đổi kích thước cho hàm nội tại không còn là thử nghiệm. (I15744)
- Xoá câu nhận định dp (I798d2)
- Xoá lệnh gọi lại SoftwareKeyboardController khỏi tất cả các trường văn bản để sớm được thay bằng một API mới. (Iae869, b/168778053)
- Các biểu thức lambda thao tác nút chuyển, hộp đánh dấu và RadioButton hiện có tích chất rỗng. Cập nhật các ví dụ Checkbox-in-clickable-row để sử dụng tính năng này. (If601b, b/171819073)
InteractionState
đã được thay thế bằng[Mutable]InteractionSource
- Giao diện chịu trách nhiệm phát / thu thập các sự kiện tương tác.
- Thay vì truyền
interactionState = remember { InteractionState() }
vào các thành phần nhưButton
vàModifier.clickable()
, hãy sử dụnginteractionSource = remember { MutableInteractionSource() }
. - Thay vì
Interaction.Pressed in interactionState
, bạn nên dùng các hàm mở rộng trên InteractionSource, chẳng hạn như InteractionSource.collectIsPressedAsState(). - Đối với các trường hợp sử dụng phức tạp, bạn có thể sử dụng InteractionSource.interactions để quan sát luồng tương tác. Hãy xem tài liệu và ví dụ về InteractionSource để biết thêm thông tin.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Thêm giao diện AccessibilityMananger và LocalAccessibilityMananger trong CompositionLocals (I53520)
- Xoá các phương thức LayoutCoordinates không dùng nữa, sử dụng hàm thay vì thuộc tính cho positionInParent và boundsInParent (I580ed, b/169874631, b/175142755)
- Thanh trượt hiện hỗ trợ trạng thái bật/tắt (I6d56b, b/179793072)
- Tạo TextInputSession mới cho các phiên nhập từ thành phần văn bản cấp thấp, chẳng hạn như CoreTextField. (I8817f, b/177662148)
- Xoá AnimationEndReason.Interrupted. CancellationException sẽ được gửi ra nếu hiệu ứng chuyển động bị gián đoạn. (I2cbbc, b/179695417)
- Xoá
@ExperimentalRippleApi
và đổiRippleAlpha
thành một lớp có các thuộc tính thay vì giao diện. (I6df7c) - Thêm giao diện TextFieldColors để đại diện cho các màu khác nhau được sử dụng trong TextField và OutlinedTextField ở các trạng thái khác nhau. Để triển khai theo mặc định, hãy xem TextFieldDefaults.textFieldColors và TextFieldDefaults.outlinedTextFieldColors.
- Đã đổi tên thông số isErrorValue bên trong TextField và OutlinedTextField thành isError. (I831f9, b/171305338, b/168004067)
- Thêm đối tượng sửa đổi selectionGroup cho phép đánh dấu bộ sưu tập Tab hoặc RadioButton cho các mục đích hỗ trợ tiếp cận (Ie5c29)
Thêm LazyListState.animateScrollToItem
Phương thức này cuộn mượt đến một mục cụ thể trong danh sách. (I4bfd7)
ScrollableState.smoothScrollBy()
đã được đổi tên thànhanimateScrollBy()
LazyListState.snapToItemIndex()
đã được đổi tên thànhscrollToItem()
ScrollState.smoothScrollTo()
đã được đổi tên thànhanimateScrollTo()
(I35ded)Giờ đây, mọi thành phần kết hợp được đánh dấu bằng
@ReadOnlyComposable
đều được xác thực tại thời điểm biên dịch để đảm bảo rằng những lệnh này chỉ thực hiện các lệnh gọi đến@ReadOnlyComposables
khác (I58961)Xoá API TargetAnimation. (If47d1, b/177457083)
Vị trí cuộn trong Modifier.verticalScroll()/horizontalScroll() hiện được biểu thị bằng Ints (I81298)
Các gói của phương thức smoothScrollBy và scrollBy đã thay đổi thành
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Hiện tại, FlingConfig đã được đổi tên thành FlingBehavior, cho phép bạn tuỳ chỉnh các ảnh động tạm ngưng thay vì các giá trị giảm dần được xác định trước. (I02b86, b/175294473)
Đã đổi tên công cụ sửa đổi kích thước. Modifier.width/height/size được đổi tên thành requiredWidth/requiredHeight/requiredSize Modifier.preferredWidth/preferredHeight/preferredSize được đổi tên thành width/height/size. (I5b414)
defaultMinSizeConstraints được đổi tên thành defaultMinSize. (I4eaae)
Orientation (Hướng) đã được chuyển sang gói nền tảng. Chuyển VelocirtTracker từ ui.gesture sang ui.input.pointer. (Iff4a8, b/175294473)
drawerState.open() và drawerState.close() hiện là các hàm tạm ngưng. Hãy dùng rememberCoroutineScope() để lấy phạm vi của thành phần kết hợp nhằm gọi chúng (I16f60, b/175294473)
Nhà cung cấp đã được đổi tên thành CompositionLocalProvider
- Hàm khởi tạo Composition (Cấu trúc) không còn chấp nhận một tham số chính và không được dùng nữa.
- Chuyển currentCompositeKeyHash thuộc tính cấp cao nhất của thành phần kết hợp thay vì hàm cấp cao nhất của thành phần kết hợp.
- CompositionData và CompositionGroup được chuyển sang không gian tên androidx.compose.runtime.tooling
- ComposableLambda đã được đặt thành một giao diện thay vì loại cụ thể, và không còn có các thông số loại nữa.
- Đặt ComposableLambdaN thành giao diện thay vì loại cụ thể và không còn có tham số loại.
- Di chuyển hàm snapshotFlow sang không gian tên androidx.compose.runtime
- Phương thức hợp nhất của SnapshotMutationPolicy không còn là thử nghiệm
- Hàm clearRoots
@TestOnly
cấp cao nhất đã bị xoá. Dữ liệu này không còn cần thiết nữa. - Xoá hàm keySourceInfoOf và resetSourceInfo. Các dữ liệu này không còn cần thiết nữa.
- Xoá Composer.collectKeySourceInformation. Dữ liệu này không còn cần thiết nữa.
- Xoá phương thức isJoinedKey, joinedKeyLeft và joinedKeyRight. Các dữ liệu này không còn cần thiết nữa.
- Di chuyển nhiều API cấp cao nhất và sắp xếp lại thành các tệp khác nhau. Do ngữ nghĩa lớp tệp của Kotlin, khả năng tương thích nhị phân sẽ bị phá vỡ chứ không phải khả năng tương thích nguồn. Do đó, đây không phải là vấn đề đối với hầu hết người dùng.
- (I99b7d, b/177245490)
Làm lại Modifier.scrollable. Bây giờ, tính năng sẽ sử dụng giao diện Scrollable thay vì lớp ScrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable hiện chấp nhận DraggableState thay cho một lambda đơn giản. Bạn có thể tạo trạng thái thông qua
rememberDraggableState { delta -> }
để nhận hành vi tương tự trước đây (Ica70f, b/175294473)ZoomableController.smoothScaleBy và ZoomableController.stopAnimation hiện là các hàm tạm ngưng. (I7f970, b/177457083)
Xoá một số API không dùng nữa trước đây (Ice5da, b/178633932)
Thực hiện các thay đổi sau với Material API:
- Thêm tham số contentPadding vào Top/BottomAppBar để cho phép tuỳ chỉnh khoảng đệm mặc định.
- Sắp xếp lại tham số trong BackdropScaffold để tuân thủ các nguyên tắc về API đối với tham số bắt buộc đứng trước tham số không bắt buộc.
- Di chuyển tham số
icon
trong BottomNavigationItem ra phía sauselected
vàonClick
. - Đã đổi tên thông số
alwaysShowLabels
trong NavigationNavigationItem thànhalwaysShowLabel
. - Đã đổi tên thông số
bodyContent
trong một vài thành phần thành chỉcontent
. - Sắp xếp lại các thông số trong
ButtonDefaults.buttonColors()
. Vui lòng lưu ý rằng vì kiểu tham số này không thay đổi, mã của bạn sẽ không gặp lỗi. Hãy đảm bảo bạn đang sử dụng các tham số có tên hoặc cập nhật thứ tự theo cách thủ công, nếu không thì mã của bạn sẽ không hoạt động được như trước. - Thêm tham số
secondaryVariant
vàodarkColors()
. Thường thì màu này giống với màusecondary
trong giao diện tối, nhưng thêm màu này để tăng cường tính nhất quán và khả năng tuỳ chỉnh. - Xoá ElevationDefaults và animateElevation() trên giao diện API công khai vì chúng không được sử dụng phổ biến/hữu ích.
- Đổi tên
onValueChangeEnd
trongSlider
thànhonValueChangeFinished
và đặt là có giá trị rỗng. - Đã đổi tên thông số
text
trongSnackbar
thànhcontent
để đảm bảo tính nhất quán. - Thêm tham số
contentPadding
vàoDropdownMenuItem
để cho phép tuỳ chỉnh khoảng đệm mặc định và đặtcontent
làm phần mở rộng trênRowScope
. - Đổi tên
ModalDrawerLayout
thànhModalDrawer
. - Đổi tên
BottomDrawerLayout
thànhBottomDrawer
. - (I1cc66)
BasicTextField hiện chấp nhận Bút vẽ thay vì Màu sắc để tuỳ chỉnh tốt hơn (I83a36)
imageResource và vectorResource hiện là các hàm mở rộng trên các nội dung đồng hành ImageBitmap và ImageVector tương ứng. Các hàm load{Image,Vector,Font}Resource đã bị xoá. (I89130)
Thay đổi Indication#createIndication() thành Indication#rememberUpdatedIndication(InteractionState) và xoá tham số InteractionState khỏi IndicationInstance#drawIndication(). IndicationInstance chỉ có trách nhiệm vẽ các hiệu ứng hình ảnh và không khởi chạy ảnh động/trạng thái ghi để phản hồi các thay đổi của InteractionState. Thay vào đó, các hoạt ảnh và trạng thái ghi này nên diễn ra trong
rememberUpdatedIndication()
. Thông sốindication
trongModifier.indication
cũng đã được thay đổi thành một thông số bắt buộc. (Ic1764, b/152525426)
Sửa lỗi
- Thêm API CompositionLocal LocalSoftwareKeyboardController mới để thay thế giao diện SoftwareKeyboardController trước đó trên TextField. (I658b6, b/168778053)
Phiên bản 1.0.0-alpha12
Ngày 10 tháng 2 năm 2021
androidx.compose.material:material-*:1.0.0-alpha12
đã phát hành. Phiên bản 1.0.0-alpha12 bao gồm các thay đổi sau.
Các thay đổi về API
- Modifier.pointerInput hiện yêu cầu các khoá nhớ cho biết thời điểm coroutine phát hiện con trỏ sẽ khởi động lại các phần phụ thuộc mới. (I849cd)
- BottomDrawerLayout và ListItem đã được đánh dấu là @ExperimentalMaterialApi (Id766e)
- PaddingValues.Absolute đã được thêm và có thể dùng trong các API chấp nhận PaddingValues. (Ia5f30)
- Ngừng sử dụng onImeActionPerformed. Thay vào đó, hãy sử dụng KeyboardActions (If0bbd, b/179071523)
- Để các quy ước đặt tên khớp hơn với ImageBitmap và ImageVector, ImagePainter được đổi tên thành BitmapPainter cho phù hợp với VectorPainter. (Iba381, b/174565889)
- Animatable.snapTo và Animatable.stop hiện là các hàm tạm ngưng (If4288)
- Chuyển ComponentActivity.setContent sang androidx.activity.compose.setContent trong mô-đun androidx.activity:activity-compose. (Icf416)
- Xoá phương thức giải cấu trúc và copy() khỏi một số lớp mà chúng ít khi được sử dụng. (I26702, b/178659281)
- Tạo halfExpand() và expand() trong ModalBottomSheetState nội bộ (Ic914e)
- Thay đổi Indication#createInstance thành @Composable và thay đổi LocalIndication để chứa một Chỉ báo (Indication), không phải là () -> Indication. (I5eeea, b/157150564)
- Hiện đã chuyển AlertDialog và DropdownMenu sang chỉ sử dụng cho Android. Bổ sung tham số PopupProperties vào DropdownMenu để định cấu hình thêm Cửa sổ bật lên cơ bản. (I9c443)
- Ngừng sử dụng loadfontResource. Thay vào đó, hãy sử dụng fontResource. Ngừng sử dụng imageResource, loadImageResource, vectorResource và loadVectorResource. Thay vào đó hãy sử dụng painterResource. (I6b809)
- Xoá tham số
toggle
vàtoggleModifier
khỏi DropdownMenu, đồng thời đổi têndropdownModifier
,dropdownOffset
vàdropdownContent
lần lượt thànhmodifier
,offset
vàcontent
. DropdownMenu hiện đã hoạt động nhất quán vớiPopup
, trong đó bố cục mẹ được sử dụng cho vị trí của trình đơn. Trong hầu hết các trường hợp, bạn có thể di chuyểntoggle
để trở thành thành phần đồng cấp củaDropdownMenu
và bao gói cả hai trong mộtBox
. Hãy xem ví dụ cập nhật trong tài liệu để biết thêm thông tin sử dụng API này. (I884fb) - toIntPx() đã đổi tên thành roundToPx(). (I9b7e4, b/173502290)
- IntBounds đổi tên thành IntRect và API đã được cải thiện. (I1f6ff)
- Đã bổ sung các hành động về ngữ nghĩa mở rộng và thu gọn. Đã bổ sung expand và halfExpand trong ModalDownSheetState (Ib5064)
- Ngừng sử dụng Modifier.dragGestureFilter. Thay vào đó, hãy sử dụng
Modifier.pointerInput { detectDragGestures (...)}
. Ngoài ra, hãy sử dụng Modifier.draggable cho các thao tác kéo một trục (I0ba93, b/175294473) - Đổi tên Ambients để khớp với Ambient -> Đổi tên CompositionLocal. Ambients trước đây có tên là AmbientFoo, CompositionLocals hiện có tên là LocalFoo. (I2d55d)
- Lựa chọn đã được di chuyển sang nền tảng. (I7892b)
- Tương tự như cách trước đây chúng tôi đã xoá thành phần kết hợp
state { 0 }
và hiện khuyến khích sử dụngremember { mutableStateOf(0) }
, chúng tôi sẽ xoá thành phần kết hợpsavedInstanceState { 0 }
. Thay vào đó, bạn nên sử dụngrememberSaveable { mutableStateOf(0) }
. Thao tác này sẽ tự động lưu và khôi phục nếu bạn có thể lưu trữ loại được dùng trong MutableState trong Gói. Nếu trước đó bạn đã truyền đi một đối tượng trình lưu tuỳ chỉnh, thì bây giờ bạn cần sử dụng một nạp chồng mới của rememberSaveable có tham sốstateSaver
. Cách sử dụng sẽ có dạng như sau:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Thêm ProgressBarRangeInfo.Indeterminate để đánh dấu các thanh tiến trình không xác định cho tính năng hỗ trợ tiếp cận (I6fe05)
Ngừng sử dụng @ComposableContract và thay bằng 3 chú giải cụ thể hơn.
@ComposableContract(restartable = false)
đã trở thành@NonRestartableComposable
@ComposableContract(readonly = true)
đã trở thành@ReadOnlyComposable
@ComposableContract(preventCapture = true)
đã trở thành@DisallowComposableCalls
- Xoá
@ComposableContract(tracked = true)
. - (I60a9d)
Ngừng sử dụng các phần mềm tiện ích
emptyContent()
và(@Composable () -> Unit).orEmpty()
do không còn có bất cứ giá trị hoặc tác động tích cực nào về hiệu suất (I0484d)rememberSavedInstanceState() đổi tên thành rememberSaveable() và chuyển sang gói androidx.compose.runtime.saveable. (I1366e, b/177338004)
Saver, listSaver(), mapSaver(), autoSaver đã được chuyển từ androidx.compose.runtime.savedinstancestate thành androidx.compose.runtime.saveable (I77fe6)
Đổi tên tham số trên RounderCornerShape, CutCornerShape và CornerBasedShape từ trái/phải thành bắt đầu/kết thúc để hỗ trợ tính năng tự động phản chiếu hình dạng theo hướng rtl (phải sang trái). AbsoluteRounderCornerShape và AbsoluteRounderCornerShape được giới thiệu cho các trường hợp không mong muốn tạo phản chiếu. (I61040, b/152756983)
Thay đổi các tham số
text
vàicon
của Tab và tham sốlabel
của BottomNavigationItem thành có tính chất rỗng, để truyền tải tốt hơn hành vi của thành phần khi các tham số này được cung cấp/không được cung cấp, vì điều này ảnh hưởng đến kích thước và bố cục của thành phần. Nếu đang chuyểnemptyContent()
để thể hiện là không có văn bản / biểu tượng / nhãn, thì bạn nên sử dụngnull
. (I57ed4)Đã đổi tên thông số màu contentColorFor thành backgroundColor (I5bb67)
TabDefaults không được dùng nữa và thay thế bằng TabRowDefaults. (I0f189)
Ra mắt ColorMatrix API dùng để sửa đổi các giá trị rgb của nguồn nội dung API ColorFilter đã tái cấu trúc làm một giao diện và khớp với cách triển khai PathEffect. (Ica1e8)
Hiện ngừng sử dụng AnimatedValue/Float. Thay vào đó, hãy sử dụng Animatable. (I71345, b/177457083)
Thêm SemanticsProperties.PaneTitle API. (I20d5a)
Thêm các tham số đã bật vào Tab và BottomNavigationItem để ngăn hành vi nhấp vào các tham số này. Thay đổi BottomNavigationItem thành RowScope.BottomNavigationItem để thể hiện rõ hơn các yêu cầu về bố cục trong API. (Id683d)
Ngừng sử dụng tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter và pressIndicaitonGestureFilter. Thay vào đó, hãy sử dụng Modifier.clickable hoặc Modifier.pointerInput với hàm detectTapGestures. (I6baf9, b/175294473)
Thêm tham số layoutDirection vào createOutline của Hình dạng (Shape). Hành vi này cho phép tạo các hình dạng nhận biết hướng bố cục. (I57c20, b/152756983)
Xoá
Recomposer.current()
. [Abstract]ComposeView hiện được đặt mặc định là các Trình kết hợp lại tạo từng phần ở phạm vi cửa sổ do ViewTreeLifecycleOwner cho cửa sổ tạo ra. Quy trình kết hợp lại và kim đánh dấu nhịp độ khung hình ảnh động dựa trên withFrameNanos sẽ bị tạm dừng trong khi Vòng đời máy chủ ngừng hoạt động. (I38e11)
Sửa lỗi
- Biểu tượng giờ đây sẽ mở rộng quy mô để vừa với kích thước và áp dụng đối tượng sửa đổi kích thước tương ứng cho biểu tượng đó. Ví dụ: giờ đây,
Icon(.., modifier = Modifier.size(50.dp)
sẽ vẽ trong không gian 50x50 dp. (Ib2ba9, b/178796190)
Phiên bản 1.0.0-alpha11
Ngày 28 tháng 1 năm 2021
androidx.compose.material:material-*:1.0.0-alpha11
đã phát hành. Phiên bản 1.0.0-alpha11 bao gồm các thay đổi sau.
Các thay đổi về API
- Tăng cấp một số Material API để không còn là
@Experimental
(I5d20e) - Tham số mô tả nội dung đã được thêm vào Image và Icon. Tham số này được dùng để cung cấp thông tin mô tả cho các dịch vụ hỗ trợ tiếp cận (I2ac4c)
- Thay đổi giao diện tham số trạng thái Material để có các hàm @Composable trả về
State<T>
. ThêmAnimatable.asState()
để giúp chuyển đổi một Animatable thành một State dễ dàng hơn. Đồng thời thay đổi animateElevation thành một đối tượng mở rộng tạm ngưng trên Animatable. (If613c) - Snackbar, SnackbarHost, SnackbarHostState không còn là
@ExperimentalMaterialAPI
nữa (Id1fb5) - Thay đổi Kiểu chữ, Hình dạng và Vị trí thẻ để không còn là lớp dữ liệu nữa. Thêm hàm sao chép cho Kiểu chữ và Hình dạng nhằm thay thế các hàm được tạo. (I40037)
- Xoá một số Material API không dùng nữa trước đây (Ifaa25)
Sửa lỗi
- Ngừng sử dụng onCommit, onDispose và onActive, thay vào đó là SideEffect API và DisposableEffect API (If760e)
- Ngừng sử dụng tính năng chuyển đổi dựa trên TransitionDefinition (I0ac57)
- Trạng thái ban đầu trong updateTransition hiện đã được hỗ trợ (Ifd51d)
- Thiết kế lại WithConstraints dưới dạng BoxWithConstraints và chuyển sang foundation.layout. (I9420b, b/173387208)
Ngừng sử dụng scrollBy không tạm ngưng, xoá scrollTo không tạm ngưng
Bạn nên sử dụng các hàm tạm ngưng để kiểm soát tính năng cuộn trang và đợi quá trình cuộn trang hoàn tất. Trong quá trình chuyển đổi này, chúng tôi sẽ ngừng hỗ trợ và/hoặc xoá các phiên bản không tạm ngưng của các hàm này. (Ie9ced)
Ngừng sử dụng smoothScrollBy không tạm ngưng Bạn nên sử dụng các hàm tạm ngưng để kiểm soát tính năng cuộn trang và đợi quá trình cuộn trang hoàn tất. Trong quá trình chuyển đổi này, chúng tôi sẽ ngừng hỗ trợ các phiên bản không tạm ngưng của các hàm này. (I12880)
Ra mắt
ComposeContentTestRule
nhằm mở rộngComposeTestRule
và định nghĩasetContent
(đã bị xoá khỏiComposeTestRule
). Thêm phương thức nhà máycreateEmptyComposeRule()
. Phương thức này trả vềComposeTestRule
và không chạy Hoạt động (Activity) cho bạn. Sử dụng tuỳ chọn này khi bạn muốn chạy Hoạt động (Activity) trong quá trình kiểm thử, ví dụ: sử dụngActivityScenario.launch
(I9d782, b/174472899)Hiệu ứng gợn sóng dùng trong Nút (Button) và FloatingActionButton không còn tuỳ chỉnh được bằng cách cung cấp Chỉ báo mới thông qua AmbientIndication – vốn chưa bao giờ là cách tuỳ chỉnh các thành phần này và từ giờ việc này giúp các thành phần này nhất quán với các thành phần Material khác. Để tuỳ chỉnh hiệu ứng gợn sóng trên một ứng dụng, xem RippleTheme. (I546c5)
animateAsState giờ là animateFooAsState, nơi mà Foo trở thành loại biến được tạo hiệu ứng động, ví dụ như Float, Dp, Offset, v.v. (Ie7e25)
BasicTextField đã nhận được một thông số mới có tên là
decorationBox
. Tham số này cho phép thêm các thành phần trang trí như biểu tượng, phần giữ chỗ, nhãn và các thành phần tương tự vào trường văn bản, đồng thời tăng vùng nhắm đích cho các thành phần này. (I16996)Khắc phục lỗi khiến không thể đặt chiều rộng của trường văn bản tài liệu là 280.dp (I78373)
Thông số canDrag đã bị xoá khỏi Modifier.draggable (Ic4bec, b/175294473)
Xoá displaySize vì cần phải tránh dùng tính năng này. Thông thường, bạn nên sử dụng kích thước onRoot() hoặc ít nhất là kích thước cửa sổ. (I62db4)
Nền tảng hiện có thể có nhiều thành phần con cháu của bố cục. (I66a92, b/144488459)
Ngừng sử dụng invalidate và compositionReference(), thay vào đó lần lượt là currentRecomposeScope và rememberCompositionReference. (I583a8)
Thay đổi PopupPositionProvider để sử dụng các toạ độ tương đối với cửa sổ, chứ không phải các toạ độ chung. Đổi tên parentGlobalBounds thành anchorBounds và thay đổi windowGlobalBounds thành
windowSize: IntSize
(I2994a)Thời lượng và Thời gian hoạt động sẽ được thay bằng Thời gian dài mili giây và bước này sẽ xoá phần phụ thuộc của phương thức nhập con trỏ vào các lớp đó. (Ia33b2, b/175142755, b/177420019)
AnimationFloat.fling chấp nhận FlingConfig đã bị xoá. Thay vào đó, hãy sử dụng Animatable.animateDecay tạm ngưng. (I4659b, b/177457083)
Các chức năng có thể nhấp, bật tắt và chọn hiện có thể được tạo bên ngoài thành phần (I0a130, b/172938345, b/175294473)
Easing đã được thay đổi thành giao diện chức năng (Ib14e5)
Ngừng sử dụng ScrollableColumn/Row. Việc sử dụng ScrollableColumn ít hiệu quả hơn so với LazyColumn khi bạn có nội dung cuộn lớn vì với LazyColumn, chúng ta chỉ có thể soạn/đo lường/vẽ các phần tử hiển thị. Để tránh việc người dùng thao tác không hiệu quả, chúng tôi quyết định sẽ ngừng sử dụng ScrollableColumn và ScrollableRow, đồng thời khuyến khích sử dụng LazyColumn và LazyRow thay thế. Người dùng vẫn có thể quyết định rằng họ không cần hành vi lazy, đồng thời sử dụng trực tiếp các đối tượng sửa đổi như sau: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Phương thức khôi phục mặc định mới của
items(count: Int)
cho phạm vi của LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
vàitemsIndexed(items: List)
hiện là các hàm mở rộng nên bạn phải nhập thủ công các hàm đó khi sử dụng. Các nội dung nạp chồng phần mở rộng mới cho Mảng:items(items: Array)
vàitemsIndexed(Array)
(I803fc, b/175562574)Xoá các phương thức thử nghiệm monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Ngừng sử dụng phương thức toạ độ chung và tạo phương thức toạ độ dựa trên cửa sổ mới. (Iee284)
Bổ sung Modifier.toolingGraphicsLayer để thêm đối tượng sửa đổi lớp đồ hoạ khi bật chế độ kiểm tra. (I315df)
FocusRequester.createRefs hiện được đánh dấu là thử nghiệm vì có thể thay đổi. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden được đổi tên thành invisibleToUser và được đánh dấu là @ExperimentalComposeUiApi. Đổi tên AccessibilityRangeInfo thành ProgressBarRangeInfo. Đổi tên stateDescriptionRange thành progressBarRangeInfo. Đổi tên AccessibilityScrollState thành ScrollAxisRange. Đổi tên horizontalAccessibilityScrollState thành horizontalScrollAxisRange. Đổi tên verticalAccessibilityScrollState thành verticalScrollAxisRange. (Id3148)
Tận dụng TestCoroutineDispatcher trong thử nghiệm (I532b6)
Cập nhật API đồ hoạ vectơ để hỗ trợ phân tích cú pháp việc phủ màu được áp dụng cho thư mục gốc của đồ hoạ vectơ. (Id9d53, b/177210509)
Phiên bản 1.0.0-alpha10
Ngày 13 tháng 1 năm 2021
androidx.compose.material:material-*:1.0.0-alpha10
đã phát hành. Phiên bản 1.0.0-alpha10 bao gồm các thay đổi sau.
Các thay đổi về API
- Sửa đổi Velocity (Vận tốc) để có các thành phần và phép toán. (Ib0447)
- Đổi tên
@ExperimentalTesting
thành@ExperimentalTestApi
để nhất quán với các chú giải api thử nghiệm tương tự (Ia4502, b/171464963) - Đổi tên Position thành DpOffset và xoá getDistance() (Ib2dfd)
- Đổi tên Color.useOrElse() thành Color.takeOrElse() (Ifdcf5)
- Thêm nút Bật/tắt đối với nền tảng Strings.kt (I4a5b7, b/172366489)
- Ngừng sử dụng FlowRow và FlowColumn. Thay vào đó, vui lòng sử dụng một bố cục tuỳ chỉnh. (I09027)
- Ngừng sử dụng Modifier.focus() và Modifier.focusRequester(). Thay vào đó là Modifier.focusModifier() và Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Chuyển nativeClass sang mô-đun giao diện người dùng và đặt thành nội bộ. Thay vào đó, cập nhật việc sử dụng nativeClass trong các nội dung triển khai ngang bằng để sử dụng 'is MyClass'. (I4f734)
Sửa lỗi
- Thêm tính năng hỗ trợ các trường văn bản chỉ có thể đọc và bị vô hiệu hoá (I35279, b/171040474, b/166478534)
animate()
hiện được thay bằnganimateAsState()
trả vềState<T>
chứ không phảiT
. Việc này tạo ra hiệu suất cao hơn do phạm vi vô hiệu hoá có thể được thu hẹp đến vị trí mà giá trị Trạng thái được đọc. (Ib179e)- Thêm API có vai trò Ngữ nghĩa và thêm Vai trò dưới dạng tham số cho SemanticsModifier có thể nhấp, chọn và bật/tắt. Thay đổi Modifier.progressSemantics sao cho Thanh trượt cũng có thể sử dụng được. (I216cd)
Phiên bản 1.0.0-alpha09
Ngày 16 tháng 12 năm 2020
androidx.compose.material:material-*:1.0.0-alpha09
đã phát hành. Phiên bản 1.0.0-alpha09 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm API để kích hoạt thao tác xử lý ảnh động thủ công và kéo tại Modifier.swipeable (Iaa17a, b/162408885)
- Đổi tên các đối tượng *Constants như ButtonConstants để kết thúc bằng giá trị Defaults như ButtonDefaults. Đồng thời xoá các tiền tố
default
không cần thiết khỏi thuộc tính trong những đối tượng mới này. (Ibb915, b/159982740) Compose hỗ trợ các phương thức getter của thuộc tính để có thể thực hiện các lệnh gọi thành phần kết hợp. Chúng tôi vẫn hỗ trợ tính năng này, nhưng cú pháp để khai báo phương thức getter thuộc tính là @Composable sẽ thay đổi.
Ngưng sử dụng cú pháp cho việc này bằng cách tự chú giải thuộc tính.
@Composable val someProperty: Int get() = ...
Sử dụng cú pháp now-correct cho việc này bằng cách chú giải phương thức getter của thuộc tính:
val someProperty: Int @Composable get() = ...
Cả hai cú pháp sẽ hoạt động trong một khoảng thời gian, nhưng cú pháp cũ không dùng nữa sẽ trở thành lỗi biên dịch. (Id9197)
Thêm thư viện
androidx.compose.material:material-ripple
chứa các API có hiệu ứng gợn sóng để cho phép tạo các thành phần tương tác mà không cần đến phần còn lại của thư viện Material. rememberRippleIndication được thay bằng rememberRipple. (Ibdf11)
Sửa lỗi
- Biểu thức lambda trong công cụ sửa đổi độ chênh lệch hiện trả về kết quả IntOffset thay vì Float. (Ic9ee5, b/174137212, b/174146755)
Tái cấu trúc ShaderBrush để tạo một thực thể chương trình đổ bóng theo yêu cầu khi có sẵn thông tin về kích thước môi trường vẽ. Thao tác này rất hữu ích để xác định các hàm gradient (chuyển màu) chiếm toàn bộ giới hạn vẽ của một thành phần kết hợp tại thời điểm kết hợp mà không cần thực hiện các tuỳ chọn triển khai DrawModifier tuỳ chỉnh.
Ngừng sử dụng các API hàm khởi tạo hàm gradient (chuyển màu) thay cho phương thức nhà máy trên đối tượng Gradient. (I511fc, b/173066799)
Ngừng sử dụng Modifier.focusObserver. Chuyển sang sử dụng Modifier.onFocusChanged hoặc Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Ngừng sử dụng LazyColumnFor, LazyRowFor, LazyColumnForIndexed và LazyRowForIndexed. Thay vào đó, sử dụng LazyColumn và LazyRow (I5b48c)
Chuyển Dp.VectorConverter, Position.VectorConverter, v.v. sang animation-core và ngừng sử dụng VectorConveter cũ (If0c4b)
API tự động điền hiện là API thử nghiệm và yêu cầu chọn tham gia (I0a1ec)
Thêm các bản khai báo về việc giải mã để tạo các phiên bản FocusRequester (I35d84, b/174817008)
accessibilityLabel đổi tên thành contentDescription. accessibilityValue đổi tên thành stateDescription. (I250f2)
Hàm infiniteRepeatable mới dùng để tạo một InfiniteRepeatableSpec (I668e5)
Hành vi định vị của DropdownMenus hơi thay đổi theo thông số của Material. (I34c72, b/168594123)
Chúng tôi đã thêm tuỳ chọn hỗ trợ InteractionState cho TextFields. (I61d91)
Thêm Modifier.clearAndSetSemantics để xoá ngữ nghĩa của các thành phần con và đặt các ngữ nghĩa mới. (I277ca)
Di chuyển ContentDrawScope sang mô-đun ui-graphics để kết hợp với DrawScope. (Iee043, b/173832789)
Phiên bản 1.0.0-alpha08
Ngày 2 tháng 12 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha08
, androidx.compose.material:material-icons-core:1.0.0-alpha08
và androidx.compose.material:material-icons-extended:1.0.0-alpha08
. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.
Các thay đổi về API
- MaterialTheme hiện đặt màu chính xác cho các ô điều khiển lựa chọn và nền lựa chọn. Các ứng dụng không dùng Material có thể sử dụng AmbientTextSelectionColors theo cách thủ công để tuỳ chỉnh màu sắc dùng để lựa chọn. (I1e6f4, b/139320372, b/139320907)
- Thêm mục kiểm tra tìm lỗi mã nguồn (lint) cho việc đặt tên và vị trí tham số lambda có khả năng kết hợp, để kiểm tra tính nhất quán với nguyên tắc Compose.
Ngoài ra, chúng tôi cũng đã di chuyển một số API sử dụng
children
dưới dạng tên cho lambda theo sau sangcontent
, theo hướng dẫn và mục kiểm tra tìm lỗi mã nguồn. (Iec48e) - Đổi tên VectorAsset thành ImageVector Chuyển và đổi tên VectorAsset thành Builder để trở thành một lớp nội tại của ImageVector theo mỗi hướng dẫn của hội đồng API. Thêm tên thay thế mới của VectorAssetBuilder để liên kết với ImageVector.Builder nhằm tăng khả năng tương thích. (Icfdc8)
- Đổi tên ImageAsset và các phương thức liên quan thành ImageBitmap. (Ia2d99)
- Di chuyển các thuộc tính ngữ nghĩa nền tảng sang giao diện người dùng (I6f05c)
- Ngừng sử dụng
fun RippleIndication()
và thay bằngrememberRippleIndication()
để đảm bảo tính nhất quán với các API khác. (Id8e2c) - Thêm tham số singeLine vào BasicTextField, TextField và OutlinedTextField. Đặt thông số này là true để đặt trường văn bản thành một dòng duy nhất có thể cuộn theo chiều ngang. (I57004, b/168187755)
Sửa lỗi
- Thêm thao tác ngữ nghĩa Loại bỏ (Dismiss) (I2b706)
- Di chuyển các API DrawModifier từ gói androidx.compose.ui sang gói androidx.compose.ui.draw. Tạo tệp DrawModifierDeprecated.kt để đưa các phương thức typealiases/helper vào nhằm hỗ trợ quá trình di chuyển từ các API không dùng nữa sang các API hiện tại. (Id6044, b/173834241)
- Đổi tên Modifier.drawLayer thành Modifier.graphicsLayer Đồng thời cập nhật các lớp liên quan lên GraphicsLayer theo phản hồi của API. (I0bd29, b/173834241)
- Xoá
<T>
khỏi nội dung khai báo SubcomposeLayout. Bạn có thể sử dụng thuộc tính này mà không cần chỉ định loại ngay. (Ib60c8) - Thêm API Modifier.scale/rotate để thuận tiện hơn cho drawLayer.
- Đổi tên
Modifier.drawOpacity
thànhModifier.alpha
. - Đã đổi tên
Modifier.drawShadow
thànhModifier.shadow
(I264ca, b/173208140)
- Đổi tên
- Tham số căn chỉnh của Hộp được đổi tên thành contentAlignment. (I2c957)
- Các công cụ sửa đổi offsetPx đã được đổi tên thành offset. Công cụ này hiện đang sử dụng các thông số lambda thay vì Trạng thái. (Ic3021, b/173594846)
- Ra mắt các API SweepGradientShader và SweepGradientBrush. (Ia22c1)
- Thêm tuỳ chọn kiểm tra lỗi mã nguồn cho các tham số của Đối tượng sửa đổi trong các Hàm có khả năng kết hợp. Bước kiểm tra mã nguồn này kiểm tra tên, loại dữ liệu trả về, giá trị mặc định và thứ tự của tham số để đảm bảo tính nhất quán với các nguyên tắc của Compose. (If493b)
- Cập nhật API TextFieldValue
- đặt TextFieldValue.composition ở chế độ chỉ đọc
- Xoá ngoại lệ được gửi do phạm vi lựa chọn không hợp lệ (I4a675, b/172239032)
- Thêm phương thức nạp chồng mới
Modifier.drawLayer()
. Phương thức này sẽ chặn một khối lambda trên một GraphicsLayerScope mới mà bạn sẽ xác định các thông số lớp theo cách cho phép bỏ qua việc sắp xếp lại và bố cục lại khi trạng thái thay đổi. DrawLayerModifier đang là nội bộ để chuẩn bị di chuyển logic của nó sang phương thứcplaceable.placeWithLayer()
của LayoutModifier (I15e9f, b/173030831) - Ngừng sử dụng các Ambient được đặt tên với hậu tố là
Ambient
và thay thế chúng bằng các thuộc tính mới có tiền tố là Ambient, tuân theo các nguyên tắc khác về API Compose và Ambient. (I33440) - Thêm mục kiểm tra tìm lỗi mã nguồn để kiểm tra nhằm đảm bảo rằng các trạng thái ban đầu Đối tượng sửa đổi sử dụng
androidx.compose.ui.composed {}
nội bộ, thay vì được đánh dấu là@Composable
. (I3c4bc) - Đổi tên đối số ngữ nghĩa mergeAllDescendants thành mergeDescendants. (Ib6250)
- Tính năng kiểm soát thời gian trong chương trình kiểm thử (TestAnimationClock và cách sử dụng) đang được thử nghiệm (I6ef86, b/171378521)
- Xoá mô-đun ui-test cũ và các mã giả lập của nó (I3a7cb)
- TextUnit.Inherit được đổi tên thành TextUnit.Unspecified nhất quán với các đơn vị khác. (Ifce19)
- Giao diện Căn chỉnh đã được cập nhật và hoạt động bình thường. (I46a07, b/172311734)
- đã đổi tên id thành layoutId đối với LayoutsIdParentData. Measurable.id đã được đổi tên thành Measurable.layoutId. (Iadbcb, b/172449643)
Phiên bản 1.0.0-alpha07
Ngày 11 tháng 11 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha07
, androidx.compose.material:material-icons-core:1.0.0-alpha07
và androidx.compose.material:material-icons-extended:1.0.0-alpha07
. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.
Các thay đổi về API
- Ngừng sử dụng Emphasis và thay bằng AmbientContentAlpha. AmbientContentAlpha là giá trị trừu tượng đơn giản hơn biểu thị nội dung alpha ưu tiên cho một phần của hệ thống phân cấp, tương tự như cách AmbientContentColor biểu thị màu sắc nội dung ưu tiên. Văn bản và Biểu tượng hiện mặc định sử dụng giá trị hiện tại từ AmbientContentAlpha và bạn có thể thực hiện theo cách thủ công:
color.copy(alpha = AmbientContentAlpha.current)
để tạo ra hiệu quả tương tự trong các thành phần. Thay vì sử dụng ProvideEmphasis, bạn có thể trực tiếp cung cấp một giá trị thông qua AmbientContentAlpha và sử dụng các cấp độ mặc định mới trong ContentAlpha để thay thế cho EmphasisLevels cũ. (Idf03e, b/159017896) - Thêm androidx.compose.material.AmbientContentColor để thay thế androidx.compose.foundation.AmbientContentColor (I84f7b, b/172067770)
- Thêm androidx.compose.material.Text để thay thế androidx.compose.foundation.Text dưới dạng thành phần Văn bản cấp cao, có thể tạo giao diện. Đối với thành phần văn bản cơ bản không sử dụng màu / kiểu văn bản từ chủ đề, hãy sử dụng BasicText. (Ie6ae0)
- Thêm maxLines vào TextFields (Ib2a5b)
- Cập nhật TextFields để chấp nhận KeyboardOptions (Ida7f3)
- Khu vực hiện sử dụng độ cao tuyệt đối (tổng) khi tính toán lớp phủ độ cao. Vì vậy, một Khu vực được lồng trong một Khu vực khác sẽ sử dụng độ cao kết hợp để vẽ lớp phủ. (I7bd2b, b/171031040)
Sửa lỗi
captureToBitmap
đã chuyển đếncaptureToImage
(I86385)- Ngừng sử dụng AmbientTextStyle, ProvideTextStyle và AmbientContentColor nền tảng. Thay vào đó, hãy sử dụng các phiên bản mới có trong thư viện Material. Đối với các ứng dụng không dùng Material, bạn nên chuyển sang tạo các Ambient chủ đề cụ thể cho hệ thống mình tự thiết kế để có thể sử dụng trong các thành phần của riêng mình. (I74acc, b/172067770)
- Ngừng sử dụng foundation.Text và thay thế bằng material.Text. Đối với một API văn bản cơ bản, không có quy cách bắt buộc và không sử dụng giá trị nào từ một giao diện. Hãy xem androidx.compose.foundation.BasicText. (If64cb)
- Đổi tên KeyboardOptions thành ImeOptions (I82f36)
- Di chuyển KeyboardType và ImeAction vào KeyboardOptions (I910ce)
- Ngừng sử dụng BaseTextField. Sử dụng BasicTextField thay thế. (I896eb)
- Xoá chú giải ExperimentalSubcomposeLayoutApi. Hiện tại, bạn có thể sử dụng SubcomposeLayout mà không cần thêm @OptIn (I708ad)
- FirstBaseline và LastBaseline đã được chuyển sang gói androidx.compose.ui.layout (Ied2e7)
- Cập nhật Icon API (API Biểu tượng) để nhận Color.Unspecified với vai trò công cụ có khả năng phủ màu sẽ vẽ các thành phần được cung cấp hoặc vai trò trình vẽ không cần ColorFilter. Trước đây, hệ thống sẽ cố gắng bỏ qua việc phủ màu bằng tính năng Color.Unspecified sẽ phủ màu có màu trong suốt và cuối cùng nhìn như không phủ màu một chút nào. (I049e2, b/171624632)
- Đổi tên relativePaddingFrom thành paddingFrom. Công cụ sửa đổi paddingFromBaseline được thêm để thuận tiện cho việc chỉ định khoảng cách từ ranh giới bố cục đến đường cơ sở văn bản. (I0440a, b/170633813)
- Đổi tên LaunchedTask thành LaunchedEffect để nhất quán với các API SideEffect và DisposableEffect. LaunchedEffect không có tham số chủ đề để khuyến khích các phương pháp hay nhất. (Ifd3d4)
- Xoá MeasureResult khỏi MeasureScope. (Ibf96d, b/171184002)
- Một số biểu tượng liên quan đến bố cục được chuyển từ androidx.compose.ui sang androidx.compose.layout.ui. (I0fa98, b/170475424)
Phiên bản 1.0.0-alpha06
Ngày 28 tháng 10 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha06
, androidx.compose.material:material-icons-core:1.0.0-alpha06
và androidx.compose.material:material-icons-extended:1.0.0-alpha06
. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.
Các thay đổi về API
- androidx.compose.foundation.Icon được chuyển sang androidx.compose.material.Icon. Bạn cũng có thể dùng thành phần Image/Modifier.Paint() với Painter nếu không muốn sử dụng thư viện Material. (I9f622)
- Thêm FloatingActionButtonElevation để thể hiện độ cao mà các FAB ở các trạng thái khác nhau sử dụng. Xem FloatingActionButtonConstants.defaultElevation() để triển khai mặc định (I2d4f5)
- Thêm giao diện SwitchColors để thể hiện màu sắc được sử dụng bởi nút Switch ở các trạng thái khác nhau. Xem SwitchConstants.defaultColors để tuỳ chỉnh màu. (I93805)
- Thêm các giao diện ButtonElevation và ButtonColors để biểu thị độ cao và màu sắc được các nút sử dụng ở nhiều trạng thái. Xem các hàm mặc định trong ButtonConstants để tuỳ chỉnh các thông số này. (Ic5b7b)
- Thêm giao diện RadioButtonColors để đại diện cho màu sắc mà RadioButton sử dụng ở các trạng thái khác nhau. Xem RadioButtonConstants.defaultColors() để tuỳ chỉnh màu sắc được sử dụng ở các trạng thái khác nhau. (I74130)
- Thêm giao diện CheckboxColors để biểu thị màu sắc được hộp đánh dấu sử dụng ở nhiều trạng thái. Xem CheckboxConstants.defaultColors() để tuỳ chỉnh màu sắc được sử dụng ở các trạng thái khác nhau. (I7dbdb)
Sửa lỗi
- Những thành phần Material không đặt độ cao dưới dạng zIndex nữa. Điều này có nghĩa là trong cùng một thành phần mẹ, thành phần con có kích thước bóng lớn hơn sẽ không tự động được vẽ lên trên thành phần con có kích thước nhỏ hơn. Nếu bạn vẫn cần hành vi như vậy, vui lòng cài đặt Modifier.zIndex() theo cách thủ công khi cần (I70417, b/170623932)
- Ngừng sử dụng VectorPainter và thay bằng rememberVectorPainter nhằm cho thấy rõ hơn rằng API thành phần kết hợp sử dụng nội bộ "remember" để duy trì dữ liệu trên các cấu trúc (composition). (Ifda43)
- Bật tính năng chuyển đổi trong ComposeTestRule; xoá tuỳ chọn để bật con trỏ nhấp nháy từ ComposeTestRule. (If0de3)
- Thêm tuỳ chọn bàn phím một dòng vào CoreTextField (I72e6d)
- Đổi tên Radius API thành CornerRadius API để thể hiện rõ hơn cách sử dụng API này trong toàn Compose. Tài liệu cập nhật cho biết rằng bán kính góc âm giới hạn được đặt bằng không. (I130c7, b/168762961)
- Vẽ lại DrawScope và
ContentDrawScope thành giao diện
thay vì các lớp trừu tượng
- Đã tạo cách triển khai CanvasDrawScope của DrawScope
- Tái cấu trúc các nội dung triển khai DrawScope để sử dụng CanvasScope thay thế
- Tạo DrawContext để tổng hợp các phần phụ thuộc cho DrawScope
- Xoá các phương thức không dùng nữa trên DrawScope (I56f5e)
- Hộp được tạo một hàm cùng dòng. (Ibce0c, b/155056091)
Phiên bản 1.0.0-alpha05
Ngày 14 tháng 10 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha05
, androidx.compose.material:material-icons-core:1.0.0-alpha05
và androidx.compose.material:material-icons-extended:1.0.0-alpha05
. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.
Các thay đổi về API
- Cửa sổ bật lên và hộp thoại giờ kế thừa FLAG_SECURE từ Cửa sổ gốc. Ngoài ra, chúng tôi cũng thêm tuỳ chọn định cấu hình mục này (I64966, b/143778148, b/143778149)
- Theo mặc định, Modifier.swipeable hiện có ngưỡng 56.dp cho các trạng thái (Iab825, b/168610267)
- tất cả trạng thái của Scaffold được đánh dấu là @Stable. drawerGesturesEnabled trong ScaffoldState đã tự chuyển đến Scaffold. (I36645, b/168297016)
- Xoá loại có tính chất rỗng khỏi tham số lambda của Scaffold, bạn có thể sử dụng emptyContent() để biểu thị không có nội dung cho một tham số nhất định. (I2b318, b/157633857, b/158551084)
Ngừng sử dụng contentColor() API và currentTextStyle() API, thay thế lần lượt bằng các Ambient AmbientContentColor và AmbientTextStyle. Bạn có thể truy cập giá trị hiện tại bằng cách sử dụng
.current
trên thuộc tính môi trường xung quanh, giống như với bất kỳ môi trường xung quanh nào khác. Chúng tôi thực hiện thay đổi này để đảm bảo tính nhất quán và tránh có nhiều cách để thực hiện cùng một việc. Ngoài ra, đổi tên một số thuộc tính không gian xung quanh để mô tả rõ hơn mục đích của các thuộc tính này như sau:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Thêm AmbientElevationOverlay, cho phép tuỳ chỉnh/tắt lớp phủ độ cao mặc định áp dụng cho Surfaces trong giao diện tối. (I5b74d)
Sửa lỗi
- Là một phần của quy trình tiêu chuẩn hoá các giá trị đặt gác cho các lớp nội tuyến, hãy đổi tên Color.Unset thành Color.Unspecified để tạo sự nhất quán với các lớp nội tuyến khác (I97611, b/169797763)
- Ra mắt TextOverflow.None. Khi trình đơn mục bổ sung là Không (None), Văn bản sẽ không xử lý mục bổ sung nữa mà sẽ báo cáo kích thước thực tế vào LayoutNode. (I175c9, b/158830170)
- Đổi tên launchInComposition thành LaunchedTask để phù hợp với các nguyên tắc của Compose API (I99a8e)
- Đổi tên OnPositionedModifier thành OnGloballyPositionedModifier và đổi tên onPositioned() thành onGloballyPositioned(). (I587e8, b/169083903)
Phiên bản 1.0.0-alpha04
Ngày 1 tháng 10 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha04
, androidx.compose.material:material-icons-core:1.0.0-alpha04
và androidx.compose.material:material-icons-extended:1.0.0-alpha04
. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Hiển thị tham số InteractionState trong các thành phần Material có trạng thái, để cho phép chuyển trạng thái lên trên và đọc/kiểm soát trạng thái. (Iaca5f, b/168025711, b/167164434)
- Thay đổi thông số
*color
trên RadioButton và TriStateCheckbox để cho phép tuỳ chỉnh hoàn toàn màu sắc được sử dụng ở mỗi trạng thái, cũng như thay đổi cách màu sắc chuyển động giữa các trạng thái nếu muốn. Hãy xem các hàm màu animateDefault mới* trong CheckboxConstants và RadioButtonConstants để biết thêm thông tin. (I1c532) - Đổi tên rememberBackdropState thành rememberBackdropScaffoldState và thêm một thông số bổ sung cho đồng hồ hoạt ảnh. Đã đổi tên thông số backdropScaffoldState của BackdropScaffold thành scaffoldState. Đã đổi tên BackdropConstants thành BackdropScaffoldConstants. (Ib644d)
- Thêm thành phần BottomSheetScaffold thử nghiệm. (Ie02f0, b/148996320)
- Thêm thành phần ModalBottomSheetLayout thử nghiệm. (Ic209e, b/148996320)
- Đổi tên ButtonConstants/FloatingActionButtonConstants.defaultAnimatedElevation thành defaultElevation và hiện trả về một giá trị Dp thay vì một AnimatedValue. (I5f3ed)
Sửa lỗi
- Cập nhật nhiều API Đồ hoạ
- Cập nhật các API biến đổi tỷ lệ và xoay vòng để sử dụng một tham số Offset duy nhất nhằm biểu thị toạ độ trục thay cho các tham số nổi riêng biệt của các toạ độ x/y trong DrawScope và DrawTransform
- Xoá phương thức Rect.expandToInclude và Rect.join
- Cập nhật tài liệu về Bán kính để hiển thị hình bầu dục ngoài hình elip
- Thêm tài liệu để cho biết hàm khởi tạo công khai cho lớp Radius (Bán kính) cùng dòng sẽ không được gọi trực tiếp, thay vào đó các đối tượng Radius (Bán kính) cần được khởi tạo thông qua hàm khởi tạo hàm
- Xoá các RoundRect API để truy vấn topRight, bottomRight, bottomCenter, v.v.
- Ngừng sử dụng Rect.shift thay vào đó là Rect.translate
- Xoá các API RoundRect.grow và Rect.shrink
- Đổi tên RoundRect.outerRect thành Rect.boundingRect
- Xoá các phương thức RoundRect.middleRect/tallMiddleRect/wideMiddleRect và Rect.isStadium
- Đổi tên RoundRect.longestSide thành RoundRect.maxDimension
- Đổi tên RoundRect.shortestSide thành RoundRect.minDimension
- Thay đổi RoundRect.center thành một thuộc tính thay vì một hàm
- Cập nhật hàm khởi tạo RoundRect để sử dụng các thuộc tính Radius (Bán kính) thay vì các tham số riêng lẻ cho giá trị bán kính x/y
- Xoá các API kích thước giả định đó là một hình chữ nhật với gốc tại điểm 0,0
- Thêm một API phá huỷ vào Radius
- Di chuyển nhiều hàm tiện ích mở rộng RoundRect để trở thành thuộc tính thay thế
- (I8f5c7, b/168762961)
- Ngừng sử dụng foundation.Box. Thay vào đó hãy dùng foundation.layout.Box. (Ie5950, b/167680279)
- Stack đã được đổi tên thành Box Box đã tồn tại trước đây sẽ không được dùng nữa, thay vào đó là Box mới trong compose.foundation.layout. Hành vi của Hộp (Box) mới là các thành phần con xếp chồng lên nhau khi có nhiều thành phần con. Điều này khác với Box trước có hành vi tương tự như Cột (Column). (I94893, b/167680279)
- Ngừng sử dụng các tham số trang trí Hộp (Box). Nếu bạn muốn có nội dung trang trí/khoảng đệm trên hộp, hãy sử dụng Đối tượng sửa đổi (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Cập nhật nhiều API Đồ hoạ
- Cập nhật DrawScope API bằng các phương thức chuyển đổi trong phạm vi để chỉ ra rằng thao tác chuyển đổi chỉ được áp dụng trong lệnh gọi lại và sẽ bị xoá sau khi lệnh gọi lại được gọi
- Cập nhật tài liệu clipPath để tham chiếu đến Đường dẫn thay vì hình chữ nhật tròn
- Khắc phục lỗi khoảng cách trong tài liệu cho tham số bên phải trong clipPath
- Đổi tên DrawScope.drawCanvas thành drawIntoCanvas và xoá tham số kích thước
- Đổi tên các thông số dx/dy trong phương thức phần lồng ghép thành ngang và dọc
- Thêm phương thức nạp chồng phần lồng ghép cung cấp cùng một giá trị phần lồng ghép cho cả 4 giới hạn
- Xoá tài liệu về phương thức lồng ghép cho biết phần lồng ghép sẽ được áp dụng cho cả 4 cạnh
- Cập nhật tài liệu cho lớp Rect
- Cập nhật nhận xét về các tham số Rect để khớp với kiểu kdoc
- Xoá Rect.join và Rect.expandToInclude
- Tạo phương thức nạp chồng cho Rect.translate(offset) và ngừng sử dụng Rect.shift
- (If086a, b/167737376)
- Chúng tôi đã chặn tính năng nhập tĩnh nội dung của phạm vi bố cục (ví dụ: alignWithSiblings trong RowScope). Một phương án thay thế phạm vi rõ ràng nên được sử dụng:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Phiên bản 1.0.0-alpha03
Ngày 16 tháng 9 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha03
, androidx.compose.material:material-icons-core:1.0.0-alpha03
và androidx.compose.material:material-icons-extended:1.0.0-alpha03
. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
- Đổi tên thông số
onSelect
củaBottomNavigationItem
thànhonClick
(I91925, b/161809324) - Thêm tham số InteractionState vào BottomNavigationItem và Tab, cho phép chuyển trạng thái này lên trên và điều chỉnh cách thành phần xuất hiện ở nhiều trạng thái. (Ia3e9e, b/168025711)
- Xoá các thông số
disabledBackgroundColor
vàdisabledContentColor
khỏi nút. Thay vào đó, bạn nên sử dụng các hàm màu mặc định mới bên trong ButtonConstants. Nếu đã đặt rõ ràng contentColor/backgroundColor, bạn nên sử dụng các hàm mặc định này và tuỳ chỉnh một số/tất cả các tham số để tránh ghi đè màu cho cả trạng thái bật/tắt. (If9b52) - Màu nền của Textfield không sử dụng alpha trong suốt một cách ngầm định nữa. Thay vào đó, bất kỳ màu nào được cung cấp qua thông số backgroundColor sẽ được áp dụng trực tiếp. (Iecee9, b/167951441)
- Đổi tên InnerPadding thành PaddingValues. (I195f1, b/167389171)
- Các tham số
resistanceFactorAtMin
vàresistanceFactorAtMax
trongModifier.swipeable
được thay bằng một tham số sức cản. Một phương thứcdefaultResistanceConfig
mới đã được thêm vàoSwipeableConstants
. (I54238) - Thêm tuỳ chọn hỗ trợ độ cao có trạng thái hoạt ảnh cho Button và FloatingActionButton. Giờ đây, độ cao sẽ tạo hiệu ứng ảnh động giữa trạng thái mặc định và trạng thái đã nhấn. Để tuỳ chỉnh độ cao giữa các trạng thái, hãy sử dụng
ButtonConstants.defaultAnimatedElevation()
vàFloatingActionButtonConstants.defaultAnimatedElevation()
thay vì đặt giá trị Dp phẳng trong mọi trường hợp. (I37925) - Nhãn đã trở thành thông số tuỳ chọn bên trong TextField và OutlinedTextField (I267f6, b/162234081)
Sửa lỗi
- Ngừng sử dụng hàm kiểm thử toàn cục như
onNode
hoặcwaitForIdle
. Vui lòng chuyển sang các hàm mới tương đương được xác định trong ComposeTestRule (I7f45a) - Ngừng sử dụng DpConstraints và các API sử dụng hàm giới hạn này. (I90cdb, b/167389835)
- Các thông số minWidth và maxWidth của widthIn đã được đổi tên thành min và max. Tương tự đối với preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
- Xoá các hành động ngữ nghĩa tiến/lùi. Đã thêm các bước trong AccessibilityRangeInfo. (Ia47b0)
- Việc sử dụng trọng lực được đổi tên nhất quán để căn chỉnh hoặc định vị trí trong các API bố cục. (I2421a, b/164077038)
- Thêm onNode và các phương thức chung khác trên ComposeTestRule vì các phương thức chung hiện tại sẽ không được dùng nữa. (Ieae36)
- Di chuyển
createAndroidComposeRule
vàAndroidInputDispatcher
từandroidx.ui.test.android
sangandroidx.ui.test
(Idef08, b/164060572)
Phiên bản 1.0.0-alpha02
Ngày 2 tháng 9 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha02
, androidx.compose.material:material-icons-core:1.0.0-alpha02
và androidx.compose.material:material-icons-extended:1.0.0-alpha02
. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm một thành phần BackdropScaffold thử nghiệm. (Iad908)
Sửa lỗi
- Matrix4 đã được thay thế bằng Matrix. Xoá tất cả các phần khác của gói vectormath. (Ibd665, b/160140398)
Phiên bản 1.0.0-alpha01
Ngày 26 tháng 8 năm 2020
Phát hành androidx.compose.material:material:1.0.0-alpha01
, androidx.compose.material:material-icons-core:1.0.0-alpha01
và androidx.compose.material:material-icons-extended:1.0.0-alpha01
. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.
Vấn đề đã biết
= Không thể xoá ký tự đầu tiên trong trường TextField
của Material bằng cách sử dụng phím Backspace (b/165956313)
Phiên bản 0.1.0-dev
Phiên bản 0.1.0-dev17
Ngày 19 tháng 8 năm 2020
Phát hành androidx.compose.material:material:0.1.0-dev17
, androidx.compose.material:material-icons-core:0.1.0-dev17
và androidx.compose.material:material-icons-extended:0.1.0-dev17
. Phiên bản 0.1.0-dev17 bao gồm các thay đổi sau.
Các thay đổi về API
- Xoá RadioGroup và RadioGroupItems không dùng nữa trước đây. Thay vào đó, hãy sử dụng Row và RadioBotton (I381b7, b/163806637)
- Xoá lệnh gọi lại onFocusChanged khỏi TextField. Thay vào đó, hãy dùng Modifier.focusObserver. (I51089, b/161297615)
- Ngừng sử dụng Modifier.drawBorder. Thay vào đó, hãy dùng Modifier.border. Thay thế lớp dữ liệu đường viền bằng BorderStroke (I4257d, b/158160576)
- Đổi tên một số thuộc tính trong SwipeableState: swipeTarget -> targetValue, swipeProgress -> progress, swipeDirection -> direction. Đã thêm hàm rememberSwipeableState để tạo SwipeableStates. (I2fc9c, b/163129614, b/163132293)
- Đã thêm tính năng hỗ trợ thanh thông báo nhanh kèm theo vị trí và danh sách chờ phù hợp. Truy cập tính năng này thông qua hàm tạm ngưng
SnackbarHostState.showSnackbar
. Ngoài ra:- Đã thêm các thành phần SnackbarHost. Thành phần này lưu trữ các Thanh thông báo nhanh dựa trên trạng thái và chịu trách nhiệm chuyển đổi giữa các thanh thông báo nhanh.
- Thêm SnackbarHostState để cho phép kiểm soát các thanh thông báo nhanh, các nội dung lưu trữ thanh thông báo thanh và tách riêng các thông báo này khỏi ScaffoldState. Bạn cũng có thể truy cập trạng thái này qua
scaffoldState.snackbarHostState
. - Thêm thông tin về phương thức nạp chồng trong thanh thông báo nhanh để hỗ trợ giao diện chung giữa snackbarHostState và thanh thông báo nhanh. (I79aaa)
- Thêm tham số đã bật vào IconButton và sắp xếp lại thứ tự các tham số trong IconToggleButton (I0a941, b/161809385, b/161807956)
- Phiên bản ListItem có API dựa trên chuỗi đã bị xoá. Vui lòng sử dụng phiên bản theo khe. (Ib8f57, b/161804681)
- Xoá thành phần FilledTextField không dùng nữa. Thay vào đó, hãy sử dụng TextField để triển khai Material Design của trường văn bản được tô màu nền. (I5e889)
- AlertDialog hiện sử dụng FlowRow cho các nút (I00ec1, b/161809319, b/143682374)
- Thêm các thông số trong Modifier.swipeable để thay đổi mức độ sức cản khi vuốt qua các giới hạn. Đã xoá thông số [min/max]Value. (I93d98)
- Thêm tham số backgroundColor vào LinearProgressIndicator và xoá khoảng đệm nội bộ khỏi CircularProgressIndicator. Thêm ProgressIndicatorConstants.DefaultProgressAnimationSpec mới có thể được dùng làm AnimationSpec mặc định trong tiến trình tạo ảnh động giữa các giá trị (If38b5, b/161809914, b/161804677)
- Thêm tham số velocityThreshold không bắt buộc vào Modifier.swipeable. (I698ba)
- bottomBarSize, fabSize và thuộc tính khác và không còn sử dụng được trong ScaffoldState. Thay vào đó, hãy sử dụng Modifier.onPosition trên thành phần bạn muốn biết kích thước. Thêm contentColor và các tham số của Đối tượng sửa đổi (Ic6f7b, b/161811485, b/157174382)
- Đổi tên và sắp xếp lại thứ tự một số tham số trong Tab để nhất quán với những API khác (Ia2d12, b/161807532)
- Phân tách TabRow thành TabRow và ScrollableTabRow, xoá isScrollable khỏi TabRow. Đồng thời hiển thị edgePadding trong ScrollableTabRow, cho phép kiểm soát không gian trống trước / sau các thẻ. (I583e8, b/161809544)
- Xoá đối tượng
TabRow
, thay thế bằng đối tượng TabConstants. TabRow.TabPosition đã chuyển sang cấp cao nhất (TabPosition) và indicatorContainer đã được đổi tên thànhindicator
. Hãy xem các ví dụ và tài liệu để biết thông tin chi tiết về cách sử dụng API đã cập nhật và các tuỳ chọn mặc định. (I54d45, b/161809544) - Điều chỉnh tham số ngưỡng trong Modifier.swipeable; giờ đây, tham số này sẽ nhận một cặp trạng thái (loại T) và trả về ngưỡng giữa các trạng thái đó dưới dạng một ThresholdConfig. Thông số dismissThresholds đã được thêm vào SwipeToDismiss. SwipeToDismiss là một biểu thức lambda (DismissDirection) -> ThresholdConfig. (Ie1080)
- Thanh trượt có nhiều màu sắc hơn để tuỳ chỉnh chi tiết hơn (I73e64, b/161810475)
- Đổi tên tham số màu sắc của Card thành backgroundColor (I01fc1, b/161809546)
- Thanh thông báo nhanh hiện có màu nền và nội dung có thể tuỳ chỉnh (I238f2, b/161804381)
- Thêm các tham số tuỳ chỉnh của modifier, backgroundColor, contentColor và scrimColor vào Ngăn (I23655, b/161804378)
- Ngừng sử dụng thành phần kết hợp
state { ... }
và thay bằng các lệnh gọi rõ ràng tớiremember { mutableStateOf(...) }
để đảm bảo sự rõ ràng. Điều này làm giảm giao diện API tổng thể và số lượng khái niệm để quản lý trạng thái, đồng thời khớp với mẫuby mutableStateOf()
theo uỷ quyền thuộc tính của lớp. (Ia5727) - Đổi tên tham số khoảng đệm của nút thành contentPadding (Id252e, b/161809394)
- Thêm thành phần Material thử nghiệm SwipeToDismiss. (I129e5)
Sửa lỗi
- Xoá
onChildPositioned
vàOnChildPositionedModifier
. Thay vào đó, nhà phát triển nên sử dụngonPositioned
vàOnPositionedModifier
trên bố cục con. (I4522e, b/162109766) - Thêm hàm lambda mergePolicy vào SemanticsPropertyKey. Bạn có thể dùng phương thức này để xác định chính sách tuỳ chỉnh cho việc hợp nhất ngữ nghĩa mergeAllDescendants. Chính sách mặc định là sử dụng giá trị thành phần mẹ nếu đã có, nếu không sẽ là giá trị của thành phần con. (Iaf6c4, b/161979921)
- IntSize hiện là lớp nội dòng (I2bf42)
PlacementScope.placeAbsolute()
đã được đổi tên thànhPlacementScope.place()
, cònPlacementScope.place()
trước đó đã được đổi tên thànhPlacementScope.placeRelative()
. Theo đó, phương thứcPlacementScope.place()
sẽ không tự động phản chiếu vị trí theo ngữ cảnh từ phải sang trái nữa. Nếu muốn, hãy sử dụngPlacementScope.placeRelative()
thay thế. (I873ac, b/162916675)- Ngừng sử dụng PxBounds và thay bằng Rect. Đã cập nhật tất cả các cách sử dụng của PxBounds bằng hình chữ nhật và thêm các chú thích không dùng nữa/thay thế phù hợp để hỗ trợ quá trình di chuyển (I37038, b/162627058)
- Đổi tên RRect thành RoundRect để phù hợp hơn với các kiểu đặt tên của Compose. Tạo các hàm khởi tạo tương tự đối với RRect và ngừng sử dụng các hàm khởi tạo hàm RRect (I5d325)
Phiên bản 0.1.0-dev16
Ngày 5 tháng 8 năm 2020
Phát hành androidx.compose.material:material:0.1.0-dev16
, androidx.compose.material:material-icons-core:0.1.0-dev16
và androidx.compose.material:material-icons-extended:0.1.0-dev16
. Phiên bản 0.1.0-dev16 bao gồm các thay đổi sau.
Các thay đổi về API
- Màu sắc hiện là lớp cuối cùng thay vì giao diện. Thay vì mở rộng và cung cấp quy trình triển khai tuỳ chỉnh, bạn nên tạo môi trường xung quanh mới cho đối tượng giao diện tuỳ chỉnh và truy cập vào đối tượng giao diện đó thông qua môi trường xung quanh mới trong các thành phần, tương tự như cách MaterialTheme hoạt động trong nội bộ. (Ibae84)
- Đổi tên ColorPalette thành Colors, để ánh xạ rõ hơn thành hệ thống màu của Material và loại bỏ sự nhầm lẫn trên ColorPalette là đối tượng giao diện 'chung', chẳng hạn như việc triển khai hệ thống màu cụ thể của Material. Ngoài ra, đổi tên lightColorPalette và darkColorPalette lần lượt thành lightColors và darkColors. (I9e976, b/161812111)
- Đổi tên tham số
text
của BottomNavigationItem thànhlabel
,onSelected
thànhonSelect
,activeColor
thànhselectedContentColor
,inactiveColor
thànhunselectedContentColor
và cập nhật thứ tự tham số cho phù hợp với nguyên tắc. (Icb605, b/161809324) Modifier.stateDraggable
đã được làm lại hoàn toàn và đổi tên thành Modifier.swipeable. Ra mắt một lớp SwipeableState mới và tái cấu trúc DrawerState và BottomDrawerState để kế thừa từ nó. [Modal/Bottom]DrawerLayout không còn nhận thông số onStateChange. (I72332, b/148023068)- Gói foundation.shape.corner được làm phẳng thành foundation.share (I46491, b/161887429)
- Đã thêm chú thích ExperimentalMaterialApi. RippleTheme được đánh dấu là Thử nghiệm (Ic5fa0, b/161784800)
- Đổi tên FilledTextField của Material thành TextField và TextField nền tảng thành BaseTextField để giúp người dùng dễ dàng khám phá và sử dụng API mong muốn theo cách đơn giản nhất (Ia6242, b/155482676)
Sửa lỗi
- Ngừng sử dụng OnChildPositioned. Thay vào đó, hãy sử dụng OnPositioned trên thành phần con. (I87f95, b/162109766)
- Khắc phục các bản sửa lỗi API rộng (I077bc)
- Xoá giao diện OffsetBase không sử dụng
- Căn chỉnh các lớp Offset và IntOffset để có một nền tảng API nhất quán
- Đổi tên IntOffset.Origin thành IntOffset.Zero để phù hợp với API Offset
- Chuyển phương thức nativeCanvas ra khỏi giao diện Canvas để hỗ trợ đối tượng sử dụng tạo các thực thể Canvas riêng của họ
- Tạo lớp EmptyCanvas mã giả lập để tái cấu trúc DrawScope thành tham số có giá trị không rỗng thay cho lateinit và đảm bảo tính không rỗng của trường
- Đổi tên enum ClipOp thành PascalCase
- Đổi tên enum FilterQuality thành PascalCase
- Đổi tên enum StrokeJoin thành PascalCase
- Đổi tên enum PointMode thành PascalCase
- Đổi tên enum PaintingStyle thành PascalCase
- Đổi tên enum PathFillType thành PascalCase
- Đổi tên enum StrokeCap thành PascalCase
- Cập nhật quá trình triển khai DrawCache để không còn sử dụng các thông số lateinit
- Đã cập nhật DrawScope để không còn sử dụng tính năng uỷ quyền tải lười cho các thông số nội bộ fillPaint và strokePaint
- Cập nhật thành phần kết hợp Image để tránh sử dụng Box nhằm giảm chi phí
- Cập nhật lớp Outline để có các chú thích @Immutable
- Cập nhật PathNode để có các chú thích @Immutable nhằm biết hướng dẫn cho từng lộ trình
- Cập nhật cấu trúc phụ trong Vector để xoá các lượt kiểm tra có điều kiện dư thừa về tính bình đẳng vì Compose đã xử lý chúng
- Ngừng sử dụng các phương thức hàm khởi tạo đồng hành Rect và thay thế bằng các hàm khởi tạo hàm
- Cập nhật lớp Brush và hàm khởi tạo hàm bằng các API @Immutable và @Stable
- Cập nhật enum VertexMode thành PascalCase
- Cập nhật phương thức DrawScope selectPaint để ghi đè có điều kiện các tham số nét vẽ trên bản vẽ nếu chúng thay đổi
- Cập nhật Kích thước để thêm API giải cấu trúc, đổi tên UnspecifiedSize thành Unspecified và xoá các phương thức không được sử dụng
- Di chuyển hộp thoại đến giao diện người dùng (I47fa6)
- Xoá
SemanticsNodeInteraction.performPartialGesture
. Chuyển sang sử dụngSemanticsNodeInteraction.performGesture
. (Id9b62) - Đổi tên
SemanticsNodeInteraction.getBoundsInRoot()
thànhSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532) - API dành cho tính năng hỗ trợ từ phải sang trái đã được cập nhật. Thêm LayoutDirectionAmbient dùng để đọc và thay đổi hướng bố cục. Xoá Modifier.rtl và Modifier.ltr. (I080b3)
- Đổi tên Modifier.deternimateProgress thành Modifier.progressSemantics (I9c0b4)
- Cập nhật material-icons-extended với các biểu tượng mới nhất được thêm vào Material.io/icons (I4b1d3)
- Yêu cầu chỉ định rõ loại T cho transitionDefinition. (I1aded)
- Ngừng sử dụng Modifier.plus và thay bằng Modifier.then. "Then" có tín hiệu rõ ràng hơn về thứ tự, đồng thời nghiêm cấm nhập
Modifier.padding().background() + anotherModifier
, khiến cho chuỗi bị phá vỡ và khó đọc hơn (Iedd58, b/161529964) - Đổi tên AndroidComposeTestRule thành createAndroidComposeRule. (I70aaf)
- Thêm isFocused() và isNotFocused() SemanticsMatcher. (I0b760)
- Xoá
BaseGestureScope.globalBounds
vì không nên sử dụng các hoạt động kiểm thử này. Sử dụng toạ độ cục bộ cho nút mà bạn đang tương tác. (Ie9b08) - Sửa vị trí cửa sổ bật lên trên màn hình cut-out. (Idd7dd)
- Đổi tên Modifier.drawBackground thành Modifier.background (I13677)
Phiên bản 0.1.0-dev15
Ngày 22 tháng 7 năm 2020
Phát hành androidx.compose.material:material:0.1.0-dev15
, androidx.compose.material:material-icons-core:0.1.0-dev15
và androidx.compose.material:material-icons-extended:0.1.0-dev15
. Phiên bản 0.1.0-dev15 bao gồm các thay đổi sau.
Cập nhật phần phụ thuộc
- Để sử dụng phiên bản
0.1.0-dev15
của Compose, bạn cần cập nhật các phần phụ thuộc theo đoạn mã mới xuất hiện trong phần Khai báo phần phụ thuộc bên trên.
Thay đổi về API
Ngừng sử dụng chú giải
@Model
. Hãy sử dụng trạng thái và mutableStateOf để thay thế. Quyết định ngừng sử dụng này đã được đưa ra sau nhiều cuộc thảo luận cẩn thận.Lý giải
Lý giải bao gồm nhưng không giới hạn trong:
- Giảm diện tích bề mặt API và các khái niệm mà chúng tôi cần hướng dẫn
- Căn chỉnh chặt chẽ hơn với các bộ công cụ so sánh khác (Giao diện người dùng Swift, React, Flutter)
- Quyết định đảo ngược. Chúng tôi luôn có thể mang
@Model
trở lại sau này. - Xoá mức sử dụng corner-case và các câu hỏi khó trả lời về việc định cấu hình
@Model
dưới dạng những việc chúng tôi cần xử lý - Các lớp dữ liệu
@Model
, hàm cân bằng, mã băm, v.v. - Làm thế nào tôi có một số thuộc tính "quan sát được" và các thuộc tính khác thì không?
- Làm thế nào để chỉ định đẳng thức cấu trúc so với đẳng thức tham chiếu được dùng trong nội dung quan sát?
- Giảm "ma thuật" trong hệ thống. Sẽ làm giảm khả năng ai đó cho rằng hệ thống thông minh hơn thực tế (chẳng hạn như tự biết mở rộng danh sách)
- Giúp độ chi tiết của quá trình quan sát trở nên trực quan hơn.
- Cải thiện khả năng tái tạo từ biến -> thuộc tính trên lớp
- Mở ra khả năng tối ưu hoá theo từng Trạng thái được tạo thủ công
- Căn chỉnh phù hợp hơn với phần còn lại của hệ sinh thái và giảm sự mơ hồ đối với thành phần bất biến hoặc chúng ta đang “chấp nhận trạng thái có thể thay đổi”
Ghi chú di chuyển
Hầu như mọi cách sử dụng hiện tại của
@Model
đều được chuyển đổi khá đơn giản theo một trong hai cách. Ví dụ dưới đây có một lớp@Model
chứa hai thuộc tính chỉ để dùng làm ví dụ và lớp này đang được sử dụng trong một thành phần kết hợp.@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
Phương án 1: Sử dụng
State<OriginalClass>
và tạo bản sao.Cách tiếp cận này được thực hiện dễ dàng hơn nhờ các lớp dữ liệu của Kotlin. Về cơ bản, biến tất cả thuộc tính
var
trước đó thành các thuộc tínhval
của một lớp dữ liệu, rồi sử dụngstate
thay vìremember
và gán giá trị trạng thái cho các bản sao chép nhân bản của lớp dữ liệu gốc bằng cách sử dụng phương thức tiện lợicopy(...)
của lớp dữ liệu.Điều quan trọng cần lưu ý là chỉ áp dụng phương pháp này khi các trường hợp đột biến duy nhất đối với lớp đó được thực hiện trong cùng phạm vi mà thực thể
State
được tạo. Nếu lớp tự biến đổi bên ngoài phạm vi sử dụng và bạn đang dựa vào quy trình quan sát đó, thì có thể bạn sẽ muốn áp dụng phương pháp tiếp theo.data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
Lựa chọn 2: Sử dụng mutableStateOf và các đại diện thuộc tính
Phương pháp này trở nên dễ dàng hơn với các đại diện thuộc tính của Kotlin và API
mutableStateOf
. API này cho phép bạn tạo thực thể MutableState ngoài cấu trúc. Về cơ bản, thay thế tất cả các thuộc tínhvar
của lớp ban đầu bằng các thuộc tínhvar
cómutableStateOf
làm đại diện thuộc tính của chúng. Lợi thế của việc này là cách sử dụng lớp này hoàn toàn không thay đổi, mà chỉ thay đổi cách triển khai nội bộ của lớp. Tuy nhiên, hành vi này không hoàn toàn giống với ví dụ ban đầu vì mỗi thuộc tính giờ đây được quan sát/đăng ký riêng lẻ, nên thành phần mà bạn thấy sau khi kết hợp lại có thể hẹp hơn (đây là điều tốt).class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, b/143263925, b/139653744)
Đổi tên lệnh gọi lại onFocusChange trong các trường văn bản thành onFocusChanged (Ida4a1)
Thêm tham số ngưỡng ở stateDraggable để chỉ định ngưỡng giữa các liên kết. Thông số này dùng để đặt ngưỡng 56 dp tại ngăn dưới cùng. Ngoài ra, BottomDrawerLayout hiện sử dụng một giá trị enum riêng biệt là BottomDrawerState. (I533fa)
Xoá Modifier.ripple không dùng nữa trước đây. Hiện tại, đối tượng có thể nhấp sử dụng hiệu ứng gợn sóng làm chỉ báo mặc định (nếu bạn đã thiết lập MaterialTheme {} trong ứng dụng của mình). Vì vậy, trong hầu hết các trường hợp, bạn có thể chỉ cần dùng đối tượng có thể nhấp và sử dụng chỉ báo hiệu ứng gợn sóng mà không cần làm gì thêm. Nếu cần tuỳ chỉnh tham số màu/kích thước/giới hạn cho hiệu ứng gợn sóng, bạn có thể tạo RippleIndication theo cách thủ công và truyền tham số này vào đối tượng có thể nhấp dưới dạng tham số chỉ báo. (I663b2, b/155375067)
Xoá tuỳ chọn ghi đè không dùng nữa của thành phần kết hợp FilledTextField (I7f8f8)
Đổi tên đối tượng Nút (chứa các giá trị mặc định mà hàm Button sử dụng) thành ButtonConstants (I7c5f7, b/159687878)
Ô trống nội dung của Nút giờ đây hoạt động như Hàng (hữu ích khi bạn cần có biểu tượng có văn bản, hãy xem ví dụ về phần Button để biết cách viết Nút) (I0ff10, b/158677863)
Ngừng sử dụng RadioGroup và RadioGroupItem. Sử dụng Box với Modifier.selectable, Hàng và Cột để đặt đúng các lựa chọn radioButton theo thiết kế của bạn (I7f5cf, b/149528535)
Đã thêm trường văn bản có đường viền của Material (I1a518)
Ngừng sử dụng androidx.ui.foundation.TextFieldValue và androidx.ui.input.EditorValue. Ngừng sử dụng cả những thành phần kết hợp TextField, FilledTextField và CoreTextField sử dụng kiểu dữ liệu đó. Vui lòng sử dụng androidx.ui.input.TextFieldValue thay thế (I4066d, b/155211005)
TabRow.TabPosition không chứa vị trí trong Dp, không phải trong IntPx (I34a07, b/158577776)
Thay thế việc sử dụng IntPx bằng Int. Thay thế IntPxPosition bằng IntOffset. Thay thế IntPxSize bằng IntSize. (Ib7b44)
Để thống nhất số lượng lớp được dùng để biểu thị thông tin kích thước, chuẩn hoá mức sử dụng lớp Size (Kích thước) thay vì PxSize. Điều này mang lại lợi ích của một lớp cùng dòng nhằm tận dụng giá trị độ dài để gói 2 giá trị độ chính xác đơn đại diện cho chiều rộng và chiều cao được biểu thị dưới dạng độ chính xác đơn. (Ic0191)
Ngừng sử dụng Modifier.ripple. Hiện tại, đối tượng có thể nhấp sử dụng hiệu ứng gợn sóng làm chỉ báo mặc định (nếu bạn đã thiết lập MaterialTheme {} trong ứng dụng của mình). Vì vậy, trong hầu hết các trường hợp, bạn có thể chỉ cần sử dụng đối tượng có thể nhấp và sử dụng chỉ báo hiệu ứng gợn sóng mà không cần làm gì thêm. Nếu cần tuỳ chỉnh tham số màu/kích thước/giới hạn cho hiệu ứng gợn sóng, bạn có thể tạo RippleIndication theo cách thủ công và chuyển tham số này vào đối tượng có thể nhấp dưới dạng tham số chỉ báo. (I101cd, b/155375067)
Thiết kế lại Scaffold API: một vài tham số đã đổi tên, thêm các tham số mới để tuỳ chỉnh tốt hơn. Đã thêm phương thức getter cho các kích thước truy vấn của Fab, TopBar và BottomBar (I0e7ce)
Thêm thành phần DropdownMenu trong ui-material – một cách triển khai menu Material Design. (I9bb3d)
Cho phép hiển thị/ẩn bàn phím phần mềm thủ công bằng cách sử dụng SoftwareKeyboardController (Ifb9d6, b/155427736)
Modifier.indication đã được thêm vào gói nền tảng. Sử dụng thành phần này để hiển thị chỉ báo nhấn/kéo hay chỉ báo khác trên các thành phần tương tác tuỳ chỉnh (I8425f, b/155287131)
Thống nhất việc triển khai CanvasScope để chỉ có DrawScope và ContentDrawScope Đổi tên CanvasScope thành DrawScope. Cập nhật DrawScope để triển khai giao diện Mật độ (Density) và cung cấp LayoutDirection. Xoá lớp con DrawScope trong ContentDrawScope. Painter và PainterModifier đã được cập nhật để ngừng duy trì thuộc tính RTL vì DrawScope đã cung cấp thuộc tính này nên không cần cung cấp theo cách thủ công (I1798e)
Đổi tên Emphasis.emphasize() thành Emphasis.applyEmphasis() (Iceebe)
Các nút đã tắt giờ đây tuân theo thông số kỹ thuật của Material Design (I47dcb, b/155076924)
FilledTextField nhận thao tác ime, chuyển đổi hình ảnh và hỗ trợ loại bàn phím (I1f9cf, b/155075201)
Thêm tham số strokeWidth vào CircularProgressIndicator để tuỳ chỉnh kích thước nét vẽ. Để thay đổi kích thước nét vẽ (chiều cao) của LinearProgressIndicator, bạn có thể dùng Modifier.preferredHeight() hoặc đối tượng sửa đổi kích thước khác. (Icea16, b/154919081)
Thêm tham số strokeWidth vào CircularProgressIndicator để tuỳ chỉnh kích thước nét vẽ. Để thay đổi kích thước nét vẽ (chiều cao) của LinearProgressIndicator, bạn có thể dùng Modifier.preferredHeight() hoặc đối tượng sửa đổi kích thước khác. (Icea16, b/154919081)
Thêm API ô trống cho biểu tượng ở đầu và ở cuối trong trường FilledTextField và xử lý trạng thái lỗi (Ic12e0)
Màu mặc định của FAB và FAB mở rộng được mở rộng đã được thay đổi thành MaterialTheme.colors.secondary. (I3b9b9, b/154118816)
Thay thế tất cả Color (Màu) có thể nhận giá trị rỗng trong API bằng Color (Màu) không nhận giá trị rỗng và sử dụng Color.Unset thay cho giá trị rỗng (Iabaa7)
Đổi tên EdgeInsets thành InnerPadding. Đổi tên tham số innerPadding của các Nút Material thành khoảng đệm. (I66165)
Thanh trượt hiện không có trạng thái. Người dùng sẽ cần tự chuyển và cập nhật trạng thái, giống như trong các tuỳ chọn kiểm soát khác. (Ia00aa)
Đã xoá StaticDrawer. Nếu cần, hãy sử dụng Box có chiều rộng của material-spec'ed thay thế (I244a7)
Bổ sung cách triển khai Material Design của Trường văn bản được tô màu nền (Ic75cd)
Thêm tham số đối tượng sửa đổi vào ListItem và sắp xếp lại các tham số để tăng cấp phần nội dung lambda ở cuối (I66e21)
Thêm tham số hàm khởi tạo defaultFontFamily vào Kiểu chữ, cho phép chỉ định bộ phông chữ mặc định sẽ được dùng cho bất kỳ TextStyles nào đã cung cấp chưa đặt bộ phông chữ. (I89d07)
Tạm thời xoá Bảng dữ liệu Material khỏi khu vực API. (Iaea61)
Đổi tên thông số trong thành phần kết hợp Divider (Ic4373)
thành phần con cháu (Ia6d19)
Xoá MaterialTheme.emphasisLevels, thay vào đó hãy sử dụng EmphasisAmbient.current để truy xuất các mức độ nhấn mạnh (Ib5e40)
Hệ thống sắp xếp theo chủ đề hình dạng được cập nhật theo thông số kỹ thuật của Material Design. Giờ đây, bạn có thể cung cấp các hình dạng nhỏ, vừa và lớn để hầu hết các thành phần đều có thể sử dụng (Ifb4d1)
Thay đổi MaterialTheme API như MaterialTheme.colors(), MaterialTheme.typography() thành các thuộc tính thay vì các hàm. Xoá dấu ngoặc đơn khỏi các lệnh gọi hiện có, dự kiến không có thay đổi về hành vi. (I3565a)
Tái cấu trúc FloatingActionButton API để chấp nhận các biểu thức lambda của thành phần kết hợp thay vì thuộc tính gốc. Xem mẫu đã cập nhật để biết thông tin về cách sử dụng. (I00622)
Thêm tham số
enabled
vào Hộp đánh dấu, Nút chuyển và Có thể bật tắt (I41c16)Ripple hiện là một Công cụ sửa đổi. Mặc dù Clickable chưa được chuyển đổi, cách sử dụng đề xuất là
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)Nền tảng và Thẻ đã được di chuyển từ androidx.ui.material.surface sang androidx.ui.material (I88a6d, b/150863888)
Button, FloatingActionButton và Clickable hiện có tham số
enabled
riêng biệt. Một số thông số trên Button (Nút) đã được đổi tên hoặc sắp xếp lại. (I54b5a)Đổi tên Image thành ImageAsset để phân biệt rõ hơn sự khác biệt giữa dữ liệu Image và thành phần kết hợp sắp tới của Image được dùng để tham gia vào bố cục và vẽ nội dung. _Body: Tạo phương thức mở rộng trên android.graphics.Bitmap, Bitmap.asImageAsset(), để tạo một phiên bản của ImageAsset hữu ích cho việc kết hợp hoạt động phát triển ứng dụng Android truyền thống với khung Compose (Id5bbd)
Xoá API thanh thông báo nhanh có thông số Chuỗi và thay thế bằng việc sử dụng phương thức nạp chồng chấp nhận biểu thức lambda của thành phần kết hợp. Xem các mẫu mới cập nhật để biết thông tin sử dụng (I55f80)
Tái cấu trúc API Tab để chấp nhận biểu thức lambda
text
vàicon
, (Ia057e)Thêm thành phần BottomNavigation, xem tài liệu và ví dụ để biết thông tin sử dụng (I731a0)
Thêm Icon, IconButton và IconSwitchButton, đang xoá AppBarIcon. Bạn có thể trực tiếp thay thế các cách sử dụng hiện có của AppBarIcon bằng IconButton, và chúng hiện sẽ có đích nhấn chính xác. Xem các mẫu thông tin sử dụng và xem Biểu tượng cho các Biểu tượng Material được cung cấp mà bạn có thể sử dụng trực tiếp với các thành phần này. (I96849)
Thay thế ButtonStyle bằng các chức năng riêng biệt và xoá phương thức nạp chồng (chuỗi) văn bản. Xem mẫu đã cập nhật để biết thông tin về cách sử dụng. (If63ab, b/146478620, b/146482131)
đổi tên công cụ sửa đổi
Border
thànhDrawBorder
(I8ffcc)LayoutCoordinates không còn có thuộc tính vị trí. Thuộc tính vị trí không hợp lý khi xem xét LayoutModifiers, xoay vòng hoặc chuyển tỷ lệ. Thay vào đó, nhà phát triển nên sử dụng parentCoordinates và childToLocal() để tính toán lượt chuyển đổi từ một LayoutCoordinate sang một chế độ khác.
LayoutCoordinates sử dụng IntPxSize cho thuộc tính kích thước thay vì PxSize. Do bố cục dùng kích thước pixel số nguyên nên tất cả các kích thước bố cục phải dùng số nguyên và không dùng giá trị dấu phẩy động. (I9367b)
Thay đổi có thể gây lỗi đối với API môi trường xung quanh. Hãy xem nhật ký và tài liệu
Ambient<T>
để biết thông tin chi tiết (I4c7ee, b/143769776)Đã thêm thành phần Scaffold Material Các nội dung triển khai Scaffold (I7731b)
Thay thế DrawBorder bằng Đối tượng sửa đổi Đường viền (Id335a)
Sửa lỗi
- Ngừng sử dụng FocusModifier và thay bằng Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. Ngừng sử dụng FocusState và FocusDetailedState, thay vào đó là FocusState2 (I46919, b/160822875, b/160922136)
- Ngừng sử dụng VerticalScroller và HoriziontalScroller. Sử dụng ScrollableColumn và ScrollableRow để tạo trải nghiệm tích hợp với hoạt động và tham số Columm/Row (Cột/Hàng) hoặc Modifier.verticalScroll và Modifier.horizontalScroll trên phần tử của riêng bạn. Tương tự, ScrollerPosition không còn được dùng nữa và thay vào đó là ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- Thiết kế lại các API Modifier.draggable và Modifier.scrollable. DragDirection đã bị xoá, thay vào đó là Hướng. Đơn giản hoá trạng thái cần thiết cho thành phần có thể cuộn. ScrollableState được đổi tên thành ScrollableController (Iab63c, b/149460415)
runOnIdleCompose
đã được đổi tên thànhrunOnIdle
(I83607)- Các thuộc tính ngữ nghĩa một giá trị hiện sử dụng kiểu gọi. Ví dụ: 'semantics { hidden = true }' hiện được viết dưới dạng: 'semantics { hidden() }'. (Ic1afd, b/145951226, b/145955412)
- Đổi tên một số API kiểm thử để mang tính trực quan hơn. Tất cả các API findXYZ được đổi tên thành onNodeXYZ. Tất cả các API doXYZ được đổi tên thành performXYZ. (I7f164)
- Thay đổi Transition API để trả về một TransitionState thay vì truyền TransitionState sang các thành phần con. Điều này giúp API nhất quán hơn với các API animate(). (I24e38)
- Một lớp đơn vị IntBounds đã được thêm vào, đại diện cho các giới hạn pixel số nguyên từ bố cục. Cập nhật API của PopupPositionProvider. (I0d8d0, b/159596546)
- Một cờ useUnmergedTree tuỳ chọn mới được thêm vào trình tìm kiếm thử nghiệm. (I2ce48)
- Xoá các API kiểm thử kích thước lỗi thời. (Iba0a0)
- Xoá lớp cùng dòng Shader gói lớp dự kiến NativeShader Đổi tên NativeShader thành Shader. Lớp cùng dòng Shader được gói không thêm bất cứ giá trị vào nền tảng API và là một lớp cùng dòng, vì vậy hãy sử dụng lớp NativeShader trực tiếp. (I25e4d)
- Cửa sổ bật lên, Hộp thoại và Trình đơn hiện kế thừa MaterialTheme theo ngữ cảnh (Ia3665, b/156527485)
- Material DropdownMenu hiện có thể cuộn được. (Ide699)
- Xoá tham số hướng bố cục khỏi khối đo lường của hàm Layout(). Tuy nhiên, bạn có thể dùng hướng bố cục bên trong lệnh gọi lại thông qua đối tượng phạm vi đo lường (Ic7d9d)
- Sử dụng AnimationSpec thay vì AnimationBuilder trong các API cấp cao nhất để làm rõ khái niệm về thông số kỹ thuật của ảnh động tĩnh – Cải thiện chuyển đổi DSL bằng cách xoá yêu cầu hàm lambda để tạo AnimationSpecs như tween, spring. Thay vào đó, chúng trực tiếp lấy các tham số của hàm khởi tạo. – Cải thiện khả năng dễ sử dụng tổng thể của AnimationSpec khi mở các hàm khởi tạo thay vì dựa vào trình tạo – Thay đổi thời lượng và độ trễ cho KeyFrames và Tween thành Int. Việc này sẽ loại bỏ các phương thức truyền không cần thiết và các phương thức nạp chồng (để hỗ trợ cả Long và Int). (Ica0b4)
- Giờ đây, nút chuyển xuất hiện ở trạng thái tắt khi
enabled
được đặt thành false (If4624, b/155941869, b/159331694) - Đổi tên Modifier.tag thành Modifier.layoutId để tránh nhầm lẫn với Modifier.testTag. (I995f0)
- Vị trí Int dòng Căn chỉnh được trả về từ Placeable#get(AlignmentLine) hiện không rỗng. Nếu dòng căn chỉnh được truy vấn bị thiếu, AlignmentLine.Unspecified sẽ được trả về. (I896c5, b/158134875)
Tái cấu trúc lớp Bán kính để trở thành một lớp cùng dòng. Xoá các phương thức tạo đồng hành để dùng hàm khởi tạo hàm với tham số mặc định để bán kính dọc theo trục y khớp với bán kính của tham số bán kính trục x bắt buộc.
Cập nhật DrawScope.drawRoundRect để sử dụng một tham số Radius (Bán kính) duy nhất thay vì 2 giá trị số thực dấu phẩy động riêng biệt cho bán kính dọc theo trục x và trục y (I46d1b)
Để thống nhất số lượng lớp được dùng dể biểu thị thông tin vị trí, chuẩn hoá việc sử dụng lớp Offset thay vì PxPosition. Điều này mang lại lợi ích của một lớp cùng dòng nhằm tận dụng giá trị độ dài để gói 2 giá trị độ chính xác đơn đại diện cho độ dời x và y được biểu thị dưới dạng giá trị độ chính xác đơn. (I3ad98)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel Xoá toàn bộ lớp Px (I3ff33)
Ngừng sử dụng thành phần có thể chuyển đổi. Thay vào đó, hãy sử dụng Modifier.toggleable (I35220, b/157642842)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I086f4)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (Id3434)
Thay thế việc sử dụng lớp Px trong nhiều lớp compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại Dp và loại dữ liệu gốc cho các tham số pixel (I97a5a)
Sửa onClick không được gọi cho DropdonMenuItems. (I3998b, b/157673259)
Ngừng sử dụng MutuallyExclusiveSetItem. Thay vào đó, hãy sử dụng Modifier.selectable. (I02b47, b/157642842)
Ngừng sử dụng TestTag. Thay vào đó, hãy sử dụng Modifier.testTag. (If5110, b/157173105)
Con trỏ của TextField có một ảnh động nhấp nháy (Id10a7)
Thay thế việc sử dụng lớp Px trong nhiều lớp kết hợp như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại gốc và Dp cho các tham số pixel (I19d02)
VerticalScroller hiện cung cấp tính năng Cột ngay từ đầu. HorizontalScroller hiện cung cấp tính năng Hàng ngay từ đầu. (Ieca5d, b/157020670)
Thay thế việc sử dụng lớp Px trong nhiều lớp kết hợp như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại gốc và Dp cho các tham số pixel (Iede0b)
Sử dụng Modifier.semantics để cho phép sử dụng các thành phần cấp cao. (I4cfdc)
Thay đổi api đối tượng sửa đổi DrawLayer: đổi tên outlineShape thành hình dạng (shape) và có giá trị RectangleShape mặc định, cũng như giờ đây không còn nhận giá trị rỗng; đổi tên clipToOutline thành clip; xoá clipToBounds vì hàm này giống với clip == true với RectangleShape (I7ef11, b/155075735)
Cập nhật các API Compose lên cấp cao hơn để hiển thị CanvasScope thay cho Canvas. Việc này giúp người sử dụng không cần phải duy trì các đối tượng Paint của họ. Đối với những người sử dụng vẫn yêu cầu quyền truy cập vào Canvas, họ có thể dùng phương thức mở rộng drawCanvas. Phương thức này cung cấp một lệnh gọi lại để tạo ra một lệnh vẽ cho Canvas cơ bản. (I80afd)
Ngừng sử dụng thành phần kết hợp AlignmentLineOffset, thay vào đó, hãy sử dụng đối tượng sửa đổi relativePaddingFrom(). Xoá thành phần kết hợp CenterAlignmentLine. (I60107)
Thay đổi API hàm lambda ở cuối WithConstraints. Giờ đây, thay vì 2 tham số, giao diện này có phạm vi trình tiếp nhận bên cạnh các giới hạn và layoutDirection cung cấp thuộc tính minWidth, maxWidth, minHeight và maxHeight ở dạng Dp (I91b9a, b/149979702)
Thêm đối tượng sửa đổi bố cục defaultMinSizeConstraints. Đối tượng này đặt giới hạn kích thước thành bố cục bao bọc chỉ khi các giới hạn tương ứng sắp tới không được chỉ định (0 cho giới hạn tối thiểu và vô hạn (infinity) cho giới hạn tối đa). (I311ea, b/150460257)
FocusManagerAmbient đã bị xoá. Sử dụng FocusModifier.requestFocus để lấy tiêu điểm. (Ic4826)
Tạo API CanvasScope bao gồm một đối tượng Canvas để hiển thị khu vực API bản vẽ không có trạng thái, có thể khai báo. Các chuyển đổi nằm trong phạm vi trình thu nhận riêng và thông tin kích thước cũng nằm trong giới hạn lồng ghép tương ứng. Nó không yêu cầu người dùng duy trì đối tượng trạng thái Paint của riêng mình để định cấu hình các hoạt động vẽ.
Thêm CanvasScopeSample cũng như cập nhật ứng dụng minh hoạ để đưa vào bản minh hoạ đồ hoạ khai báo (Ifd86d)
Thêm tuỳ chỉnh màu con trỏ vào TextField (I6e33f)
TextFieldValue được sử dụng với TextField hiện có thể là hoạt động giải trí tồn tại khi được sử dụng như sau:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Đổi tên LayoutModifier2 thành LayoutModifier. (Id29f3)
Xoá giao diện LayoutModifier không dùng nữa. (I2a9d6)
Thay thế thông số CoreTextField/TextField focusIdentifier bằng FocusNode để tích hợp với hệ thống con lấy tiêu điểm. (I7ea48)
Các hàm đo lường nội tại trong Layout và LayoutModifier2 có trình tiếp nhận IntrinsicMeasureScope hiện cung cấp API truy vấn nội tại với hướng bố cục được truyền ngầm. (Id9945)
Thêm Modifier.zIndex() mới để kiểm soát thứ tự vẽ của các thành phần con trong cùng một bố cục mẹ. Thuộc tính elevation (nâng độ cao) trên DrawLayerModifier được đổi tên thành shadowElevation và không kiểm soát thứ tự bản vẽ nữa. Thứ tự thông số cho chỉ số DrawShadow thay đổi: độ cao hiện tại là độ cao đầu tiên và hình dạng là hình dạng thứ hai với giá trị mặc định của RectangleShape. (I20150, b/152417501)
Chuyển RectangleShape từ androidx.ui.foundation.shape.* sang androidx.ui.graphics.* (Ia74d5, b/154507984)
Cập nhật API TextField - đã hợp nhất các lệnh gọi lại onFocus và onBlur thành một lệnh gọi lại onFocusChange(Boolean) duy nhất với các thông số (I66cd3)
Thêm các tham số verticalGravity và horizontalGravity vào Hàng và Cột tương ứng. (I7dc5a)
Cập nhật wrapContentWidth và wrapContentHeight để kỳ vọng Căn chỉnh dọc hoặc ngang thay vì bất kỳ Căn chỉnh nào. Cập nhật đối tượng sửa đổi trọng lực để chấp nhận Căn chỉnh dọc hoặc ngang. Hàng, Cột và Ngăn xếp được cập nhật để hỗ trợ Căn chỉnh liên tục tuỳ chỉnh. (Ib0728)
Tạo API PixelMap để hỗ trợ truy vấn thông tin pixel từ ImageAsset. (I69ad6)
Xoá ProvideContentColor, thay vào đó chỉ cần sử dụng ContentColorAmbient trực tiếp với
Providers
(Iee942)Mô-đun ui-text-compose được đổi tên thành ui-text. ui-text hiện chứa các thành phần kết hợp CoreText và CoreTextField (Ib7d47)
mô-đun ui-text được đổi tên thành ui-text-core (I57dec)
Di chuyển các thành phần kết hợp ui-framework/CoreText, CoreTextField trong ui-text-compose. Bạn có thể muốn bao gồm thành phần kết hợp ui-text-compose trong dự án của mình. (I32042)
Cải thiện API DrawModifier:
- Tạo phạm vi của trình thu nhận cho draw() ContentDrawScope
- Xoá mọi tham số trên draw()
- DrawScope có giao diện giống như CanvasScope cũ
- ContentDrawScope có phương thức drawContent() (Ibaced, b/152919067)
runOnIdleCompose
vàrunOnUiThread
hiện là các hàm chung chứ không phải phương thức trên ComposeTestRule. (Icbe8f)Chuyển các toán tử uỷ quyền thuộc tính [Mutable]State sang phần mở rộng để hỗ trợ tính năng tối ưu hoá uỷ quyền thuộc tính Kotlin 1.4. Phương thức gọi phải thêm mục nhập để tiếp tục sử dụng
by state { ... }
hoặcby mutableStateOf(...)
. (I5312c)Thêm positionInParent và boundsInParent cho LayoutCoordinates. (Icacdd, b/152735784)
Ngừng sử dụng ColoredRect. Thay vào đó, hãy sử dụng Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
Đổi tên LayoutResult thành MeasureResult. (Id8c68)
Thêm LayoutModifier2 – một API mới để xác định đối tượng sửa đổi bố cục; ngừng sử dụng LayoutModifier (If32ac)
Thay thế Đối tượng sửa đổi cùng với toán tử bằng các hàm mở rộng nhà máy (I225e4)
Thành phần Draggable chuyển sang công cụ sửa đổi (Id9b16, b/151959544)
Ngừng sử dụng thành phần kết hợp ParentData. Bạn nên tạo một đối tượng sửa đổi có triển khai giao diện ParentDataModifier hoặc sử dụng đối tượng sửa đổi LayoutTag nếu bạn chỉ cần gắn thẻ thành phần con của bố cục để nhận dạng chúng bên trong khối đo lường. (I51368, b/150953183)
Ngừng sử dụng thành phần kết hợp Center. Bạn có thể thay thế cấu trúc này bằng đối tượng sửa đổi LayoutSize.Fill + LayoutAlign.Center, hoặc với một trong các thành phần kết hợp Box hoặc Stack với các đối tượng sửa đổi thích hợp (Idf5e0)
Thêm VectorPainter API để thay thế API thành phần phụ hiện có cho đồ hoạ vectơ. Kết quả của thành phần phụ là một đối tượng của VectorPainter thay vì DrawModifier. Ngừng sử dụng các thành phần kết hợp trước đây của DrawVector và thay bằng VectorPainter.
Đổi tên Image(Painter) API thành thành phần kết hợp vectơ tạo bằng PaintBox(Painter) như thành phần kết hợp Image, ngoại trừ VectorAsset thay vì ImageAsset (I9af9a, b/149030271)
Đổi tên LayoutFlexible thành LayoutWeight. Đổi tên thông số chặt chẽ để điền. (If4738)
Xoá RepaintBoundary và thay bằng DrawLayerModifier (I00aa4)
Thay đổi DrawVector từ một hàm có khả năng kết hợp thông thường thành hàm trả về một Đối tượng sửa đổi drawVector() sẽ vẽ vectơ làm nền cho bố cục. (I7b8e0)
Thay thế hàm có khả năng kết hợp Opacity thành đối tượng sửa đổi drawOpacity. (I5fb62)
Thay thế hàm có khả năng kết hợp Clip bằng đối tượng sửa đổi drawClip(). DrawClipToBounds là một đối tượng sửa đổi thuận tiện để sử dụng khi bạn chỉ cần phân tách các ranh giới của lớp bằng một hình chữ nhật. (If28eb)
Thay thế hàm có thể kết hợp DrawShadow bằng đối tượng sửa đổi drawShadow(). Shadows hiện đang được vẽ như một phần của LayerModifier. (I0317a)
Đã thêm LayerModifier, một công cụ sửa đổi cho phép thêm RenderNode vào một Bố cục. Chế độ này cho phép cài đặt đoạn cắt, độ mờ, xoay, chia tỷ lệ và bóng. Thao tác này sẽ thay thế RepaintBoundary. (I7100d, b/150774014)
androidx.compose.ViewComposer được chuyển sang androidx.ui.node.UiComposer androidx.compose.Emittable đã được xoá. Nội dung này dư thừa so với ComponentNode. Xoá androidx.compose.ViewAdapters. Chúng không còn là trường hợp sử dụng được hỗ trợ. Ngừng sử dụng Compose.composeInto. Thay vào đó, hãy sử dụng
setContent
hoặcsetViewContent
. Ngừng sử dụng Compose.disposeComposition. Thay vào đó, hãy sử dụng phương thứcdispose
trênComposition
đượcsetContent
trả về. androidx.compose.Compose.subcomposeInto đã được chuyển sang androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt đã được đổi tên thành ComponentNode#insertAt. ComponentNode#emitRemoveAt đã được đổi tên thành ComponentNode#removeAt. ComponentNode#emitMode đã được đổi tên thành ComponentNode#move (Idef00)Tạo thành phần kết hợp Hình ảnh để xử lý kích thước/bố cục bên cạnh việc vẽ một thành phần ImageAsset đã xác định cho màn hình. Thành phần kết hợp này cũng hỗ trợ vẽ mọi phiên bản Painter tuỳ ý tôn trọng kích thước nội tại của nó cũng như hỗ trợ kích thước cố định hoặc kích thước tối thiểu nhất định (Ibcc8f)
Ngừng sử dụng thành phần kết hợp Wrap. Có thể thay thế thành phần này bằng đối tượng sửa đổi LayoutAlign hoặc bằng thành phần kết hợp Stack (Ib237f)
WithConstraints đã nhận tham số LayoutDirection (I6d6f7)
Làm cho hướng bố cục được truyền từ nút bố cục mẹ đến nút bố cục con. Thêm công cụ sửa đổi hướng bố cục. (I3d955)
Thành phần Ngăn xếp hỗ trợ hướng từ phải sang trái (Ic9e00)
Xoá thành phần kết hợp DrawShape. Thay vào đó, hãy sử dụng công cụ sửa đổi DrawBackground. (I7ceb2)
Hỗ trợ chỉ hướng từ phải sang trái trong đối tượng sửa đổi LayoutPadding (I9e8da)
Thêm AdapterList – một thành phần danh sách dạng cuộn chỉ kết hợp và sắp xếp các mục hiển thị. Các vấn đề hiện đã biết bao gồm cả lỗi chỉ theo chiều dọc và không xử lý hết mọi trường hợp thay đổi đối với thư mục con. (Ib351b)
Cập nhật cờ
ComposeFlags.COMPOSER_PARAM
thànhtrue
. Việc này sẽ thay đổi chiến lược tạo mã cho trình bổ trợ compose. Ở cấp độ cao, việc này tạo ra các hàm có khả năng kết hợp kèm theo tham số tổng hợp bổ sung. Tham số này được truyền đến các lệnh gọi @Composable tiếp theo để thời gian chạy quản lý quy trình thực thi một cách chính xác. Đây là thay đổi tệp nhị phân có thể gây lỗi nghiêm trọng, nhưng sẽ duy trì khả năng tương thích ở cấp độ nguồn trong tất cả mức sử dụng được cho phép của Compose. (I7971c)Thêm thành phần Canvas. Thành phần kết hợp này có một số kích thước (do người dùng cung cấp) và cho phép bạn vẽ bằng CanvasScope (I0d622)
Density và DensityScope đã được hợp nhất thành một giao diện. Bạn hiện có thể sử dụng DensityAmbient.current thay vì ambientDensity(). Sử dụng with(density) thay cho withDensity(density) (I11cb1)
Thay đổi LayoutCoordinates để biến providedAlignmentLines thành một Tập hợp thay vì một Bản đồ và để LayoutCoordinates triển khai toán tử get() thay vì truy xuất giá trị. Điều này giúp các đối tượng sửa đổi dễ dàng thay đổi một hoặc nhiều giá trị của tập hợp hơn mà không tạo ra một tập hợp mới cho từng đối tượng sửa đổi. (I0245a)
Các trình cuộn hiện hiển thị nội dung chuyển động vuốt nhanh của Android. (I922af, b/147493715)
Cải tiến khu vực API của Giới hạn (Constraints) (I0fd15)