Giao diện người dùng Compose
androidx.Comose.ui
androidx.Comose.ui.geometry
androidx.Comose.ui.graphics
androidx.Comose.ui.platform
androidx.Comose.ui.test
(Xem tài liệu tham khảo về API cho tất cả các gói 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 7 tháng 8 năm 2024 | 1.6.8 | - | 1.7.0-beta07 | - |
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.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } 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.7
Phiên bản 1.7.0-beta07
Ngày 7 tháng 8 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-beta07
. Phiên bản 1.7.0-beta07 bao gồm các thay đổi sau.
Sửa lỗi
- Giờ đây, các hàm
SemanticsNodeInteraction
liên quan đến phương thức nhập văn bảnperformTextReplacement
,performTextInput
vàperformTextClearance
sẽ gửi lỗi xác nhận khi chúng được gọi trênTextFields
. (I4ae8f)
Phiên bản 1.7.0-beta06
Ngày 24 tháng 7 năm 2024
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*:1.7.0-beta05
. Phiên bản 1.7.0-beta05 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi trong đó việc thay đổi bàn phím phần mềm sẽ khiến
TextField
không nhận dữ liệu nhập từ bàn phím mới cho đến khi tiêu điểm bị mất và lấy lại. - Khắc phục vấn đề cố gắng lưu giữ nội dung của lớp sẽ gây ra các tác dụng phụ không mong muốn khi kết xuất với nội dung
SurfaceView
.
Phiên bản 1.7.0-beta04
Ngày 26 tháng 6 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-beta04
. Phiên bản 1.7.0-beta04 bao gồm các thay đổi sau.
Sửa lỗi
- Tránh sự cố khi đo lường các dòng văn bản rất lớn (ví dụ: 10 nghìn ký tự) (8157ab)
- Tắt tính năng hỗ trợ kết xuất phần mềm cho API
GraphicsLayer
. (35ddd8) - Khắc phục sự cố trong logic cố định lớp. (70b13e)
- Việc sử dụng lại tối ưu hóa đối tượng lớp đã bị hoàn nguyên do gây ra sự cố kết xuất. (70b13e)
Phiên bản 1.7.0-beta03
Ngày 12 tháng 6 năm 2024
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*:1.7.0-beta02
. Phiên bản 1.7.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Đổi tên
SemanticsProperties.Editable
thànhIsEditable
và thay đổiSemanticsPropertyReceiver.editable
thành valisEditable
. Thuộc tính hiện là một boolean và luôn được chỉ định bởi các trường văn bản. (I8acd8) - Đổi tên thông số điểm chuẩn hỗ trợ tiếp cận. (I3d440)
- Cập nhật API để tạo kiểu cho các đường liên kết:
TextLinkStyles
hiện là một phần của hàm khởi tạoLinkAnnotation
và phương thứcAnnotatedString.fromHtml
(I90b2b). Đồng thời, xoáTextDefaults
khỏi material (I5477b)
Sửa lỗi
- Đổi tên
LayoutCoordinates.introducesFrameOfReference
thànhLayoutCoordinates.introducesMotionFrameOfReference
để phản ánh chính xác hơn mục đích của lệnh này. Đổi tên hàm có liên quan để tính toán toạ độ dựa trên cờ đó. (I3a330)
Phiên bản 1.7.0-beta01
Ngày 14 tháng 5 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-beta01
. Phiên bản 1.7.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Đổi tên
performCustomAccessibilityActionLabelled
thànhperformCustomAccessibilityActionWithLabel
vàperformCustomAccessibilityActionWhere
thànhperformCustomAccessibilityActionWithLabelMatching
. (I5387f) AnnotatedString.hasEqualsAnnotations
hiện làhasEqualAnnotations
(I685c0)- Cập nhật API để nhận đường liên kết theo chủ đề Material ở dạng văn bản. Cụ thể, hãy xoá các phương thức khỏi
TextDefaults
để tạoLinkAnnotations
theo chủ đề và phân tích cú pháp HTML có 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 Text (Văn bản). (I31b93)
Sửa lỗi
- Khắc phục các trường hợp sử dụng khác khi tự động thêm đối tượng sửa đổi nhập con trỏ trong các sự kiện 63e1504
Phiên bản 1.7.0-alpha08
Ngày 1 tháng 5 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha08
. Phiên bản 1.7.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm tính năng hỗ trợ cho việc triển khai hình dạng có thể thay đổi.
Shape#createOutline
hiện được quan sát bên trong các lớp đồ hoạ, vì vậy, việc đọc các giá trị trạng thái bên trong sẽ gây ra hiệu lực không hợp lệ khi trạng thái thay đổi, cho phép các ảnh động hình dạng có hiệu suất cao hơn. (Id1629, b/326070216) - Đổi tên
isPositionedByParentWithDirectManipulation
thànhintroducesFrameOfReference
. Xin lưu ý rằng công cụ này hiện có hiệu ứng ngược, nghĩa là theo mặc định, hầu hếtLayoutCoordinates
đều đưa ra một khung tham chiếu và chỉ khi đặt dưới chế độ thao túng trực tiếp thì thuộc tính mới có giá trị false (sai). Để truy vấn vị trí chỉ với những truy vấn giới thiệu hệ quy chiếu, hãy sử dụngpositionInLocalFrameOfReference(...)
. HoặcpositionInLocalLookaheadFrameOfReference
quaLookaheadScope
. (Ifc5f7) - Các API
LookaheadScope
đã được ổn định (I21507) - Thay đổi hàm lambda hành động cho
getScrollViewportLength
theo ý kiến phản hồi của hội đồng API. (Ibc74a) - Cập nhật các API phác thảo
GraphicsLayer
để sử dụng tham số độ chính xác đơn thay vì số nguyên. Xoá các giá trị trọng điểmUnsetOffset/UnsetSize IntSize
để chuyển sang sử dụng các hằng số Không xác định hiện có trên các lớp cùng dòng Độ lệch và Kích thước dựa trên độ chính xác đơn (I2fb03, b/333863462) - Giờ đây, khi chèn thao tác đầu vào bằng chuột trong quá trình kiểm thử,
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
,MouseInjectionScope.longClick()
hiện chấp nhận tham sốbutton: MouseButton
để có thể áp dụng trên toàn cầu hơn. Giá trị mặc định làMouseButton.Primary
cho mọi phương thức. (I31a23, b/190493367, b/261439695) - Đổi tên
onClicked
thànhonClick
bên trongLinkInteractionListener
. (Iaa35c) - Đổi tên
TextInclusionStrategy.isInside
thànhisIncluded
. Đặt loại dữ liệu trả vềParagraph/MultiParagraph#getRangeForRect()
không rỗng. (I51f26)
Sửa lỗi
- Sửa lỗi chụp ảnh màn hình dài đối với vùng chứa cuộn bằng
reverseScrolling=true
. (I7c59c)
Đóng góp bên ngoài
- Thêm tính năng hỗ trợ tìm nạp trước các mục trong
LazyLists
lồng nhau (ví dụ:LazyColumn
kết xuấtLazyRows
được lồng). Thay đổi này dự kiến sẽ làm giảm tình trạng sụt khung hình trong quá trình cuộn cho cácLazyLists
này. Mặc định triển khai là tìm nạp trước 2 mục được lồng đầu tiên. Tuy nhiên, hành vi này có thể được kiểm soát bằng các APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
vàLazyListPrefetchStrategy#onNestedPrefetch
mới. (I51952)
Phiên bản 1.7.0-alpha07
Ngày 17 tháng 4 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha07
. Phiên bản 1.7.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
ClickableText
được đánh dấu là không dùng nữa. Để thêm đường liên kết vào văn bản, hãy tạo mộtAnnotatedString
cóLinkAnnotation
tương ứng với đường liên kết của bạn rồi truyềnAnnotatedString
này đến thành phần kết hợp Text (Văn bản). (I34d4b, b/323346994)- Ra mắt
ViewConfiguration.HandwritingGestureLineMargin
cho các cử chỉ viết tay. Hỗ trợ cử chỉJoinOrSplit
choBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
vàFocusProperties.exit
không còn thử nghiệm nữa.FocusDirection.Enter
vàFocusDirection.Exit
không còn thử nghiệm nữa.FocusRequester.Cancel
không còn ở giai đoạn thử nghiệm (I461a1, b/261564106)- Khi truy vấn toạ độ Bố cục, bạn hiện có thể sử dụng đối số
excludeDirectManipulationOffset
để loại trừ giá trị bù trừ do Bố cục mẹ đặt phần tử con bằngPlaceable.PlacementScope.withDirectManipulationPlacement
. Tương tự như vậy, một Bố cục thường xuyên thay đổi vị trí của phần tử con có thể đặt chúng bằngwithDirectManipulationPlacement
(chẳng hạn như Cuộn, được triển khai theo mặc định). Điều này giúp các ảnh động dựa trênapproachLayout
trở nên trực quan hơn, nhờ đó có cơ hội phân biệt độ lệch cần tạo ảnh động và nội dung nào cần áp dụng trực tiếp khi quyết định tạo ảnh động cho phương pháp tiếp cận. (I60ec7) - Chúng tôi đã xoá cờ tính năng cho ảnh chụp màn hình dài. (I28648, b/329128246)
LazyColumn
giờ đây sẽ kết xuất tiêu đề cố định chính xác trong các ảnh chụp màn hình dài. (I8d239, b/329296635)- Các nguồn
NestedScroll
: Kéo và hất sẽ được thay thế bằngUserInput
vàSideEffect
để phù hợp với định nghĩa mở rộng của các nguồn này, hiện bao gồm ảnh động (Hiệu ứng bên), Con lăn chuột và Bàn phím (UserInput
). (I40579) ApproachLayoutModifierNode
vàModifier.approachLayout
hiện đã ổn định, vớiisMeasurementApproachInProgress()
vàisPlacementApproachInProgress()
mới lần lượt thay thếisMeasurementApproachComplete()
vàisPlacementApproachComplete()
cũ.- Xoá đối tượng sửa đổi
intermediateLayout
không dùng nữa. (I3e91c) - Đổi tên
GraphicsLayer#buildLayer
để ghi lại để phản chiếu phương thức started/endRecording của các API được Displaylist hỗ trợ nhưRenderNode
và Image. - Cập nhật
rememberGraphicsLayer
để tận dụngrememberObserver
. (I312c1, b/288494724, b/330758155) UrlAnnotation
không được dùng nữa, chuyển sang sử dụngLinkAnnotation.Url
. Nếu bạn đang dùng giao diện Material, hãy dùng đối tượngTextDefaults
để tạo chú giải với giao diện Material được áp dụng cho đối tượng đó (I8d180, b/323346545)- Đường liên kết văn bản có lựa chọn định kiểu trạng thái được nhấn ngoài cách định kiểu thông thường, được di chuột và lấy tiêu điểm (I5f864, b/139312671)
- Đổi tên
String.parseAsHtml
thànhAnnotatedString.Companion.fromHtml
. (I43dcd) - Thêm các đối số định kiểu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) và trình nghe tương tác liên kết vào phương thứcparseAsHtml
. Khi phân tích cú pháp chuỗi được gắn thẻ HTML bằng các thẻ<a>
, phương thức này sẽ tạoLinkAnnotation.Url
cho mỗi thẻ như vậy và truyền các đối tượng định kiểu và trình nghe tương tác liên kết đến từng chú thích. (I7c977) LinkAnnotation
hiện lấy các đối số định kiểu dựa trên trạng thái vàLinkInteractionListener
. Thêm chú thích này vàoAnnotatedString
để lấy siêu liên kết. Bằng cách truyềnfocusedState
và/hoặchoveredState
, bạn có thể xác địnhconfiguration
trực quan cho đường liên kết khi chúng được lấy làm tâm điểm và/hoặc di chuột. (I81ce4, b/139312671)ImeOptions.hintLocales
không còn rỗng. Nếu bạn muốn truyền một danh sách Ngôn ngữ trống, vui lòng sử dụngLocaleList.Empty
. (Ic5bc4)
Sửa lỗi
- Xử lý linh hoạt dữ liệu sự kiện đầu vào trong quá khứ không hợp lệ/bị hỏng (bỏ qua dữ liệu chênh lệch không hợp lệ).
- Sửa các sự kiện không mong muốn về con trỏ khi một đối tượng sửa đổi nhập con trỏ được thêm động trước một đối tượng sửa đổi nhập con trỏ khác trong luồng sự kiện nhập con trỏ đang hoạt động (ví dụ: giữa thao tác nhập khi di chuột và thoát khi di chuột [chuột/stylus]).
Phiên bản 1.7.0-alpha06
Ngày 3 tháng 4 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha06
. Phiên bản 1.7.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Thêm phương thức
parseAsHtml
cho các chuỗi được tạo kiểu: phương thức này cho phép chuyển đổi chuỗi được đánh dấu bằng thẻ HTML thànhAnnotatedString
. Xin lưu ý rằng không phải tất cả các thẻ đều được hỗ trợ, ví dụ: bạn chưa thể hiển thị danh sách dấu đầu dòng. (I84d3d, I30626, b/139326648) - Triển khai hỗ trợ thử nghiệm cho ảnh chụp màn hình dài trong vùng chứa cuộn Compose bằng API Android chính thức (
ScrollCaptureCallback
). Tính năng này đang trong giai đoạn thử nghiệm và hiện có thể không xử lý chính xác mọi trường hợp. Vì lý do đó, tính năng này hiện bị tắt theo mặc định. Để chọn sử dụng, hãy đặt cờComposeFeatureFlag_LongScreenshotsEnabled
thành true. (I2b055, b/329296471)
Thay đổi về API
- Đã thay đổi
fun ClipEntry.getMetadata()
thànhval ClipEntry.clipMetadata
. (I50155) - Xoá các hàm
ClipboardManager.getClipMetadata
vàClipboardManager.hasClip
. Vui lòng dùngclipEntry.getMetadata()
để đọc siêu dữ liệu của mục hiện tại về đoạn video. Ngoài ra, hãy kiểm tra kết quả củaClipboardManager.getClip
xem kết quả này có giá trị rỗng hay không hoặc để biết liệu Bảng nhớ tạm có đoạn video hiện tại hay không. (I50498) - Bây giờ, bạn có thể truyền các đối tượng
GraphicsLayer
vào các hàmplaceable.placeWithLayer()
(I1b22f) ClipboardManager.setClip
hiện chấp nhận giá trị rỗng để có thể xoá Bảng nhớ tạm. (I7d2e9)- Thêm mã tài nguyên để hỗ trợ việc ẩn các Khung hiển thị được dùng làm chi tiết triển khai trong công cụ xây dựng (I99531)
- Thêm phương thức tạm ngưng
GraphicsLayer#toImageBitmap
để hỗ trợ kết xuất nội dung của bitmap vàoGraphicsLayer
. Đây là thao tác kết xuất có tăng tốc phần cứng trên API cấp 22 trở lên (bao gồm cả API này) hỗ trợ hơn 99% tất cả thiết bị Android. Trên API Android cấp 21, phương pháp này sẽ quay lại phương thức kết xuất phần mềm. (I9e114) - Phương thức trợ giúp để chuyển đổi Android
RectF
thànhComposeRect
(I39925, b/325660505) - Theo mặc định, tất cả tham số
KeyboardOptions
hiện đều có giá trị không xác định. Thêm phương thứcKeyboardOptions.merge
. - Đổi tên
KeyboardOptions.autoCorrect
thànhautoCorrectEnabled
và làm cho thuộc tính này có thể có giá trị rỗng, trong đó giá trị rỗng cho biết rằng chưa có giá trị nào được chỉ định. (Ia8ba0, b/295951492) - Biến thể
BasicTextField(state)
vàBasicSecureTextField
hiện sử dụngKeyboardActionHandler
thay vìKeyboardActions
để xử lý các thao tác do bàn phím phần mềm thực hiện. (I58dda)
Phiên bản 1.7.0-alpha05
Ngày 20 tháng 3 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha05
. Phiên bản 1.7.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Ra mắt API
GraphicsLayer
mới để ghi lại các lệnh vẽ trong danh sách hiển thị, cũng như các thuộc tính khác ảnh hưởng đến việc kết xuất danh sách hiển thị. Điều này tạo ra ranh giới tách biệt để chia một cảnh phức tạp thành các phần nhỏ hơn có thể cập nhật riêng lẻ mà không cần tạo lại toàn bộ cảnh. Bạn có thể thực hiện các biến đổi đối vớiGraphicsLayer
mà không cần ghi lại lại danh sách hiển thị. Không giống nhưModifier.graphicsLayer
,GraphicsLayer
cho phép kết xuất nội dung Thành phần kết hợp ở nơi khác và hữu ích trong các trường hợp sử dụng ảnh động, trong đó nội dung dự kiến sẽ xuất hiện ở nhiều cảnh.
Thay đổi về API
GraphicsLayer.draw(Canvas)
không còn là API công khai. Thay vào đó, vui lòng sử dụng hàm mở rộngDrawScope.drawLayer(GraphicsLayer)
để vẽ lớp này. (I7a7c0)- Phân tách
restrictedConstraints()
thành hai phương thức:fitPrioritizingWidth()
vàfitPrioritizingHeight()
(I6d7fd) - Ra mắt mã giả lập
HardwareCanvas
để sử dụng Android L (I1c3b5, b/288494724) - Cập nhật khung Compose để hiển thị thành phần kết hợp
GraphicsContext
cục bộ đồng thời cập nhật các phương thức triển khai Đối tượng sửa đổi, Chủ sở hữu,DelegateableNode
vàdrawWithCache
để hiển thị quyền truy cập vàoGraphicsContext
cho quyền truy cập có giới hạn. Tính năng này sẽ tự động dọn dẹp các thực thểGraphicsLayer
khi Đối tượng sửa đổi bị huỷ kích hoạt. (I64a2f, b/288494724) - Ra mắt
InterceptPlatformTextInput
để giúp viết các chương trình kiểm thử liên quan đến IME cấp thấp và các trường hợp sử dụng IME cấp thấp khác. Ngừng sử dụngPlatformTextInputTestOverride
. (I862ed, b/322680547) - Đã thêm hàm mở rộng
GraphicsLayer.setOutline(Outline)
. (Ib81f4) - Ra mắt hàm khởi tạo hàm
GraphicsContext
để tạo nhà máy (factory) nhằm tạo các thực thểGraphicsLayer
(Ib98d6, b/288494724) - Cấp quyền truy cập API
GraphicsLayer
cho nhà phát triển linh hoạt trong việc ghi lại các lệnh vẽ có thể dùng để vẽ ở nơi khác, đồng thời áp dụng nhiều hiệu ứng hình ảnh cho kết quả cuối cùng. (I80245, b/288494724) - Ra mắt
Paragraph#getRangeForRect
để trả về một dải văn bản được bao phủ bởi một vùng hình chữ nhật nhất định. (Iee516, b/325660505) - Xoá chế độ ghi đè thử nghiệm của
BasicText
với đối sốonLinkClicked
. Trong tương lai sẽ có API thay thế dành cho chức năng hỗ trợ siêu liên kết. (I107d5)
Sửa lỗi
- Thêm định nghĩa API dự kiến/thực tế
GraphicsLayer
để hỗ trợ việc chụp và phát lại lệnh vẽ bằng các hiệu ứng hình ảnh và biến đổi không bắt buộc kết hợp. Ra mắt giao diệnGraphicsContext
để chứa các phần phụ thuộc đồ hoạ, bao gồm cả việc tạo và quản lý các thực thểGraphicsLayer
. (I4a8d6, b/288494724) - Khắc phục vấn đề về khả năng tương tác với tính năng tìm kiếm tiêu điểm 1D, trong đó tiêu điểm sẽ bị mắc kẹt bên trong
ComposeView
được nhúng giữa các khung hiển thị khác. (I08fd4)
Đóng góp bên ngoài
- Di chuyển
LocalLifecycleOwner
từ giao diện người dùng Compose sanglifecycle-runtime-compose
để bạn có thể sử dụng các API trình trợ giúp dựa trên Compose bên ngoài giao diện người dùng Compose. Cảm ơn Jake Wharton vì đã đóng góp. (I6c41b, b/328263448) - Luôn hiển thị các thuộc tính độ chính xác đơn trên tất cả các loại căn chỉnh phụ dựa trên độ lệch. (I69f0f, b/328088992)
Phiên bản 1.7.0-alpha04
Ngày 6 tháng 3 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha04
. Phiên bản 1.7.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Hỗ trợ tính năng viết tay bằng bút cảm ứng cho BasicTextField2 trên các thiết bị sau Android U. (I002e4)
- Trong CL này, chúng ta thêm thao tác ngữ nghĩa
GetScrollViewportLength
để có thể chuyển thông tin về các thành phần được cuộn trong Compose vào hệ thống a11y. CL này cũng áp dụng việc sử dụng thuộc tính đã đề cập trong Foundation Scrollable List. (Ic5fa2) FocusRequester.createRefs
hiện đã ổn định (I4d92c, b/261436820)- Ra mắt
DelegatableNode.requireView()
để cho phép các nút đối tượng sửa đổi lấyView
Android hiện tại mà không cần đọc thành phần kết hợp cục bộ. (I40768) - API
Path.reverse()
mới để đảo ngược hướng của đường dẫn (I36348) - Thêm
hintLocales
vàoKeyboardOptions
để cung cấp choTextFields
khả năng gợi ý cho IME bằng các ngôn ngữ cụ thể để đặt trước ngôn ngữ ưu tiên. - Hiển thị thuộc tính
platformLocale
từLocale
trả về đối tượng nền tảng cơ bản, ví dụ:java.util.Locale
. (I921c6)
Phiên bản 1.7.0-alpha03
Ngày 21 tháng 2 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha03
. Phiên bản 1.7.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Ra mắt
ContextualFlowRow
vàFlowRow
/Column
nâng cao với MaxLines và Overflow. Chúng tôi rất vui được thông báo về các điểm cải tiến đối vớiFlowRow
vàFlowColumn
thử nghiệm, hiện đã có maxLines và tính năng hỗ trợ tràn, cùng với việc ra mắtContextualFlowRow
vàContextualFlowColumn
. Bản cập nhật này được thiết kế để cung cấp các thành phần tối ưu hoá hiệu suất, trong đóContextualFlow*
phù hợp với số lượng lớn các mục sử dụng cấu hìnhmaxLines
nhỏ, đồng thời +N động sẽ thấy nhiều nút hơn, cònFlowRow
vàFlowColumn
là lựa chọn hoàn hảo cho một số lượng nhỏ các mục, dưới 100 mục. Lưu ý quan trọng: Để duy trì hành vi hiện có trongFlowRow
hoặcFlowColumn
, trong đó tất cả các mục đều được bao gồm, bất kể các mục đó có vừa với giá trị tối đa trên nhiều trục hay không, hãy đặtoverflow
thànhFlowRowOverflow.Visible
hoặcFlowColumnOverflow.Visible
trong quá trình khởi chạy. Khám pháContextualFlowRowSample
vàFlowRowSample
để xem ví dụ về cách hoạt động của các tính năng mới này. (Ib9135, b/293577082) - Thêm thuộc tính ngữ nghĩa
maxTextLength
cần được đặt trên các trường văn bản lọc số ký tự tối đa được phép. (I24d9f, b/170648072) - Trình bao bọc
Modifier.inspectable
không còn được dùng nữa. API này sẽ tạo ra nhiều trường hợp sửa đổi không hợp lệ hơn mức cần thiết. Vì vậy, bạn không nên sử dụng API này. Các nhà phát triển nên triển khai phương thứcinspectableProperties()
trênModifierNodeElement
nếu muốn cung cấp các thuộc tính đối tượng sửa đổi cho công cụ. (Ib3236) - Hàm khởi tạo mới dành cho
PopupProperties
, cho phép kiểm soát hoàn toàn cờWindowManager.LayoutParams
. (Ibb33e, b/312485503) - Ra mắt
DelegatableNode.requireLayoutCoordinates()
như một cách để lấyLayoutCoordinates
hiện tại củaModifier.Node
mà không cần ghi đèonPlaced
và tự lưu trữ toạ độ trong một thuộc tính. (Ia8657) - Ra mắt
DelegatableNode.currentLayoutCoordinates
như một cách để lấyLayoutCoordinates
hiện tại củaModifier.Node
mà không cần ghi đèonPlaced
và tự lưu trữ toạ độ trong một thuộc tính. (Iaebaa) BasicTextField2
và các API liên quan trong góiandroidx.compose.foundation.text2
sẽ được chuyển sangandroidx.compose.foundation.text
. (I9f635)- Thêm API
ApproachLayoutModifierNode
mới để hỗ trợ việc tạo logic phương thức tiếp cận tuỳ chỉnh trong một Nút đối tượng sửa đổi rõ ràng. Đồng thời, thêm một API thử nghiệmDeferredTargetAnimation
mới cho ảnh động có mục tiêu chưa xác định khi tạo thực thể. (I60745) - Các API
Path
mới để truy vấn hướng của một Đường dẫn và trích xuất các đường đồng mức từPath
. (I63d04) - Thêm
PathHitTest
vàPath.contains(Offset)
để kiểm tra xemPath
có chứa một điểm cụ thể hay không. (I3b218) TextLayoutResult
nay hiển thị phương thứcgetLineBaseline(lineIndex)
. Thao tác này cho phép đọc đường cơ sở của một dòng văn bản tuỳ ý cùng với các thuộc tính tiện lợifirstBaseline
vàlastBaseline
hiện có. (Ide4e8, b/237428541)- Thêm phương thức để chỉ so sánh các chú giải của hai
AnnotatedStrings
. (I32659)
Sửa lỗi
- Khắc phục vấn đề về khả năng tương thích ngược với
SemanticsPropertyReceiver.performImeAction
vàSemanticsActions.PerformImeAction
. (Id0528, b/322269946)
Phiên bản 1.7.0-alpha02
Ngày 7 tháng 2 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha02
. Phiên bản 1.7.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Khắc phục vấn đề về khả năng tương thích tệp nhị phân với
SemanticsPropertyReceiver.performImeAction
. (I65865, b/322269946) - Hàm khởi tạo
PopupProperties
nhận tham sốusePlatformDefaultWidth
không còn là thử nghiệm nữa. (I8f8d2) - Thêm phương thức nạp chồng
ComposeTestRule.waitUntil
lấy nội dung mô tả chuỗi về điều kiện để đưa vào thông báo hết thời gian chờ. (I9413e) - API ngữ nghĩa mới
unset()
để xoá các thuộc tính ngữ nghĩa được thêm vào trong cùng một chuỗi đối tượng sửa đổi. Thuộc tính ngữ nghĩa mớiisOpaque
. (I8c583, b/317966058, b/246056649) - Xoá
originalEventPosition
khỏi phương thức sao chép trong API công khai củaPointerInputChange
. (I7bead)
Sửa lỗi
- Sửa lỗi a11y cho phép người dùng nhấp vào các nút không phải là thẻ và nút không phải nút chọn khi được chọn. (I2181c)
VelocityTracker
giờ đây sẽ có bản sửa lỗi để thêm điểm theo mặc định. Bạn vẫn có thể tắt tính năng khắc phục bằng cách đặtVelocityTrackerAddPointsFix
thành false nếu xảy ra vấn đề. (Ib3877, b/269487059)- Khắc phục vấn đề không tương thích ngược trong tệp nhị phân trong
TextStyle
vàParagraphStyle
. (I179f0, b/320819734)
Đóng góp bên ngoài
- Thêm một hàm khởi tạo
DialogProperties
mới mà không có tham số dành riêng cho nền tảng. (I45829) - Thêm một hàm khởi tạo
PopupProperties
mới mà không có tham số dành riêng cho nền tảng. (I9a038)
Phiên bản 1.7.0-alpha01
Ngày 24 tháng 1 năm 2024
Phát hành androidx.compose.ui:ui-*:1.7.0-alpha01
. Phiên bản 1.7.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Đã mở rộng
ClipboardManager
bằng cách thêmClipEntry
vàClipMetadata
để hỗ trợ nội dung tuỳ ý như hình ảnh. - Thêm API
DeviceConfigurationOverride
vàoui-test
để cho phép cục bộ ghi đè hành vi của nội dung đang được kiểm thử, chẳng hạn như để chỉ định kích thước, ngôn ngữ, hướng bố cục, tỷ lệ phông chữ hoặc giao diện.
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.ui:ui-*:1.6.8
. Phiên bản 1.6.8 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục tính không nhất quán trong tỷ lệ phông chữ khi tỷ lệ phông chữ nhỏ hơn bảng thấp nhất được xác định. Trong trường hợp này, chúng ta hiện nội suy giữa tỷ lệ 1x tuyến tính và bảng thấp nhất được xác định để kích thước phông chữ tăng lên đơn điệu khi tỷ lệ tăng. (Icbae3)
Phiên bản 1.6.7
Ngày 1 tháng 5 năm 2024
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*:1.6.6
. Phiên bản 1.6.6 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục một sự cố
BasicTextField
hiếm gặp.
Phiên bản 1.6.5
Ngày 3 tháng 4 năm 2024
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*: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.ui:ui-*:1.6.3
. Phiên bản 1.6.3 bao gồm các thay đổi sau.
Phiên bản 1.6.2
Ngày 21 tháng 2 năm 2024
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*:1.6.1
. Phiên bản 1.6.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề về khả năng tương thích ngược với
SemanticsPropertyReceiver.performImeAction
vàSemanticsActions.PerformImeAction
. (Ie0bb2, b/322269946) - Bố cục hiện gặp lỗi trong khi đo lường khi một bố cục trả về kích thước lớn bất thường. Loại lỗi này thường xảy ra khi quá trình đo lường trực tiếp sử dụng các điều kiện ràng buộc tối đa mà không kiểm tra để tìm
Constraints.Infinity
. Bước kiểm tra này sẽ giúp nhà phát triển phát hiện vấn đề về việc bố cục có kích thước không chính xác thay vì trong một bố cục có chứa kích thước đó. (I339a9)
Phiên bản 1.6.0
Ngày 24 tháng 1 năm 2024
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*:1.6.0-rc01
. Phiên bản 1.6.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Tối ưu hoá việc triển khai đồ hoạ vectơ để cải thiện hiệu suất bằng cách giảm thiểu các lần tái cấu trúc bổ sung.
Phiên bản 1.6.0-beta03
Ngày 13 tháng 12 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-beta03
. Phiên bản 1.6.0-beta03 bao gồm các thay đổi sau.
Tính năng mới
- Hiện tại, bạn có thể tách
LayoutCoordinates
mà không cần tách nút. Bảo vệ khỏi tính năng đó trong Layout Inspector ở Compose (If693)
Sửa lỗi
PlatformImeOptions
hiện là một lớp cụ thể thay vì giao diện. (If40a4)- Khắc phục các quá trình kết hợp lại bổ sung ở hạ nguồn do
LocalSoftwareKeyboardController
vàLocalTextInputService
được cung cấp giá trị mới mỗi khi một gốc kết hợp lại. (I42190, b/310510985)
Phiên bản 1.6.0-beta02
Ngày 29 tháng 11 năm 2023
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*:1.6.0-beta01
. Phiên bản 1.6.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Đối tượng sửa đổi
DragAndDropTarget
hiện nhậnDragAndDropTarget
một cách rõ ràng và có lambda để chọn sử dụng phiên kéo và thả. Hiện có 2 hàm factory choDragAndDropModifierNode
. Một để nhận dữ liệu chuyển và một trang để chuyển dữ liệu (I69481) - Cập nhật
maximumFlingVelocity
để được biểu thị dưới dạng Số thực có độ chính xác đơn. Cập nhật tài liệu để làm rõ hơn về tính thống nhất củamaximumFlingVelocity
. (I8adc7) onDragAndDropStart
trong nhà máyDragAndDropModifierNode
đã được đổi tên thànhacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
được thêm vào Đối tượng sửa đổidragAndDropTarget
để chấp nhận trong phiên kéo và thả. Hàm lambda này trả về mộtDragAndDropTarget
khả thi nếu quan tâm đến phiên kéo và thả. Các hàm lambda khác để xử lý sự kiện kéo đã được thay thế bằng hàm này. thêm một hàm factoryDragAndDropTarget
để nhận qua các phiên kéo và thả (Iebf3a)Đã xoá
DragAndDropInfo
dưới dạng loạiDragAndDropModifierNode.drag
hiện nhận các tham số chotransferData
, kích thước trang trí và kéo trang tríDrawScope
DragAndDropTarget
có các phương thức cho các sự kiện kéo và thả cụ thể thay vì là một phương thức trừu tượng duy nhấtonDragAndDropEvent
trong hàm factory choDragAndDropModifierNode
đã được đổi tên thànhonDragAndDropStart
để truyền đạt rõ hơn rằngDragAndDropTarget
được cung cấp chỉ hợp lệ trong một phiên kéo và thả nhất địnhDragAndDropEventType
đã bị xoá (I645b1)Đổi tên
PlatformTextInputModifierNode.runTextInputSession
thànhestablishTextInputSession
. (I03cd0)Cải thiện tên API nút có thể tra cứu để giúp các tên này dễ hiểu hơn. (Ia4474)
Thay thế
OriginalText
bằngTextSubstitution
. (Ifa5a8)Đổi tên
PlatformTextInputModifierNode.textInputSession
thànhrunTextInputSession
. (Ie9c6b)Phần tử con của
SubcomposeLayout
(và các bố cục nhưLazyColumn
dựa trên đó) được giữ lại để sử dụng lại trong tương lai sẽ bị coi là đã huỷ kích hoạt. Ra mắt API kiểm thửassertIsDeactivated()
mới để kiểm thử các nút như vậy. Phần còn lại của các API kiểm thử sẽ lọc ra các nút đã tắt theo mặc định. (I2ef84, b/187188981)Xoá
FocusDirection.In
vàFocusDirection.Out
, thay vào đó, hãy sử dụngFocusDirection.Enter
vàFocusDirection.Exit
(I2f660)API
SwipeToReveal
của Material (dành cho Thẻ và Khối) hiện dựa vào API dựa trên ô (theo đề xuất của Compose) thay vì các thực thể dựa trên lớp dữ liệu để tạo các ô đó. Đây là một thay đổi có thể gây lỗi, vui lòng xem bản minh hoạ và mã mẫu để tham khảo ví dụ về cách sử dụng API mới. (Ia8943)Ngừng sử dụng hàm khởi tạo
FontStyle(int)
, chuyển sang sử dụngFontStyle.Normal
hoặcFontStyle.Italic
. (I66610)Đổi tên giao diện
FontScalable
thànhFontScaling
(Ie804a)
Sửa lỗi
SoftwareKeyboardController.show()
sẽ không còn hiển thị bàn phím phần mềm nếu không có trình chỉnh sửa văn bản nào được lấy làm tiêu điểm. (I2165a, b/301477279)- Giờ đây, sự kiện Mũi tên lên của khoá phần cứng cho các khoá chưa nhận được sự kiện Mũi tên xuống trong cùng một Khung hiển thị Compose sẽ bị bỏ qua. (Ib37b4, b/305518328)
- Thêm tuỳ chọn hỗ trợ trình kết xuất đồ hoạ cho Quét chuyển màu trong
ArcLine
. (I4d5bb) - Triển khai mã bằng và mã băm cho
PageSize.Fixed
. (Ie3ede, b/300134276) - Khắc phục vấn đề về khả năng tương thích tệp nhị phân với phần thay đổi Phần lồng ghép cửa sổ (Iee695)
- Xoá lớp lõi Material cho Chip/Nút Material3 vì các phép đo điểm chuẩn vi mô cho thấy hiệu suất tốt hơn nếu không có lớp này. (I55555)
- Giờ đây, những
TestDispatcher
được truyền dưới dạngeffectContext
cho chương trình kiểm thử Compose sẽ được dùng để tạo chương trình kiểm thử và xung nhịp khung hình. (Ia7178)
Phiên bản 1.6.0-alpha08
Ngày 18 tháng 10 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha08
. Phiên bản 1.6.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
Modifier.dragAndDrawSource
đã đổi tên lambdaonDrawDragShadow
thànhdrawDragDecoration
vàDragAndDropInfo
đã đổi tên tham số kích thước thànhdragDecorationSize
. (Id0e30, b/303904810)- Ra mắt
SemanticsNodeInteraction.isDisplayed()
vàSemanticsNodeInteraction.isNotDisplayed()
để kiểm tra xem một nút phù hợp có hiển thị hay không mà không cần xác nhận nút đó. (I2c196, b/302100809) - Ra mắt một giá trị
Unspecified
đặc biệt cho các trườngTextAlign
,TextDirection
,Hyphens
vàLineBreak
củaParagraphTextStyle
để thay thếnull
. Vì các lớp này là các lớp cùng dòng, nên bằng cách thay thế giá trị có thể rỗng bằng thuộc tính Không xác định, chúng ta sẽ tránh được hiệu ứng hộp kiểu dữ liệu nguyên gốc. Cập nhật các hàm khởi tạo, phương thức getter và các phương thức khác trong kiểuTextStyle
và Đoạn văn để chấp nhận các tham số đã đề cập dưới dạng loại không có giá trị rỗng. (I4197e, b/299490814) - Thêm phương thức nạp chồng
GoogleFont
để đọcGoogleFont
từ XML. (If8f59) - Đặt
LoremIpsum
PreviewParameterProvider
thành một lớp học mở. (I41bf5, b/266918816, b/300116360)
Sửa lỗi
FontFamilyResolver
hiện sử dụngDispatchers.Main
cho coroutine quản lý bộ nhớ đệm. (Ie8dd9)AndroidViewBinding
nay xoá đồng bộ các thực thểFragment
được tăng cường bằng cách đưaFragmentContainerView
vào bố cục như một phần củaonRelease
bằng cách dùngcommitNow
(thay vìcommit
mà nó đang sử dụng trước đó), nhờ đó khắc phục các vấn đề với phương thức của tính năng Chỉnh sửa trực tiếp bằng việc thay thế thành phần khi thay đổi. (I58fbf)
Phiên bản 1.6.0-alpha07
Ngày 4 tháng 10 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha07
. Phiên bản 1.6.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
- Ra mắt
PlatformTextInputMethodTestOverride
để viết mã kiểm thử cho trình chỉnh sửa văn bản tuỳ chỉnh. (Id159b) - Thêm Đối tượng sửa đổi
dragAndDropSource
để bắt đầu phiên kéo và thả, cũng như Đối tượng sửa đổidragAndDropTarget
để nhận từ phiên kéo và thả. (Ib7828, b/286038936) - Thêm bộ sưu tập
ColorList
vàColorSet
để tránh việc phân bổ. (I744bd) - Thêm cờ tạm thời
DisableNonLinearFontScalingInCompose
để tắt tỷ lệ phông chữ phi tuyến tính. Thiết lậpDisableNonLinearFontScalingInCompose = true
trong chương trình kiểm thử nếu bạn cần thời gian để dọn dẹp chúng. Cờ này sẽ bị xoá trong Compose 1.6.0-beta01. (Ic9486)
Sửa lỗi
- Tối ưu hoá quá trình phân tích cú pháp vectơ vẽ được XML. (Ibb015)
Phiên bản 1.6.0-alpha06
Ngày 20 tháng 9 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha06
. Phiên bản 1.6.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Tối ưu hoá thêm cho biểu tượng Material. (I3e08d)
- Thêm khả năng di chuyển lên/xuống cây đối tượng sửa đổi để tìm các nút tương tự. (I2d234)
- Thêm lệnh gọi lại
onRestoreFailed()
vào đối tượng sửa đổifocusRestorer()
(Ie1d43) - Thêm chú thích androidx vào nhiều API đồ hoạ để chỉ định
ColorInt
,FloatRange
,IntRange
,Size
và các API khác. (Id65c8, b/290950582) - Thêm
showSystemUi=true
vào định nghĩaPreviewScreenSizes
(Ib61d3)
Thay đổi về hành vi
- Compose hiện sử dụng tỷ lệ phông chữ phi tuyến tính để dễ đọc và dễ tiếp cận hơn. Khi tỷ lệ phông chữ > 100% trong phần cài đặt hệ thống, văn bản nhỏ sẽ tăng kích thước như bình thường, nhưng văn bản vốn đã lớn sẽ chỉ tăng kích thước một chút. Ngoài ra, chiều cao đường được xác định trong SP sẽ tự động điều chỉnh để duy trì tỷ lệ phù hợp với chiều cao dự kiến theo tỷ lệ 100%. Xem Các phương pháp hay nhất về tỷ lệ phông chữ để biết thêm thông tin. (I11518)
Phiên bản 1.6.0-alpha05
Ngày 6 tháng 9 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha05
. Phiên bản 1.6.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
- Bật tính năng ghi lại nội dung trong
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Vận tốc hất trong các thành phần Khung hiển thị như
ScrollView
vàRecyclerView
được giới hạn ởViewConfiguration.ScaledMaximumFlingVelocity
. Compose hiện chứa phiên bảnmaximumFlingVelocity
riêng hiện áp dụng choDraggable
. (Ibf974) - Thêm scaffolding (giàn giáo ban đầu) để hỗ trợ các API kéo và thả trên nền tảng. (If84ce)
- Thêm
deviceId
vàoRotaryScrollEvent
(Iba3bf) - Cập nhật API Thiết bị
ui-tooling
để thêm các thiết bị mới hơn (Ib25b4)
Phiên bản 1.6.0-alpha04
Ngày 23 tháng 8 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha04
. Phiên bản 1.6.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm phương thức để vô hiệu hoá
ReusableComposition
, xoá quan sát nhưng vẫn giữ nguyên các nút. Bạn có thể kích hoạt lại cấu trúc đã huỷ kích hoạt bằng cách gọisetContent
. (Ib7f31) - Thêm giao diện
ReusableComposition
để quản lý vòng đời và sử dụng lại các lần kết hợp phụ. (I812d1, b/252846775) Modifier.focusGroup
đã được nâng cấp lên API ổn định. (I7ffa3)- Thêm chú thích androidx vào nhiều API đồ hoạ để chỉ định
ColorInt
,FloatRange
,IntRange
,Size
và các API khác. (I70487, b/290950582) - Cập nhật API
ColorFilter
để có các loại lớp con cụ thể nhằm cải thiện khả năng kiểm tra các tham số. (I5fe29) - Ra mắt thư viện wear-tooling-preview để liệt kê các thiết bị Wear hợp lệ có thể dùng cho bản xem trước giao diện người dùng (Ib036e)
- Tạo giao diện
FontScalable
để xử lý phần điều chỉnh tỷ lệ phông chữ của giao diện Density (Mật độ). (I2cf3f)
Phiên bản 1.6.0-alpha03
Ngày 9 tháng 8 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha03
. Phiên bản 1.6.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Loại chuyển đổi nhập/thoát mới điều chỉnh tỷ lệ nội dung dựa trên kích thước của vùng chứa ảnh động trong quá trình nhập & ảnh động thoát.
LookaheadScope
Giao diện và thành phần kết hợp thú vị hiện đã ổn định. (Ifb2ce) - Thêm tính năng hỗ trợ để định cấu hình
privateImeOptions
(Idb772)
Sửa lỗi
PopupPositionProvider.calculatePosition
giờ đây sẽ tự động cập nhật vị trí của cửa sổ bật lên khi trạng thái đọc trong phép tính được thay đổi. (I676a1, b/292257547)- Sửa các trường văn bản hiển thị bàn phím và có thể chỉnh sửa được khi
readOnly
là true. Ngoài ra, đã khắc phục việc bàn phím không hiển thị khireadOnly
được thay đổi từ true thành false (sai) khi đặt tiêu điểm. (I34a19, b/246909589) - Mở rộng ứng dụng câu nhận định toàn cục trong kiểm thử giao diện người dùng. (I1f90d)
Phiên bản 1.6.0-alpha02
Ngày 26 tháng 7 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha02
. Phiên bản 1.6.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm giao diện định vị dịch vụ có thể triển khai bằng các trình triển khai của Composition, cho phép triển khai Thành phần kết hợp uỷ quyền cho một lượt tra cứu dịch vụ uỷ quyền thành phần khác cho Composition ban đầu. Tính năng này không được gọi làdirecty và được dùng để cho phép tạo các API thử nghiệm trong thời gian chạy mà có thể được tìm thấy từ các phiên bản được gói của trình soạn thảo, chẳng hạn như mô-đun giao diện người dùng. (I296b9)
- API
PlatformTextInput*
được thiết kế lại hoàn toàn. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
vàLocalSoftwareKeyboardController
không còn thử nghiệm nữa.LocalSoftwareKeyboardController
hiện cũng là mộtCompositionLocal
thích hợp. (I4c364)LookaheadLayout
vàLookaheadLayoutScope
không còn được dùng trong một số bản phát hành và hiện đã bị xoá. API thay thế làLookaheadScope
có thể hoạt động với bất kỳ Bố cục nào. (I12ac3)- Thêm
SemanticsNodeInteraction.requestFocus
như một cách thuận tiện và dễ khám phá hơn để yêu cầu tiêu điểm trong kiểm thử. (Ie8722) - Thêm các API thử nghiệm để đăng ký câu nhận định chung để sử dụng bằng các khung kiểm thử trong tương lai. (I12d77)
Sửa lỗi
- Giờ đây, lệnh gọi đầu tiên của lệnh gọi lại
update
củaAndroidView
sẽ được trì hoãn cho đến khi khung hiển thị được đính kèm, thay vì chạy khi thành phần đưa raAndroidView
được áp dụng. Việc này giúp khắc phục lỗi trong đó lệnh gọi lạiupdate
sẽ không bị vô hiệu hoá nếu trạng thái mà lệnh gọi lại được đọc bị thay đổi ngay lập tức bằng hiệu ứng. (Ie9438, b/291094055)
Phiên bản 1.6.0-alpha01
Ngày 21 tháng 6 năm 2023
Phát hành androidx.compose.ui:ui-*:1.6.0-alpha01
. Phiên bản 1.6.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Hỗ trợ tính năng sắp tới trong
LazyList
. Điều này cho phépLazyList
trong lượt truyền trước bỏ qua mọi ảnh động (ví dụ: ảnh động vị trí mục,AnimatedVisibility
, v.v.) và tính toán kích thước cũng như vị trí nhìn trước cho tất cả thành phần con. Sau khi vượt qua phân cảnh, phần tử con củaLazyList
có thể tạo ảnh động độc lập với thực tế như đã thấy trong đoạn xem trước.
Thay đổi về hành vi: includeFontPadding hiện có giá trị mặc định là false trong Compose
Theo mặc định, includeFontPadding
hiện đang là false (21d806) trong Compose.
includeFontPadding
là một thuộc tính cũ kiểm soát việc có thêm khoảng đệm ở đầu dòng đầu tiên và dòng cuối cùng của văn bản để chứa mọi ký tự có thể mở rộng bên trên hoặc dưới đường cơ sở của văn bản hay không.
Việc cập nhật phiên bản Compose này sẽ sửa đổi cách tất cả văn bản hiển thị trong giao diện người dùng bằng cách xoá khoảng đệm bổ sung ở đầu dòng đầu tiên và dòng cuối cùng của mọi văn bản bạn hiển thị.
Tuỳ thuộc vào các yêu cầu về giao diện người dùng và chỉ số phông chữ mà bạn đang sử dụng, các thay đổi sẽ là rất nhỏ. Tuy nhiên, bạn có thể gặp phải các trình chặn như: – Kiểm thử ảnh chụp màn hình bị lỗi. Sửa giao diện người dùng nếu cần và tạo lại hình ảnh vàng. – Văn bản hơi lệch. Xoá mọi khoảng đệm phủ định tuỳ chỉnh hoặc thêm khoảng đệm nếu cần.
Bạn có thể chọn sử dụng includeFontPadding
bằng cách sử dụng PlatformTextStyle
cho mỗi văn bản:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Bạn có thể chọn sử dụng includeFontPadding
cho tất cả văn bản bằng cách định cấu hình các kiểu Material. Xin lưu ý rằng tên tham số sẽ khác nhau giữa M2 và M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Bạn có thể tìm thêm về Compose includeFontPadding
trong tài liệu dành cho nhà phát triển và bài đăng này trên blog.
Nếu bạn gặp sự cố/lỗi liên quan đến thay đổi này, hãy gửi lỗi bằng công cụ theo dõi lỗi.
Thay đổi về API
- Hỗ trợ
InputConnection#requestCursorUpdates
(I0c69b) - Thêm
FocusRequester.saveFocusedChild
vàFocusRequester.restoreFocusedChild
(Ic557e, b/272302679, b/275157318) - Thêm loại
ResourceResolutionException
để gói các lớp throwable được gửi khi cố gắng tải thành phần bitmap bằng thông tin mô tả về đường dẫn thành phần không tải được. (I19f44, b/230166331, b/278424788) - Tối ưu hoá khả năng hỗ trợ tiếp cận để phân bổ bộ nhớ và hiệu suất. (Iede48)
- Thêm các thuộc tính và thao tác ngữ nghĩa để hỗ trợ dịch văn bản. (I4a6bc)
- Thuộc tính mới trong
IntrinsincMeasureScope
và các cách triển khai thuộc tính này (ví dụ:MeasureScope
) để cho biết liệu lượt đo lường hiện tại có phải là một lượt đo lường tầm nhìn hay không. (I7a812) - Cập nhật API
DrawScope
để giới thiệu khả năng nhắm mục tiêu lại kết xuất vào một canvas khác với mật độ/hướng bố cục và kích thước thay thế. - Cập nhật
DrawContext
để hỗ trợ cấu hình mật độ và hướng bố cục cũng như có thể định cấu hình canvas. (Ie1f9b, b/225408150) - Thêm
Paragraph#fillBoundingBoxes
để tính toán các hộp giới hạn ký tự. (If30ee) - Thêm một tập hợp
MultiPreviews
phổ biến (Ia5a27)
Sửa lỗi
- Thêm giao diện
FocusTargetModifierNode
có thể dùng để tạo mộtFocusTarget
tuỳ chỉnh. (I9790e) - Đổi tên các tham số
fallback*
trên hàm khởi tạoTextMeasurer
thànhdefault*
. (I940a5) - Đổi tên
SemanticsPropertyReceiver.performImeAction
thànhonImeAction
vàSemanticsActions.PerformImeAction
thànhOnImeAction
. (I8e841) - Thêm Bánh xe để phân biệt thao tác cuộn chuột với thao tác kéo trong tính năng cuộn lồng nhau (cụ thể là trong
NestedScrollConnection
). (Ie57e4) - Thêm API
asComposePaint
để thay thếtoComposePaint
vì đối tượng được trả về sẽ bao bọcandroid.graphics.Paint
ban đầu (I22b4c) - Ngừng sử dụng
SemanticsProperties.imeAction
và thay thế bằng một tham số mới thànhSemanticsActions.performImeAction
. (I4a587) - Thêm tính năng hỗ trợ chọn bằng chuột. Lựa chọn dựa trên thao tác chạm sẽ mở rộng theo từ và thu nhỏ theo ký tự. (Ic0c6c, b/180639271)
- Các phương thức
Paragraph
từng gửiAssertionError
với giá trị chênh lệch vượt quá giới hạn hiện sẽ gửiIllegalArgumentException
nhưMultiParagraph
. (I549d3, b/243338896)
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.ui:ui-*: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.ui:ui-*:1.5.3
. Phiên bản 1.5.3 bao gồm các thay đổi sau.
Sửa lỗi
- (b/301209788)
TextField
đôi khi sẽ áp dụng không chính xác các lệnh trước đó khi tập trung và nhập tiếng Hàn, dẫn đến việc mất ký tự.
Phiên bản 1.5.2
Ngày 27 tháng 9 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.2
. Phiên bản 1.5.2 bao gồm các thay đổi sau.
Sửa lỗi
- Thêm giải pháp cho các sự cố khi truy cập API cuộn hỗ trợ tiếp cận từ luồng ở chế độ nền.
- Khắc phục việc thêm các nút chưa được đính kèm vào cây ngữ nghĩa.
Phiên bản 1.5.1
Ngày 6 tháng 9 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.1
. Phiên bản 1.5.1 bao gồm các thay đổi sau.
Sửa lỗi
- Sửa các trường văn bản hiển thị bàn phím và có thể chỉnh sửa khi
readOnly
là true. Ngoài ra, đã khắc phục việc bàn phím không hiển thị khireadOnly
được thay đổi từ true thành false (sai) khi đặt tiêu điểm. (I34a19, b/246909589)
Phiên bản 1.5.0
Ngày 9 tháng 8 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0
. Phiên bản 1.5.0 bao gồm các thay đổi sau.
Phiên bản 1.5.0-rc01
Ngày 26 tháng 7 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-rc01
. Phiên bản 1.5.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố xảy ra khi dùng
SubcomposeLayout
bên trongmovableContentOf()
.
Phiên bản 1.5.0-beta03
Ngày 28 tháng 6 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-beta03
. Phiên bản 1.5.0-beta03 bao gồm các thay đổi sau.
Sửa lỗi
- Thêm giao diện FocusTargetModifierNode có thể dùng để tạo một FocusTarget tuỳ chỉnh. (Ifb1d6)
- Khắc phục vấn đề thành phần kết hợp Hộp thoại và Cửa sổ bật lên có thể khiến cửa sổ con không đổi kích thước như mong đợi khi
usePlatformDefaultWidth=true
. (I112ee)
Phiên bản 1.5.0-beta02
Ngày 7 tháng 6 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-beta02
. Phiên bản 1.5.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm API
asComposePaint
để cho phép sử dụng thực thểandroid.graphics.Paint
trong Compose
Sửa lỗi
- Thêm API
asComposePaint
để thay thếtoComposePaint
vì đối tượng được trả về sẽ bao bọcandroid.graphics.Paint
ban đầu (I22b4c)
Phiên bản 1.5.0-beta01
Ngày 24 tháng 5 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-beta01
. Phiên bản beta 1.5.0 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá các cơ cấu phân bổ trong quá trình kết hợp lại, ảnh động màu và
AndroidComposeView
(Ib2bfa) - Thêm tiện ích trợ giúp thú vị
CacheDrawModifierNode()
để cho phép uỷ quyền (Icf8f9) - Ra mắt thuộc tính
isLookingAhead
, có thể truy cập từMeasureScope
, để quan sát các kết quả tương lai và điều chỉnh lượt truyền chính nếu muốn. (Ibf4c3) - Thuộc tính ngữ nghĩa mới
traversalIndex
, một độ chính xác đơn dùng để sắp xếp lại các nút trong truyền tảiTalkBack
(các giá trị thấp hơn xuất hiện trước). (I9a81b, b/186443263) - Đổi tên thuộc tính ngữ nghĩa
isContainer
thànhisTraversalGroup
(I121f6) ColorProducer
hiện cóoperator fun invoke
thay vìproduce
(I4a9a2)- Thêm API biến đổi
Path
để áp dụng các phép biến đổi dịch/tỷ lệ/xoay cho các đối tượng đường dẫn. (I23434, b/233772232) - Phương thức của
ColorProducer
được gọi làproduce
. (I78bde) - Đổi tên
toFrameworkColorSpace
thànhtoAndroidColorSpace
(I4f547) - Đổi tên
ColorLambda
thànhColorProducer
. (I73b1a) - Ra mắt API để chuyển đổi giữa các kiểu không gian màu của Android và Compose. (Ie7db4, b/279979665)
- Thêm thông số màu vào
BasicText
để cho phép tạo ảnh động hoặc đặt màu văn bản hiệu quả. (Iffd88, b/246961787) - Đổi tên
TextRange.constrain
thànhTextRange.coerceIn
. (I31be2) - Thêm
TextStyle.merge(...)
được tối ưu hoá với danh sách thông số đầy đủ. (Iad234, b/246961787) - Ổn định nhiều API văn bản bao gồm
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
không được dùng nữa. Mục đích ban đầu của chúng tôi là xoá trường này. Tuy nhiên, ý kiến phản hồi cho thấy nhà phát triển cần có lựa chọn cấu hình này. Do đó, việc loại bỏ các mục không dùng nữa khỏi trường này (I98e96, b/277703184)- Thêm phương thức
TextRange.constrain
công khai. (I97912) - Giờ đây, bạn có thể mở
UrlAnnotation
trongAnnotatedString
thông qua các dịch vụ hỗ trợ tiếp cận nhưTalkBack
. (If4d82, b/253292081) - Thêm thao tác ngữ nghĩa
InsertTextAtCursor
cho các trường văn bản. (I11ed5) - Hàm khởi tạo
LineHeightStyle.Alignment(topRatio)
được nâng cấp lên API ổn định. (I79c32, b/261565383) TextMeasurer
và các API liên quan không còn ở giai đoạn thử nghiệm nữa. (I74647, b/261581753)- Thêm thao tác ngữ nghĩa
PerformImeAction
để gọi thao tác IME trên các nút của trình chỉnh sửa văn bản. (Ic606f, b/269633506) - Các API
PlatformTextInput
không còn là API thử nghiệm đối với Android. (I668eb) - đã thay đổi tên tham số giá trị cho
Enum.valueOf
(Ia9b89) - nhiều trường hợp ngoại lệ được gửi hơn từ enum valueOf (I818fe)
- Ra mắt API
PlatformTextInputAdapter
cấp thấp mới để xây dựng các phương thức triển khai tính năng nhập văn bản tuỳ chỉnh giao tiếp trực tiếp với các API nền tảng. (I58df4) - Thêm tham số
BlendMode
vào các phương thứcDrawScope.drawText
,Paragraph.paint
vàMultiParagraph.paint
để hỗ trợ nhiều thuật toán kết hợp khi vẽ văn bản trên Canvas. (I57508) - Đổi tên
Font.MaximumAsyncTimeout
thànhFont.MaximumAsyncTimeoutMillis
. Chỉ đổi tên. (I07af5) - Cập nhật các giá trị DPI của thiết bị tham chiếu
@Preview
(Id6151, b/254528382) - Thêm các tham số
brush
,alpha
vàoBasicText
để cho phép tạo ảnh động hoặc đặt bút vẽ văn bản một cách hiệu quả. - Xác định các kiểu lambda không có hộp cho Float, Double, Long, Int, Short trong :ui:ui-unit (I6f18d, b/246961787)
Sửa lỗi
- Xoá nhiều mức phân bổ trong tính năng theo dõi tốc độ con trỏ (I26bae)
- Giảm mức phân bổ trong việc quản lý đầu vào bố cục và con trỏ (I5333a)
- Tối ưu hoá mức sử dụng bộ nhớ Vectơ và kết xuất khung hình đầu tiên (I2f3c6)
- Xoá các trường hợp phân bổ khi vẽ đường kẻ và điểm bằng Canvas (I9f535)
- Bổ sung tài liệu cho
AndroidFont.fontVariationSettings
(I7d9e2)
Đóng góp bên ngoài
- Cải thiện hiệu suất và giảm mức phân bổ trong Vector API (I906cb)
Phiên bản 1.5.0-alpha04
Ngày 10 tháng 5 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-alpha04
. Phiên bản 1.5.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
Modifier.Node
Cải tiến về việc uỷ quyền Thêm chức năng uỷ quyền nâng cao cho các thực thểModifier.Node
khác từDelegatingNode
. Bạn có thể thực hiện việc này bằng các APIdelegate
vàundelegate
. Trước khi có thay đổi này, mọi API từ nút uỷ quyền đều cần được uỷ quyền rõ ràng cho nút được uỷ quyền. Sau sự thay đổi này, các giao diện nút sẽ được uỷ quyền ngầm trừ phiDelegatingNode
ghi đè các giao diện đó một cách rõ ràng. (67352bc)
Thay đổi về API
- Ra mắt
NestedScrollModifierNode
, mộtNestedScroll Modifier.Node
có thể được uỷ quyền. (I69513) - Thêm các tham số
onReset
vàonRelease
vào thành phần kết hợpAndroidViewBinding
, phản chiếu thành phần kết hợpAndroidView
và cho phép hỗ trợ sử dụng lại chế độ xem bằngViewBinding
. (I00b1e, b/276802519) - Cập nhật API Đường dẫn Compose để hỗ trợ các thao tác tua lại nhằm hỗ trợ các trường hợp sử dụng thao tác với Đường dẫn thường xuyên và có thể sử dụng lại nhanh hơn. (I7b797)
- Thêm
TextStyle.merge(...)
được tối ưu hoá với danh sách thông số đầy đủ. (Iad234, b/246961787) - Ổn định nhiều API văn bản bao gồm
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
,MultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
không được dùng nữa. Mục đích ban đầu của chúng tôi là xoá trường này. Tuy nhiên, ý kiến phản hồi cho thấy nhà phát triển cần có lựa chọn cấu hình này. Do đó, việc loại bỏ các mục không dùng nữa khỏi trường này (I98e96, b/277703184)
Sửa lỗi
- Khắc phục hồi quy trong đó bàn phím không hiển thị cho các trường văn bản bên trong hộp thoại không do thành phần kết hợp
Dialog
tạo. (I82551, b/262140644)
Phiên bản 1.5.0-alpha03
Ngày 19 tháng 4 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-alpha03
. Phiên bản 1.5.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Hành vi mặc định mới cho
SubcomposeLayout
trongLookaheadScope
:SubcomposeLayouts
không có các vùng có điều kiện (ví dụ:TabRow
,Scaffold
,BoxWithConstraints
, v.v.) hiện hoạt động tốt với ảnh động xem trước.
Thay đổi về API
- Theo mặc định,
intermediateMeasurePolicy
mặc định mới sử dụng lại chính sách đo lường từ lượt chuyển đổi xem trước sẽ cho phép các loại phụSubcomposeLayout
không có vùng có điều kiện nhưScaffold
,TabRow
vàBoxWithConstraints
hoạt động với tính năng quan sát trước. (Id84c8) - Giờ đây, trình kết hợp lại được tạo cho một cửa sổ Android sẽ chỉ chặn các lệnh gọi đến
withFrameNanos
thay vì toàn bộ quá trình kết hợp khi nhận được thông báoON_STOP
. Tức là các cửa sổ liên kết với các hoạt động bị dừng sẽ tiếp tục kết hợp lại khi có thay đổi về dữ liệu nhưng ảnh động hoặc bất kỳ phương thức gọi nào khác củawithFrameNanos
sẽ chặn. (Id9e7f, b/240975572) - Thay đổi
motionEventSpy
thành ổn định. (Ic5ec4, b/261560988) - Thêm phương thức
TextRange.constrain
công khai. (I97912) PlatformTextStyle.includeFontPadding
không còn được dùng nữa nhằm khuyến khích nhà phát triển sử dụng API tương thích này để chuyển đổi và kiểm thử chế độ cài đặtincludeFontPadding
false. (I98e96, b/277703184)
Phiên bản 1.5.0-alpha02
Ngày 5 tháng 4 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-alpha02
. Phiên bản 1.5.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- API
SubcomposeLayout
mới có chính sách đo lường trung gian bổ sung để xử lý logic đo lường/bố cục trong ảnh động dựa trên giao diện nhìn. (I017d3) - PointerInput hiện là tải từng phần và sử dụng sửa đổi.Node để đạt được hiệu suất tốt hơn (đọc về thay đổi nhỏ về hành vi). (15dab9)
- Thay đổi các API thử nghiệm thành ổn định với Sự kiện chính. (I9c7d8, b/261566839, b/261567368)
- Thay đổi các API thử nghiệm thành ổn định trong
PointerInputChange
. (I1b543, b/261560988, b/261565762, b/261565749) - Thêm phương thức tạo thực thể cho
SuspendingPointerInputModifierNode
để triển khaiModifier.Node
phức tạp hơn. (Ic4933) - Giờ đây, bạn có thể mở
UrlAnnotation
trongAnnotatedString
thông qua các dịch vụ hỗ trợ tiếp cận nhưTalkBack
. (If4d82, b/253292081) - Thêm API để chặn các khoá phần cứng trước khi chúng được gửi đến bàn phím mềm (I4f4c6, b/186800395)
- Thêm thao tác ngữ nghĩa
InsertTextAtCursor
cho các trường văn bản. (I11ed5) - Giờ đây, các thao tác kiểm thử liên quan đến văn bản (ví dụ:
performTextInput
) sẽ yêu cầu trực tiếp tâm điểm bằng hành động ngữ nghĩa thay vì nhấp vào trường này. (I6ed05)
Sửa lỗi
- Thao tác kiểm thử văn bản hiện yêu cầu bạn phải bật các trường văn bản. (Iab328)
Phiên bản 1.5.0-alpha01
Ngày 22 tháng 3 năm 2023
Phát hành androidx.compose.ui:ui-*:1.5.0-alpha01
. Phiên bản 1.5.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Hiện tại, bổ sung, trung gian, bố cục không yêu cầu LookaheadScope rõ ràng. Khối đo lường trong trung gian có hổ nấc phạm vi để nhận
- LookaheadLayout đã được thay thế bằng LookaheadScope, không còn là Bố cục nữa. Điều này cho phép nội dung chid trong LookaheadScope được kiểm soát trực tiếp bằng MeasurePolicy của cấp độ gốc. (Ibe2e5)
- Thêm
Modifier.Node#coroutineScope
để cho phépModifier.Nodes khởi chạy coroutine. (I76ef9) - Cho phépModifier.Nodes đọc CompositionLocals bằng cách triển khai giao diện CompositionLocalConsumerModifierNode. (Ib44df)
- Truyền lớp @Deprecated sang thuộc tính. (I882d1)
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.ui:ui-*:1.4.3
. Phiên bản 1.4.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề
AndroidView
có thể không được bố trí chính xác khi dùng với một số Đối tượng sửa đổi nhất định. (I4dc77, b/274797771) - Khắc phục lỗi trong tính năng Tìm kiếm tiêu điểm 2D ảnh hưởng đến Trình đơn
DropDown
(b/276811828) - Sửa lỗi trong các thuộc tính nhập/thoát tiêu điểm tuỳ chỉnh chỉ chạy khối nhập/thoát trong lần đầu tiên lambda được gọi (b/277234245)
- Khắc phục lỗi hồi quy trong hệ thống lấy nét gây ra sự cố khi đọc
focusProperties
. (b/271324781, b/274897776)
Phiên bản 1.4.2
Ngày 19 tháng 4 năm 2023
Phát hành androidx.compose.ui:ui-*:1.4.2
. Phiên bản 1.4.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề
AndroidView
không sử dụng lại đúng đối tượng sửa đổi, có thể dẫn đến hành vi và sự cố không mong muốn. (Ib67ee, b/275919849) - Khắc phục lỗi hồi quy trong đó bàn phím không hiển thị cho các trường văn bản bên trong hộp thoại không phải do thành phần kết hợp
Dialog
tạo (I82551, b/262140644)
Phiên bản 1.4.1
Ngày 5 tháng 4 năm 2023
Phát hành androidx.compose.ui:ui-*:1.4.1
. Phiên bản 1.4.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề
ParentDataModifier
không ảnh hưởng đếnAndroidView
(b/274797771)
Phiên bản 1.4.0
Ngày 22 tháng 3 năm 2023
Phát hành androidx.compose.ui:ui-*: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
- Thêm một API
PinnableContainer
mới cho phép ghim các mục trong danh sách lazy để chúng không bị loại bỏ khi cuộn ra ngoài ranh giới. Ví dụ:Modifier.focusable()
dùng cơ chế này để ghim mục hiện được đặt làm tiêu điểm. (Ib8881, b/259274257, b/195049010) - Hệ thống tiêu điểm được viết lại bằng API
Modifier.Node
thử nghiệm mới. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - 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) - Thêm vai trò hỗ trợ tiếp cận mới
DropdownList
. Bạn có thể dùng tính năng này để tái tạo hành vi củaTalkBack
khi lấy tiêu điểmandroid.widget.Spinner
. (I177e5, b/236159001) - Bạn hiện có thể dùng
PlatformTextStyle(emojiSupportMatch)
để tắt quy trình xử lý hỗ trợ biểu tượng cảm xúc (không bắt buộc) cho một Đoạn. (Ia7100, b/139326806) - Giờ đây, các hoạt động kiểm thử giao diện người dùng trong Android Compose sẽ chạy lệnh chuyển bố cục cho từng khung khi thực thi các khung để chuyển sang trạng thái rảnh (ví dụ: qua
waitForIdle
). Điều này có thể ảnh hưởng đến các hoạt động kiểm thử xác nhận trên từng khung ảnh động bố cục riêng lẻ. (I8ea08, b/222093277) - Thêm
TextMotion
thử nghiệm vàoTextStyle
để xác định Văn bản làStatic(default)
hay Ảnh động. DùngTextMotion.Animated
nếu Văn bản sẽ được điều chỉnh tỷ lệ, chuyển đổi hoặc xoay thông qua chuyển động. (I24dd7)
Phiên bản 1.4.0-rc01
Ngày 8 tháng 3 năm 2023
Phát hành androidx.compose.ui:ui-*:1.4.0-rc01
. Phiên bản 1.4.0-rc01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm phương thức nạp chồng của hàm có khả năng kết hợp
AndroidView
, chấp nhận tham sốonReset
. Điều này cho phép sử dụng lại các thực thể View khi nút của chúng trong cấu trúc bị loại bỏ và sử dụng lại theo cách tương thích. Thao tác này đặc biệt hữu ích choLazyRows
vàLazyColumns
của Khung hiển thị. (I3f10d, b/230099236) - Ra mắt API
PlatformTextInputAdapter
cấp thấp mới để xây dựng các phương thức triển khai tính năng nhập văn bản tuỳ chỉnh giao tiếp trực tiếp với các API nền tảng. (I58df4)
Sửa lỗi
- Giờ đây, thao tác ngữ nghĩa
SetText
củaBasicTextField
sẽ cập nhật vùng đệm văn bản bằng cách sử dụng cùng một đường dẫn mã như bản cập nhật IME và các hàm kiểm thử (ví dụ:performTextReplacement
). - Các hàm kiểm thử văn bản
performTextClearance
,performTextReplacement
vàperformTextSelection
hiện sử dụngSemanticsActions
. (I0807d, b/269633168, b/269624358)
Phiên bản 1.4.0-beta02
Ngày 22 tháng 2 năm 2023
Phát hành androidx.compose.ui:ui-*:1.4.0-beta02
. Phiên bản 1.4.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá API
modifierElementOf()
. Vui lòng gia hạn trực tiếp từModifierNodeElement
. (I2256b) - Thêm lệnh gọi lại
Modifier.Node.onReset()
mới cho phép bạn đặt lại một số trạng thái cục bộ để xử lý đúng cách trường hợpLayout
được sử dụng lại (ví dụ: một mục củaLazyColumn
). SửaFocusTargetModifierNode
để đặt lại đúng cách trạng thái tập trung. (I65495, b/265201972) - Thêm tham số
BlendMode
vào các phương thứcDrawScope.drawText
,Paragraph.paint
vàMultiParagraph.paint
để hỗ trợ nhiều thuật toán kết hợp khi vẽ văn bản trên Canvas. (I57508)
Sửa lỗi
- Cải thiện thuật toán thứ tự tiêu điểm hỗ trợ tiếp cận, ví dụ: các thanh trên cùng/dưới cùng thường được đọc đầu tiên/cuối cùng theo thứ tự (74e9c5)
Phiên bản 1.4.0-beta01
Ngày 8 tháng 2 năm 2023
Phát hành androidx.compose.ui:ui-*: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
- Đổi tên
PinnableContainer.PinnedHandle.unpin()
thànhrelease()
(I4667a) - Thêm
waitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
vàwaitUntilDoesNotExist
làm API thử nghiệm choComposeTestRule
, mở rộng APIwaitUntil
để chấp nhận mọi trình so khớp và số lượng nút bất kỳ. Hãy xemComposeTestRule
để biết thêm thông tin. (Ifa1b9, b/226934294) - Đổi tên
Font.MaximumAsyncTimeout
thànhFont.MaximumAsyncTimeoutMillis
. (I07af5) - Xoá
GoogleFont.Provider.AllFontsListUri
và liên kết đến mã này trong ktdoc. (I16f29)
Sửa lỗi
- Bổ sung tài liệu cho
AndroidFont.fontVariationSettings
(I7d9e2)
Phiên bản 1.4.0-alpha05
Ngày 25 tháng 1 năm 2023
Phát hành androidx.compose.ui:ui-*:1.4.0-alpha05
. Phiên bản 1.4.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
- Ra mắt các phương thức nạp chồng thử nghiệm mới cho hàm
runComposeUiTest
và các hàmcreate*ComposeRule
chấp nhận tham sốCoroutineContext
. Ngữ cảnh này sẽ được dùng cho thành phần kiểm thử cũng như mọi lệnh gọiLaunchedEffect
vàrememberCoroutineScope()
trong thành phần đó. (I10614, b/265177763) - Thêm một API mới để theo dõi tốc độ theo 1 phương diện (If5a82)
FocusRequester
nay được đánh dấu là@Stable
. (I580ee)- Xoá chú thích thử nghiệm khỏi hàm khởi tạo
DialogProperties
nhận tham sốusePlatformDefaultWidth
. (Ic4048) - Thêm hàm vào vị trí cần tính toán và tiếp tuyến với một khoảng cách nhất định đối với một đường thẳng – với
PathMeasure.getPosition()
vàPathMeasure.getTangent()
(I3b47c) - Xoá phương thức setter công khai vô tình xuất hiện trên
PlatformParagraphStyle
. (I07f47) - Kiểu/tính chất rỗng khác dành cho các hàm cùng dòng/bị ẩn vì ngừng sử dụng (I24f91)
- Thêm
AnnotatedString.hasStringAnnotations
để truy vấn các chú thích có cơ cấu phân bổ 0 (zero-allocations). (I94dfe, b/246960758) - Thêm phương thức nạp chồng mới cho hàm
TextMeasurer.measure
(hàm này nhậnString
dưới dạng văn bản). (I47b2d, b/242705342) - Các API
LineBreak
vàHyphens
trong TextStyle dần trở nên ổn định. (Ic1e1d)
Đóng góp bên ngoài
- Các phương thức
notifyFocusedRect
trongTextInputSession
vàTextInputService
đã được dùng trở lại. (I23a04, b/262648050)
Phiên bản 1.4.0-alpha04
Ngày 11 tháng 1 năm 2023
Phát hành androidx.compose.ui:ui-*:1.4.0-alpha04
. Phiên bản 1.4.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
- Thêm một API
PinnableContainer
mới cho phép ghim các mục trong danh sách lazy để chúng không bị loại bỏ khi cuộn ra ngoài ranh giới. Ví dụ:Modifier.focusable()
dùng cơ chế này để ghim mục hiện được đặt làm tiêu điểm. (Ib8881, b/259274257, b/195049010) - Hệ thống tiêu điểm được viết lại bằng API
Modifier.Node
thử nghiệm mới. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - 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) - Thêm vai trò hỗ trợ tiếp cận mới
DropdownList
. Bạn có thể dùng tính năng này để tái tạo hành vi củaTalkBack's
khi đặt tiêu điểm vàoandroid.widget.Spinner
. (I177e5, b/236159001) - Bạn hiện có thể dùng
PlatformTextStyle(emojiSupportMatch)
để tắt quy trình xử lý hỗ trợ biểu tượng cảm xúc (không bắt buộc) cho một Đoạn. (Ia7100, b/139326806) - Giờ đây, các hoạt động kiểm thử giao diện người dùng trong Android Compose sẽ chạy lệnh chuyển bố cục cho từng khung khi thực thi các khung để chuyển sang trạng thái rảnh (ví dụ: qua
waitForIdle
). Điều này có thể ảnh hưởng đến các hoạt động kiểm thử xác nhận trên từng khung ảnh động bố cục riêng lẻ. (I8ea08, b/222093277) - Thêm
TextMotion
thử nghiệm vàoTextStyle
để xác định Văn bản làStatic(default)
hay Ảnh động. DùngTextMotion.Animated
nếu Văn bản sẽ được điều chỉnh tỷ lệ, chuyển đổi hoặc xoay thông qua chuyển động. (I24dd7)
Thay đổi về API
- Thay thế đối số
maxSize: IntSize
trongdrawText
bằngsize: Size
để cùng dòng với các hàmDrawScope
khác. Theo mặc định,size
được đặt thànhSize.Unspecified
và điều này sẽ không thay đổi hành vi mặc định trước đó. (Icd27d) - Xoá hàm khởi tạo phông chữ thử nghiệm không dùng nữa. (I8a724, b/261435386)
- Lớp dữ liệu công cụ giao diện người dùng
Group
hiện có trườngisInline
. Trường này cho biết liệu nhóm có phải là dành cho lệnh gọi đến một hàm có khả năng kết hợp cùng dòng hay không. NếuisInline
làtrue
thì lệnh gọi sẽ đến một hàm có khả năng kết hợp cùng dòng. Tuy nhiên, giá trị này có thể là false đối với các lệnh gọi đến hàm có khả năng kết hợp cùng dòng từ các mô-đun được biên dịch bằng phiên bản trình bổ trợ trình biên dịch Compose không tạo thông tin hàm cùng dòng. (Idb846) - Đưa một số API thử nghiệm trước đây vào phiên bản chính thức
- Rotary Scroll Event API hiện đã ổn định (I42ad3, b/261561229)
FontVariation
API hiện đã ổn định (I8779f, b/241016309)- Tất cả các hàm khởi tạo
Font()
hiện là API ổn định (I5948b, b/261435386) DeviceFontFamilyName
hiện đã ổn định (I8b640, b/261435386)- Hàm khởi tạo
AndroidFont
cóvariationSettings
hiện là một API ổn định và có thể dùng để tạo các loại mới của bộ mô tả phông chữ. (I5adcc, b/261565807) createFontFamilyResolver
API hiện đã ổn định. Bạn có thể dùng API này để phát hiện các ngoại lệ chưa được phát hiện trong quá trình tải phông chữ không đồng bộ. (Ibb481, b/261435386)Font.loadingStrategy
API hiện đã ổn định. (I5937c, b/261435386)GoogleFont
API hiện đã ổn định. (Ic90b0, b/261435386)TextUnit(float, TextUnitType)
hiện là API ổn định. (I90c84, b/261561612)pluralStringResource
hiện là API ổn định. (I09849, b/261439703)
Phiên bản 1.4.0-alpha03
Ngày 7 tháng 12 năm 2022
Phát hành androidx.compose.ui:ui-*:1.4.0-alpha03
. Phiên bản 1.4.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá
ExperimentalComposeUiApi
khỏiPointerIcon
(I23af8) - Ra mắt Thao tác hỗ trợ tiếp cận trên trang:
PageUp
,PageDown
,PageLeft
,PageRight
. Lưu ý rằng những thao tác này chỉ có trong API 29. (Ida4ab) - Cập nhật khung hiển thị tham số
rememberNestedScrollConnection
từ khung hiển thị gốc thành khung hiển thị máy chủ. (Ia5200) - Thêm Modifier API (API Đối tượng sửa đổi) để 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.
- Đổi tên
CompositingStrategy.Always
thànhOffscreen
để cho biếtgraphicsLayer
sẽ luôn được kết xuất vào vùng đệm trung gian (I47dc1) - Hiện đã ổn định phương thức nạp chồng bố cục có nhiều vị trí nội dung (I10566, b/248294649)
- Thêm các API thử nghiệm mới
PerfettoTrace.record {}
vàPerfettoTraceRule
để ghi lại dấu vết Perfetto (còn gọi là Dấu vết hệ thống) như một phần của hoạt động kiểm thử, để kiểm tra hành vi và hiệu suất kiểm thử. (I3ba16) - Ở những hoạt động kiểm thử giao diện người dùng sử dụng quy tắc Compose, các thành phần tiếp tục (continuation) trong quá trình gọi lại
withFrameNanos
sẽ không được gửi đi cho đến khi mọi lệnh gọi lại khung đã chạy xong. Điều này phù hợp với hành vi của Compose khi chạy bình thường. Tuy nhiên, bài kiểm thử dựa trên hành vi cũ có thể không thành công. Điều này chỉ ảnh hưởng đến mã gọi trực tiếpwithFrameNanos
hoặcwithFrameMillis
và có logic bên ngoài lệnh gọi lại được truyền đến các hàm mà có thể cần được di chuyển bên trong lệnh gọi lại. Hãy xem các thay đổi về hoạt động kiểm thử ảnh động trong CL này để biết ví dụ. - Thêm tham số
onPerformTraversals: (Long) -> Unit
(không bắt buộc) vào hàm khởi tạoTestMonotonicFrameClock
và hàm nhà máy để chạy mã sau lệnh gọi lạiwithFrameNanos
nhưng trước khi tiếp tục coroutine của phương thức gọi. (Idb413, b/254115946, b/222093277, b/255802670) - Thêm EmojiCompat vào Compose (Ibf6f9, b/139326806)
- Thêm tham số hình nền mới vào
@Preview
để hỗ trợ màu động (I9f512)
Sửa lỗi
- Hệ thống hiện sẽ gửi thông báo áp dụng ảnh chụp nhanh sau khi
Recomposer
hoàn tất việc áp dụng các thay đổi. (Iad6c0, b/222093277) - Ra mắt các thay đổi trong
captureToImage
để cho phép chụp ảnh màn hình nhiều cửa sổ. Điều này rất hữu ích cho các hoạt động kiểm thử ảnh chụp màn hình sử dụng Cửa sổ bật lên của Compose. (I169c5)
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.ui:ui-*:1.4.0-alpha02
. Phiên bản 1.4.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Cập nhật
GraphicsLayerScope
để hiển thị kích thước hiện tại củagraphicsLayer
. Điều này rất hữu ích cho việc tính toán các phép biến đổigraphicsLayer
dưới dạng một hàm của kích thước Thành phần kết hợp (Composable). (If8c43,b/181387080) - Ra mắt
CompositingStrategy
nhằm xác định thời điểm tận dụng lớp kết hợp ngoài màn hình để hiển thị nội dunggraphicsLayer
. Tự động duy trì hành vi mặc định sẽ tận dụng nội bộ một lớp nếu áp dụng phiên bản alpha hoặcRenderEffect/Overscroll
. Luôn cung cấp vùng đệm ngoài màn hình mà ở đó, thay vì tận dụng vùng đệm ngoài màn hình,ModulateAlpha
sẽ điều chỉnh từng hướng dẫn vẽ đã ghi tronggraphicsLayer
. Việc dùngModulateAlpha
sẽ vẫn tận dụng vùng đệm ngoài màn hình để sử dụngRenderEffect/Overscroll
(I25e82, b/256382834) - Thêm
invalidateSubtree()
vàoModifier.Node
để cho phép vô hiệu hoá toàn bộ hệ phân cấp cho bố cục và bản vẽ. (I4bd90) - Chuyển
rememberNestedScrollInteropConnection
lên bản ổn định. Giới thiệu khả năng truyền khung hiển thị gốc tớirememberNestedScrollInteropConnection
. Điều này có thể giúp khung hiển thị tuỳ chỉnh phản ứng tốt hơn với các giới hạn cuộn, đặc biệt là trong các khung hiển thị không chuẩn (ví dụ:ModalBottomSheetDialog
). (I9e107) - Thêm giao diện
ObserverNode
có thể dùng trong các lượt triển khaiModifier.Node
cần được thông báo khi giá trị mà chúng đọc trước đó đã thay đổi (I5728b, b/247716483) - Thêm một hàm khởi tạo mới vào
Paint
chấp nhậnandroid.graphics.Paint
gốc. Đồng thời thêm hàm mở rộngtoComposePaint()
chuyển đổi một đối tượng Paint (Vẽ) gốc hiện có thành Compose Paint. (Ica91b) - Thêm
FontFamily.Resolver.resolveAsTypeface
mới để dùng trên Android. (I8950b) - Thêm
ToolingState
để giúp công cụ thay đổi trạng thái nội bộ của Thành phần kết hợp (Ie6614) - Tái cấu trúc công cụ để hỗ trợ tốt hơn cho ảnh động mới được thêm vào (I8677b)
- Thêm tham số
minLines
vào Text (Văn bản) Material cũng như 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)
Phiên bản 1.4.0-alpha01
Ngày 24 tháng 10 năm 2022
Phát hành androidx.compose.ui:ui-*: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) - Ngừng sử dụng tính năng tái chế các đối tượng hỗ trợ tiếp cận trong androidx. Chúng tôi nhận thấy các thay đổi về hiệu suất là không đáng kể, ngay cả trong các phiên bản cũ nhất được hỗ trợ. (I0a961)
- Thêm
DrawStyle
ở dạng thuộc tính Thử nghiệm vàoTextStyle
vàSpanStyle
để hỗ trợ vẽ văn bản có đường viền. (If24b8, b/155421273) AnnotatedString.Builder
hiện triển khaikotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
hiện có phương thứcappend(AnnotatedString, start: Int, end: Int)
để nối một chuỗi con củaAnnotatedString
và các kiểu giao nhau.- Thêm tham số
DrawStyle
vào các hàm vẽParagraph
vàMultiParagraph
để hỗ trợ vẽ văn bản có đường viền. (Ic8102, b/155421273)
Đóng góp bên ngoài
- Cảm ơn
vighnesh
vì đã thêm Thiết bị TV vào Bản xem trước (Ie15cd)
Phiên bản 1.3
Phiên bản 1.3.3
Ngày 11 tháng 1 năm 2023
Phát hành androidx.compose.ui:ui-*:1.3.3
. Phiên bản 1.3.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố thỉnh thoảng xảy ra trên Android 9 khi Hoạt động đang lưu trạng thái của Khung hiển thị Compose. (I0b755, b/260322832)
Phiên bản 1.3.2
Ngày 7 tháng 12 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.2
. Phiên bản 1.3.2 bao gồm các thay đổi sau.
Sửa lỗi
- Cập nhật để sử dụng Profobuf 3.21.8 tránh cảnh báo bảo mật trong
protobuf-javalite:3.19.4
(CVE-2022-3171) (b/255545055)
Phiên bản 1.3.1
Ngày 9 tháng 11 năm 2022
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*: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
- Bộ API thử nghiệm mới
LookaheadLayout
(hỗ trợ các hành vi ảnh động mà trước đây không làm được) - Bộ API thử nghiệm mới
Modifier.Node
(phương án thay thế có hiệu suất cao hơn choModifier.composed
) - Cải thiện khả năng hỗ trợ phần lồng ghép cửa sổ.
- Hỗ trợ tiêu điểm cho các phím D-Pad và bàn phím phần cứng trong LazyLists.
- Giảm độ nâng tối đa được hỗ trợ trong hộp thoại và cửa sổ bật lên xuống còn 8 dp (sự thay đổi có thể gây lỗi về hành vi đối với một số hệ thống thiết kế tuỳ chỉnh – lý do trong phần ghi chú phát hành của phiên bản beta01)
- Có nhiều điểm cải tiến nhỏ, không gây lỗi API
- Sửa nhiều lỗi và cải tiến hiệu suất
Phiên bản 1.3.0-rc01
Ngày 5 tháng 10 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.0-rc01
. Phiên bản 1.3.0-rc01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm các Dấu gạch nối API thử nghiệm mới để hỗ trợ tính năng tự động gạch nối trong Văn bản (Iaa869)
Sửa lỗi
- Theo mặc định, phông chữ
DeviceFontFamilyName
sẽ không định cấu hình các chế độ cài đặt biến thểwght
vàital
mà sẽ sử dụng chế độ cài đặt nền tảng choTypeface
được tải. (Ia7a6d, b/246989332) - Sửa lỗi rò rỉ bộ nhớ
LazyColumn
–onModifierLocalsUpdated
không được gọi với giá trị mặc định khi các đối tượng sửa đổi được sử dụng lại (b/230168389)
Phiên bản 1.3.0-beta03
Ngày 21 tháng 9 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.0-beta03
. Phiên bản 1.3.0-beta03 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm tuỳ chọn để tuỳ chỉnh dấu ngắt dòng trong Văn bản. (I86907)
- Thay đối số
size:IntSize
bằngconstraints: Constraints
trong phương thứcTextMeasurer.measure
để hỗ trợ các điều kiện bắt buộc tối thiểu về chiều rộng. (I37530, b/242707525)
Sửa lỗi
- API
BackHandler
của AndroidX Activity hiện hoạt động trong một thành phần kết hợpDialog
. (I35342)
Phiên bản 1.3.0-beta02
Ngày 7 tháng 9 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.0-beta02
. Phiên bản 1.3.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm phương thức nạp chồng thử nghiệm cho Bố cục để chấp nhận danh sách bao gồm nhiều lambda nội dung có khả năng kết hợp, từ đó đưa các số liệu đo lường có nguy cơ vào các lambda nội dung khác nhau theo nhiều cách (Ic1b4e)
Các thay đổi đối với API thử nghiệm liên quan đến Tiêu điểm:
- Ngừng sử dụng
FocusDirection.In
vàFocusDirection.Out
, đồng thời thay thế bằngFocusDirection.Enter
vàFocusDirection.Exit
. (Ia4262, b/183746982) - Bổ sung 2 thuộc tính tiêu điểm mới là enter (vào) và exit (thoát) để chỉ định hành vi tuỳ chỉnh cho
FocusManager.moveFocus(Enter)
vàFocusManager.moveFocus(Exit)
. (I5f3f9, b/183746982) - Giờ đây, bạn có thể dùng
FocusRequester.Cancel
để huỷ một thao tác di chuyển tiêu điểm. Bạn có thể dùngFocusRequester.Cancel
trong bất kỳ thuộc tính tiêu điểm nào sau đây: up, down, left, right, next, previous, start, end, enter và exit (lên, xuống, sang trái, sang phải, đi tiếp, quay lại, bắt đầu, kết thúc, vào và thoát). (Ib300f)
Phiên bản 1.3.0-beta01
Ngày 24 tháng 8 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.0-beta01
. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.
Tái cấu trúc Modifier.Node
Phần lớn lớp xử lý các thực thể Modifier/Modifier.Element
và điều phối hành vi của những thực thể này trên LayoutNodes
sẽ được tái cấu trúc. Hiện tại, cách tái cấu trúc như trên không ảnh hưởng đến API công khai của bất kỳ công cụ sửa đổi nào trong Compose, đồng thời có thể được xem là thay đổi chỉ triển khai. Mặc dù vậy, đây là một thay đổi quan trọng vì nhiều lý do. (Ie4313)
Tóm tắt nội dung thay đổi
Các API Modifier.Node
thử nghiệm đã thêm sẽ cung cấp tính năng trừu tượng hỗ trợ duy trì trạng thái trên một thực thể được giữ lại với vòng đời của nút bố cục, cũng như được phân bổ theo từng nút bố cục và mỗi lần sử dụng Modifier.Element
tương ứng tạo ra nút đó.
Nói chung, tính năng trừu tượng này cung cấp một cơ chế thay thế để tạo ra các đối tượng sửa đổi trạng thái mà không cần dựa vào cơ chế của API Modifier.composed
.
Rủi ro
Thay đổi này hoàn toàn tương thích nhị phân với bản phát hành trước, đồng thời hướng đến tương thích ngược về mặt hành vi ghi nhận được cả trên thực tế và lý thuyết. Tuy nhiên, có vài hệ thống phụ của Compose mà cách tái cấu trúc này chưa tác động đến. Ngoài ra, có thể hành vi đã thay đổi theo những cách chưa trải qua quy trình kiểm thử của chúng tôi, cũng như chưa được tìm thấy và khắc phục.
Vui lòng thận trọng khi nâng cấp lên bản phát hành này. Nếu bạn gặp vấn đề với thao tác này, vui lòng cho chúng tôi biết.
API thử nghiệm
Chúng tôi đã thêm nhiều API thử nghiệm và tất cả đều liên quan đến khái niệm mới về "Modifier.Node". Modifier.Node được tạo từ
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
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ể tương tác và đọc được phần dưới cùng của hộp thoại hoặc cửa sổ bật lên.
Thay đổi về API
- Khắc phục sự cố
painterResource
không cập nhật các thay đổi về cấu hình (I58e73, b/228862715) rememberTextMeasurer
không còn nhận các thông sốFontFamily.Resolver
,Density
hoặcLayoutDirection
. Vui lòng dùng hàm khởi tạoTextMeasurer
để cung cấp giá trị tuỳ chỉnh cho những thông số này. (Ia1da3)- Thêm thuộc tính
DialogProperties.decorFitsSystemWindows
để các Hộp thoại có thể hỗ trợWindowInsets
. (I57742, b/229378542) - Di chuyển các hàm khởi tạo phông chữ về tệp Kotlin ban đầu để giữ lại khả năng tương thích nhị phân. Không thay đổi so với bản phát hành ổn định gần đây nhất. (Ieb2f3)
- Xoá toán tử không cần thiết khỏi nhiều định nghĩa tương đương nhau – thao tác này không gây ảnh hưởng gì. (I6c309)
FontVariation.Setting
là một giao diện kín, hỗ trợ các API kẹp trong tương lai. (I11021, b/143703328)- Thêm
CompositionGroup.findParameters
vàoSlotTree.kt
. Việc này giúp các công cụ truy xuất thông số choCompositionGroup
mà không cần phải phân tích cú pháp toàn bộ bảng vị trí. (I124fe)
Phiên bản 1.3.0-alpha03
Ngày 10 tháng 8 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.0-alpha03
. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
LayoutCoordinates.findRootCoordinates()
hiện đã được công khai (I7fa37, b/204723384)- Thêm API thử nghiệm để nhận
LayoutCoordinates
trongPlacementScope
. Điều này cho phép các nhà phát triển biết vị trí hiện tại của bố cục để đặt vị trí con so với vị trí của bố cục. (I5482b, b/238632578) - Thêm
LayoutCoordinates.transformFrom
để chuyển đổi Ma trận từLayoutCoordinates
sangLayoutCoordinates
khác. (Ic5ab1, b/238632578) - Ngừng sử dụng
SemanticsModifier.id
và thay vào đó, chuyển mã ngữ nghĩa sangLayoutInfo.semanticsId
. (Iac808, b/203559524) - Phông chữ trong tài nguyên hiện hỗ trợ thiết lập chế độ cài đặt biến thể phông chữ (API cấp 26 trở lên). (I900dd, b/143703328)
- Hỗ trợ phông chữ có thể thay đổi trong
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Hàm khởi tạo phông chữ hiện chấp nhận danh sách
FontVariation.Setting
để định cấu hình các phông chữ thay đổi trên thiết bị chạy Android O trở lên. (I11a9d, b/143703328) - Thêm API
FontVariation
để xác định và sử dụng phông chữ biến đổi. (I3c40c, b/143703328) - Hàm khởi tạo
LineHeightStyle.Alignment
hiện đang ở chế độ công khai (thử nghiệm) (I4bbbe, b/235876330) - Paragraph (Đoạn) hiện là expect|actual (mong đợi|thực tế) và được xác định cho Android và Máy tính. (Id387e, b/239962983)
- Đoạn Giao diện hiện là một Đoạn giao diện kín. Không có trường hợp sử dụng nào để chia nhỏ paragraph (đoạn). Bạn nên liên hệ nếu sự thay đổi này ảnh hưởng đến bạn. (If5247, b/239962983)
- Xoá chú giải thử nghiệm khỏi
PlatformTextStyle
vàLineHeightStyle
. (I64bef) - Ngừng sử dụng
TextInputService.show|hideSoftwareKeyboard
. Vui lòng sử dụngSoftwareKeyboardController
thay thế trong mã ứng dụng vàTextInputSession
trong mã quản lý IME. (I14e4c, b/183448615) - Thêm API mới cho loại ảnh động hiện có (I26179)
Sửa lỗi
- Thêm
@RequiresPermission
vào các API yêu cầu cấp quyềnPOST_NOTIFICATIONS
trên SDK 33 trở lên. (Ie542e, b/238790278)
Phiên bản 1.3.0-alpha02
Ngày 27 tháng 7 năm 2022
Phát hành androidx.compose.ui:ui-*:1.3.0-alpha02
. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm một thuộc tính
PointerInputChange#pressure
mới để truy xuất dữ liệu về áp lực. (I45a5e, b/205164819) - Thêm
rememberTextMeasurer
để dễ dàng tạo và ghi nhớ các thực thểTextMeasurer
trong cấu trúc. (I8d66e) Rect
,RoundRect
vàMutableRect
hiện hỗ trợ cú phápin
của Kotlin để gọi hàmcontains
. (Ie42b0, b/238642990)- Xoá các hàm không cần thiết khỏi
KeyInjectionScope
, vì chúng có thể dễ dàng triển khai bằng các phần đơn giản hơn của API. Các hàm đã xoá bao gồmpressKeys
,keysDown
vàkeysUp
. (I81d77) - Tên hằng số và tham số được tái cấu trúc trong
KeyInjectionScope
để bao gồm hậu tố "Millis", trong đó đơn vị của hằng số và tham số kể trên là mili giây. (Iabef5) - Thêm phương thức
toStringForLog()
vàoEditCommand
để giúp khắc phục sự cố chỉnh sửa văn bản. (I53354, b/228862731) - Thêm hàm mở rộng
drawText
trênDrawScope
để cung cấp cách vẽ văn bản nhiều kiểu trên các thành phần kết hợp và đối tượng sửa đổi hoạt động trênDrawScope
nhưCanvas
vàdrawBehind
. (I16a62, b/190787898) - Ra mắt một API thử nghiệm mới có tên là
TextMeasurer
, cho phép tính toán bố cục văn bản tuỳ ý để tạo kết quả giống hệt vớiBasicText
, không phụ thuộc vào thời gian chạy trong Compose. (I17101) - Thêm
mapTree
vàoSlotTree.kt
. Điều này cho phép các công cụ kiểm traSlotTree
mà không cần tạo bản sao trong bộ nhớ trước tiên như asTree. Đối với Layout Inspector (Trình kiểm tra bố cục), tính năng này giúp cải thiện hiệu suất của một factor 10. (I5e113) - Thay đổi tính năng Xem trước trong Compose để được lưu trữ trong các tệp đầu ra nhị phân, để cho phép nhà phát triển viết và sử dụng lại chú giải
MultiPreview
trong các thư viện. (I85699, b/233511976)
Sửa lỗi
- Khi thêm sự kiện
InputEventChange
vàoVelocity
Tracker, chúng tôi sẽ xem xét delta thay vì vị trí, điều này sẽ đảm bảo tốc độ được tính toán chính xác cho tất cả các trường hợp ngay cả khi phần tử đích di chuyển (Icea9d, b/216582726, b/223440806, b/227709803) - Khắc phục NPE do
AnnotatedString.toUpperCase
gây ra khi có chú thích. (I0aca2, b/210899140)
Phiên bản 1.3.0-alpha01
Ngày 29 tháng 6 năm 2022
Phát hành androidx.compose.ui:ui-*: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
LookaheadLayout
mới hỗ trợ lượt truyền có tính toán trước rồi mới đưa ra bố cục/phép đo lường thực tế. Điều này cho phép tính toán trước bố cục khi bố cục thay đổi, trong khi cho phép dùng bố cục/phép đo lường sau khi tính toán để dùng kích thước/vị trí đã tính toán trước để tạo kích thước và vị trí hướng tới mục tiêu.SubcomposeLayouts
hiện chưa được hỗ trợ nhưng sẽ có trong bản phát hành sắp tới. (I477f5)- Thêm tham số alpha (không bắt buộc) vào phiên bản Brush (Bút vẽ) của
TextStyle
vàSpanStyle
để sửa đổi độ mờ của toàn bộText
. (Ic2fac, b/234117635) - Giới thiệu loại chú thích
UrlAnnotation
và các phương thức liên kết để hỗ trợ việc liên kếtTalkBack
trongAnnotatedString
. (I1c754, b/231495122) - Di chuyển chức năng tiện ích sang thời gian chạy (I4f729)
Sửa lỗi
TextLayoutResult.getLineForOffset
không gửi. (Idc5d6, b/235876324)
Đóng góp bên ngoài
- Thêm API
WindowInfo.keyboardModifiers
mới để quan sát trạng thái của API này trong các hàm có khả năng kết hợp hoặc thông qua snapshotFlow (Icdb8a)
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.ui:ui-*:1.2.1
. Phiên bản 1.2.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi nullpointer trong công cụ kiểm tra (b/237987764)
- Khắc phục trường hợp ngoại lệ truyền lớp trong quá trình ghi nhớ trong công cụ kiểm tra (b/235526153)
Phiên bản 1.2.0
Ngày 27 tháng 7 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0
. Phiên bản 1.2.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.1.0
Những cải tiến trong việc truyền tải có tâm điểm:
- Giờ đây, thao tác cuộn tập trung vào danh sách Lazy sẽ hoạt động bằng cách sử dụng API cốt lõi
BeyondBoundsLayout
mới - API tuỳ chỉnh hành vi mới trong
FocusOrder
vàFocusProperties
- Cải thiện hành vi bằng bàn phím thực hoặc điều khiển từ xa của TV
- Giờ đây, thao tác cuộn tập trung vào danh sách Lazy sẽ hoạt động bằng cách sử dụng API cốt lõi
API mới cho:
- Lồng ghép cửa sổ
- Các dữ liệu gốc cho ảnh động bố cục dựa trên cử chỉ, vô hạn và có bố cục
- Các chức năng của
GraphicsLayer
, bao gồmRenderEffect
Sửa nhiều lỗi và cải thiện hiệu suất
Phiên bản 1.2.0-rc03
Ngày 29 tháng 6 năm 2022
Phát hành androidx.compose.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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)
- Đã thêm các hàm bậc cao hơn vào
KeyInjectionScope
để chèn các phím nhấn trong khi các phím khác được giữ hoặc bật. Các hàm này bao gồmwithKeysDown
,withKeysToggled
, v.v. Ngoài ra, bạn cũng có thể thêm các thuộc tính khác để kiểm tra xem một phím meta cụ thể có hoạt động hay không, chẳng hạn nhưisCtrlDown
để kiểm tra xem một trong hai phím điều khiển có được nhấn hay không. Hãy tham khảoKeyInjectionScope
để xem tài liệu về từng hàm. (I9f6cd, b/229831515) - Ra mắt
OverscrollEffect
thử nghiệm để cho phép các hiệu ứng cuộn quá mức tuỳ chỉnh cùng với các phương thức nạp chồngModifier.scrollable
chấp nhận hiệu ứng này. - Chuyển
LocalOverScrollConfiguration
thử nghiệm từfoundation.gesture
sang gói nền tảng và đổi tên thànhLocalOverscrollConfiguration
(If19fb, b/204650733) - Đổi tên
runComposeUiTestWithoutActivity {}
thànhrunEmptyComposeUiTest {}
để căn chỉnh vớicreateEmptyComposeRule()
(I6fed7)
Phiên bản 1.2.0-beta03
Ngày 2 tháng 6 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-beta03
. Phiên bản 1.2.0-beta03 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm
pressKeyTimes
cũng nhưisCapsLockOn
và thuộc tính khác vàoKeyInjectionScope
. Ngoài ra, API này hiện hỗ trợ các mẫu chèn kết hợp chuột và bàn phím, chẳng hạn như nhấp vào nút chuột khi giữ một phím meta. (I4c8da, b/229831515) - Đã thêm tuỳ chọn hỗ trợ thử nghiệm để chèn các sự kiện chính. Dùng
performKeyInput
để gửi các sự kiện quan trọng hoặc gửi các sự kiện đó thông qua thuộc tínhkey
củaMultiModalInjectionScope
trong cử chỉ nhập nhiều phương thức vớiperformMultiModalInput
. Hãy xemKeyInjectionScope
để biết tài liệu về API sẵn có (Ic5000, b/229831515) - Thêm
GoogleFont.Provider.AllFontsListUri
mới để truy xuất nguồn Internet chính tắc của Google Fonts do Android hỗ trợ. - Cải thiện thông báo lỗi báo cáo khi GoogleFonts không tải được khi soạn thư. (I0416c)
Sửa lỗi
- Khi thêm sự kiện
InputEventChange
vào Velocity Tracker, chúng tôi sẽ xem xét delta thay vì vị trí, điều này sẽ đảm bảo tốc độ được tính toán chính xác cho tất cả các trường hợp ngay cả khi phần tử đích di chuyển (I51ec3, b/216582726, b/223440806, b/227709803) - Chế độ cài đặt
Show Layout Bounds
hiện sẽ được áp dụng cho các thành phần kết hợp ngay sau khi bật/tắt chế độ này trong ô của trình đơn Cài đặt nhanh mà không cần phải rời khỏi và nhập lại hoạt động này. (I843d5, b/225937688) - Hoạt động tra cứu chuỗi hỗ trợ tiếp cận không kích hoạt tính năng tải phông chữ. Trước đây, trình duyệt này sẽ cố gắng tải phông chữ cho
StyleSpans
, việc này dẫn đến sự cố nếuFontFamily.Resolver
đã bị ghi đè. (I4609d) - Thao tác nhấn phím xoá phía trước khi con trỏ ở cuối trường văn bản sẽ không gặp sự cố nữa.
DeleteSurroundingTextCommand
vàDeleteSurroundingTextInCodePointsCommand
hiện yêu cầu các đối số hàm dựng không được âm. (Ica8e6, b/199919707)
Phiên bản 1.2.0-beta02
Ngày 18 tháng 5 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-beta02
. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Sử dụng lại chức năng trong các loại bản xem trước khác (I19f39)
Sửa lỗi
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
đã được đổi tên thànhDisposeOnDetachedFromWindowOrReleasedFromPool
để phản ánh rõ hơn thời điểm xảy ra việc loại bỏ, thay vì chỉ đơn giản là khi chúng không xảy ra. (If15ca)
Phiên bản 1.2.0-beta01
Ngày 11 tháng 5 năm 2022
Phát hành androidx.compose.ui:ui-*: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!
Thay đổi về API
- Thêm
BeyondBoundsInterval
thử nghiệm có thể sử dụng được bằng cách triển khai tuỳ chỉnh củaLazyList
khi bố cục các mục nằm ngoài giới hạn hiển thị (Ifabfb, b/184670295) - Các phiên bản chính của
Modifier.composed
hiện có API ổn định (Ie65e4, b/229988420) - Đơn giản hoá API
rememberNestedScrollConnection
để sử dụng cấu trúc cục bộ nhằm thu nạp thông tin khung hiển thị hiện tại (I67ca7) - Bạn hiện có thể dùng chú giải
@ComposableTarget
và chú giải được đánh dấu bằng@ComposableTargetMarker
trong phạm vi tệp bằng cách sử dụng tiền tố@file
. Việc sử dụng chú giải mục tiêu ở phạm vi tệp sẽ khiến trình biên dịch giả định tất cả các hàm có khả năng kết hợp trong tệp đều hướng mục tiêu đến trình áp dụng liên kết. Ví dụ: việc sử dụng@file:UiComposable
sẽ khai báo rằng tất cả các hàm@Composable
đều nhắm mục tiêu đến ứng dụng Giao diện người dùng trong Compose. Một hàm khi nhắm mục tiêu đến ứng dụng khác phải cung cấp rõ ràng chú thích điểm đánh dấu mục tiêu mà ứng dụng mong muốn. (I40804) Ra mắt API thử nghiệm mới, độc lập về nền tảng:
interface ComposeUiTest
vàfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
. Bạn có thể sử dụng API này để chạy chương trình kiểm thử giao diện người dùng trong Compose mà không cầnTestRule
. Để chạy chương trình kiểm thử mà không cầnComposeTestRule
, hãy truyền chương trình kiểm thử dưới dạng hàm lambda chorunComposeUiTest
, đồng thời sử dụng các phương thức và thành phần trong phạm vi trình thu nhậnComposeUiTest
, giống như trongComposeContentTestRule
.Thêm
interface AndroidComposeUiTest
vàfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
dành riêng cho Android để cung cấp quyền truy cập vào Hoạt động cơ bản, tương tự nhưAndroidComposeTestRule
. Để tăng cường quyền kiểm soát, bạn có thể tự tạo thực thể choclass AndroidComposeUiTestEnvironment
.Cách triển khai cho máy tính là
class DesktopComposeUiTest
, nhưng hiện tại không có chức năng nào chạy riêng cho máy tính được cung cấp.Bạn có thể di chuyển chương trình kiểm thử từ
ComposeTestRule
sangComposeUiTest
như thế này (ví dụ trong Android). Từ:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Đến:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Hiện tại,
ComposeContentTestRule
vàComposeTestRule
không mở rộng từComposeUiTest
, nghĩa là chưa thể gọi các hàm mở rộng trênComposeUiTest
trong giao diệnTestRule
. KhiComposeUiTest
chuyển sang API ổn định,ComposeContentTestRule
vàComposeTestRule
sẽ được thay đổi để mở rộng từComposeUiTest
. (Ib4e90)LineHeightBehavior
được đổi tên thànhLineHeightStyle
LineVerticalAlignment
được đổi tên thànhLineHeightStyle.Alignment
Đổi tên
LineHeightTrim
thànhLineHeightStyle.Trim
Xoá các giá trị hàm khởi tạo mặc định từ
LineHeightStyle
(I582bf, b/181155707)Thêm
Brush
vàoTextStyle
vàSpanStyle
để cung cấp cách vẽ văn bản chuyển màu. (I53869, b/187839528)Các thuộc tính
trimFirstLineTop
,trimLastLineBottom
củaLineHeightBehavior
đã chuyển thành một giá trị enum duy nhất:LineHeightTrim
.LineHeightTrim
có các giá trị của 4 trạng thái được xác định bằng 2 giá trị boolean:FirstLineTop
,LastLineBottom
, Both (Cả hai) và None (Không có) (Ifc6a5, b/181155707 )Thêm
LineHeightBehavior
vàoTextStyle
vàParagraphStyle
.LineHeightBehavior
kiểm soát việc áp dụng chiều cao dòng cho đầu dòng đầu tiên và cuối dòng cuối cùng. Phần này cũng xác định sự căn chỉnh của dòng trong không gian doTextStyle(lineHeight)
cung cấp.Ví dụ: có thể lấy hành vi tương tự như CSS đã xác định thông qua
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Các cấu hình
trimFirstLineTop
,trimLastLineBottom
chỉ hoạt động chính xác khiincludeFontPadding
sai. (I97332, b/181155707)Hàm
PlatformParagraphStyle.lerp
vàPlatformSpanStyle.lerp
được thay đổi thành hàm cấp cao nhất (I9a268)
Sửa lỗi
- Tài liệu
PointerInputChange::copy
hiện có thể nói một cách chính xác rằng đó là một bản sao shallow. (I182f5) - Hỗ trợ dấu ba chấm khi chiều cao bị giới hạn và không vừa với tất cả các dòng văn bản (Ie528c, b/168720622)
- Bật
includeFontPadding
mặc định. Bạn có thể tắtincludeFontPadding
bằng thuộc tínhTextStyle.platformTextStyle
. Trong tương lai gần, chúng tôi sẽ thay đổi hành vi mặc định, tuy nhiên hiện tại, điều này cho phép chúng tôi tích hợp tốt hơn các cải tiến về chiều cao dòng (aosp/2058653) và giải quyết các sự cố về cắtTextField
. (I01423, b/171394808)
Đóng góp bên ngoài
MouseInjectionScope.scroll(delta = someDelta)
hiện sẽ đảo ngược trên Android nếu chúng ta cuộn theo chiều dọc (nếu someDelta dương thì nó sẽ di chuyển xuống dưới) (Ifb697, b/224992993)
Phiên bản 1.2.0-alpha08
Ngày 20 tháng 4 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-alpha08
. Phiên bản 1.2.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
- Các hàm
pluralStringResource
được đánh dấu là thử nghiệm để cho phép cải tiến nhằm hỗ trợ quá trình quốc tế hoá tốt hơn trong tương lai. (If24e4) - Đoạn và Nhiều đoạn hiện chấp nhận thông số Constraints. Hiện tại, việc truyền
Constraints.maxHeight
không hoạt động nhưng sẽ cho phép thực hiện một số tính toán trong tương lai, chẳng hạn như tạo dấu ba chấm dựa trên chiều cao. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
hiện chấp nhận một lớp tuỳ chỉnh giống MutableSet, lớp này không cho phép thêm các mục mới vào lớp đó. (Icd314)- PointerIcon hiện là giao diện
@Stable
(I9dafe) - 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) - Bật tính năng tương tác Cuộn giữa lồng giữa và Chế độ xem theo hướng Compose > Chế độ xem. Điều này có nghĩa là thành phần chính trong Compose có thể nhận các delta cuộn lồng từ khung hiển thị cuộn lồng. (If7949, b/174348612)
SemanticsProperty testTagsAsResourceId
mới, có thể được dùng để tạo nên tính năng Soạn thư phù hợp với các thử nghiệm UIAutomator được thiết kế cho hệ thống Chế độ xem. (I39c20)- Hiển thị mọi trọng số hiện có cho phông chữ hệ thống trên Android khi sử dụng
FontFamily.SansSerif
. Tính năng này sẽ sử dụng các tên phông chữ dự phòng như alt-serif-medium trong API 21-28. Đây là thay đổi về hành vi vì trước đây chỉ có trọng số 400 và 700 được hỗ trợ trên API 21-28. (I380fe, b/156048036, b/226441992) - Người hướng dẫn Đoạn và Nhiều đoạn cần sắp xếp lại các đối số vị trí trước đối số không bắt buộc. (Idafaa)
AndroidFont
hiện lấy typefaceLoader làm thông số hàm dựng. (I2c971)
Phiên bản 1.2.0-alpha07
Ngày 6 tháng 4 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-alpha07
. Phiên bản 1.2.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm hàm mới
Snapshot.withoutReadObservation { ... }
. Tính năng này cho phép người dùng chạy hàm lambda đã truyền mà không cần phải đăng ký các thay đổi về giá trị trạng thái đã đọc trong khối này. Điều này hữu ích trong các trường hợp sử dụng khi bạn muốn hưởng lợi từ việc đọc/ghi an toàn theo chuỗi ảnh chụp nhanh, nhưng cũng muốn đọc được giá trị này mà không cần quá trình tái cấu trúc hoặc đo lường lại không cần thiết. (I9f365, b/214054486) - Thuộc tính của tiện ích
consumeWindowInsets
củaComposeView
cho phép nhà phát triển tắt tuỳ chọn sử dụng AndroidWindowInsets
. Việc này cho phép sử dụngComposeViews
riêng biệt trong hệ phân cấp, áp dụng choWindowInsets
mà không gây cản trở cho nhau. (I0ef08, b/220943142) - Thêm
KeyboardType.Decimal
làm giải pháp thay thế choKeyboard.Number
để thêm riêng dấu phân tách số thập phân trong IME. (Iec4c8, b/209835363) PointerEventType.Scroll
vàPointerEvent.scrollDelta
hiện là các API ổn định (I574c5, b/225669674)- Bật khả năng tương tác Cuộn lồng giữa Khung hiển thị và Compose cho các lớp Khung hiển thị cộng tác. Tức là giờ đây, Compose có thể điều phối các delta cuộn đến thành phần mẹ trong Khung hiển thị (đang cộng tác). (I5d1ac, b/174348612)
- Cập nhật
FontFamily.Resolver
để tích hợp chế độ cài đặt hỗ trợ tiếp cận văn bản in đậm trên toàn hệ thống (I6c1e7) - Ngừng sử dụng
Font(AssetManager, String, ...)
và thay thế bằngFont(String, AssetManager, ...)
. Đây là một API thử nghiệm. (I1c7a4) - Thêm bộ mô tả phông chữ mới
Font(DeviceFontFamilyName)
để tuỳ ý tra cứu phông chữ do hệ thống cài đặt trong chuỗi dự phòng phông chữ. (I30468, b/219754572) - Thêm cấu hình tương thích tạm thời cho
includeFontPadding
trong TextStyle/ParagraphStyle. Bạn có thể thay đổiincludeFontPadding
quaTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Đây là tuỳ chọn cấu hình tạm thời để bật tính năng di chuyển và sẽ bị xoá. (If47be, b/171394808) - Thêm phần mở rộng
GoogleFont.Provider.isAvailableOnDevice
để trợ giúp gỡ lỗi. (I64e31) - Thêm hàm khởi tạo
GoogleFont.Provider
để sử dụng với@ArrayRes
(Ic5ee1, b/225984280) Compose GoogleFont
hiện được gọi làFont(GoogleFont)
, nếu không thì API sẽ ổn định. (I125f2)
Sửa lỗi
- Thêm tính năng kiểm tra tìm lỗi mã nguồn vào material/Scaffold để đảm bảo rằng khoảng đệm bên trong đang được sử dụng (Ifb111)
Phiên bản 1.2.0-alpha06
Ngày 23 tháng 3 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-alpha06
. Phiên bản 1.2.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Đã thêm hành động ngữ nghĩa
RequestFocus
để yêu cầu tập trung vào mục tiêu có thể đặt tiêu điểm. (I17b71) - Cập nhật số liệu phân tích cú pháp các vectơ vẽ được để hỗ trợ tính năng tự động phản chiếu nhằm lật nội dung của
VectorPainter
nếu hướng bố cục hiện tại là RTL. (I79cd9, b/185760237) Cập nhật màu shadow/ambient (bóng/môi trường xung quanh) thành các tham số cuối của
Modifier.graphicsLayer
cho khả năng tương thích API (I3f864, b/160665122)Thêm các phương pháp triển khai mặc định vào màu shadow/ambient (bóng/môi trường xung quanh) trên
GraphicsLayerScope
để đảm bảo các thay đổi về API không gây lỗiThêm thời gian diễn ra sự kiện cho sự kiện RSB (Ief8ae)
FocusOrder
hiện đã được hợp nhất vàoFocusProperties
vàfocusProperties()
hiện có tất cả các tính năng củafocusOrder()
. Ngừng sử dụngFocusOrder
vàfocusOrder()
.focusOrder()
chấp nhận mộtfocusRequester
sẽ được thay thế bằng đối tượng sửa đổifocusRequester()
kết hợp vớifocusProperties()
. Điều này cho phép đối tượng sửa đổi phân tách các mối quan ngại mạnh mẽ hơn. (I601b7)Giờ đây, việc nâng cấp cả
RecyclerView
vàCompose
sẽ mang lại hiệu suất cuộn tốt hơn nhiều cho RecyclerView với chế độ xem Compose là con.Thêm
ViewCompositionStrategy.Default
làm phương tiện truy xuất chiến lược mặc định được tích hợp sẵnThêm
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
, đây là chiến lược mặc định mới và xử lý đúng cách các vùng chứa gộp chung như RecyclerView. (If7282)Thêm tuỳ chọn hỗ trợ để chú thích cho lớp chú giải với @Preview làm bước đầu tiên nhằm bổ sung tính năng Multipreview. Các chú giải như vậy có thể được dùng để chú thích các phương thức Thành phần kết hợp hoặc các lớp chú giải khác, sau đó có thể được coi là được chú thích gián tiếp bằng @Preview đã cho. (I12eff)
Những thiết bị tham chiếu được thêm vào danh sách Thiết bị cho @Preview (I071c9)
Sửa lỗi
- Cập nhật các API đồ hoạ vectơ để sử dụng chú giải thành phần kết hợp thích hợp @VectorComposable thay vì @UiComposable (I942bc)
- Xoá chéo dòng khỏi
AnnotatedString.Builder.withStyle
(If84d5)
Đóng góp bên ngoài
- compose-ui: Thêm thuộc tính
ambientShadowColor
vàspotShadowColor
vàoGraphicsLayerScope
(I1ba1a, b/160665122) - Tài nguyên cố định hiện được hỗ trợ thông qua hàm
pluralStringResource
. (Ib2f23, b/191375123)
Phiên bản 1.2.0-alpha05
Ngày 9 tháng 3 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-alpha05
. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
TextToolbar
hiện áp dụng các đối số lambda thay vìActionCallback
. (Ib2eb9, b/197950089)- Cập nhật tính chất rỗng trong lõi và appcompat để phù hợp với Tiramisu DP2 (I0cbb7)
- Giao diện được đo lường giờ biểu thị thuộc tính parentData (I3313f)
Modifier.onPlaced
và giao diệnOnPlacedModifier
hiện đã ổn định. (Ib5482)- Thật tuyệt! Hiệu ứng chuyển động trong Compose hiện đã hỗ trợ chế độ cài đặt "Tỷ lệ thời lượng của trình tạo hiệu ứng chuyển động" trong Tuỳ chọn cho nhà phát triển. (I5a4fc, b/161675988)
- Thêm giá trị đối tượng sửa đổi cục bộ
BeyondBoundsLayout
(If8b51, b/184670295) - 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ừ do
includeFontPadding=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)
Sửa lỗi
ComposeContentTestRule.setContent
hiện sẽ gửiIllegalStateException
nếu bạn cố cài đặt nội dung khi đã có nội dung. (I888a5, b/199631334)- 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)
- Cải thiện các mẫu cuộn RSB. (I6a596)
Đóng góp bên ngoài
- Cập nhật để sử dụng các coroutine Kotlinx 1.6.0 (I3366d)
Phiên bản 1.2.0-alpha04
Ngày 23 tháng 2 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-alpha04
. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
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ảiComposableTarget
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)Font(resId, ...)
hiện đã sử dụng adStrategy trên API ổn định. (Ief3d2)FontLoadingStrategy
hiện là API ổn định. (I1ee35, b/174162090)Hỗ trợ tải phông chữ không đồng bộ trong Văn bản (I77057, b/214587005)
Thêm API cầu nối để chuyển đổi
Font.ResourceLoader
tuỳ chỉnh thànhFontFamily.Resolver
. (Ia0060)
Sửa lỗi
- Truyền
FontFamily.Resolver
được cung cấp đến các thành phần phụ như Cửa sổ bật lên. - Truyền
Font.ResourceLoader
được cung cấp đến các thành phần phụ như Cửa sổ bật lên. (I48fa5)
Phiên bản 1.2.0-alpha03
Ngày 9 tháng 2 năm 2022
Phát hành androidx.compose.ui:ui-*:1.2.0-alpha03
. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Hiện ngừng sử dụng và sẽ không gọi các phương thức
notifyFocusedRect
trongTextInputSession
vàTextInputService
nữa. Thay thế bằngBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Ra mắt phương thức
destroyDisplayListData
trên lớp mã giả lậpRenderNode
(I1e659, b/216660268) - Thêm API mới cho phép đo lường trước phần tử con của
SubcomposeLayout
do bạn kết hợp trước. (I857ea) Đã thêm
movableContentOf
chuyển đổi Lambda có thể kết hợp thành một Lambda di chuyển trạng thái và các nút tương ứng, sang bất kỳ vị trí mới nào mà nó được gọi. Khi lệnh gọi trước rời khỏi cấu trúc, trạng thái sẽ được lưu giữ tạm thời và nếu một lệnh gọi mới đến lambda nhập vào cấu trúc, thì trạng thái và các nút liên quan sẽ được chuyển đến vị trí của lệnh gọi mới. Nếu không có lệnh gọi mới nào được thêm, trạng thái sẽ bị xoá vĩnh viễn và nhớ là các trình quan sát được thông báo.Nếu hệ thống gọi lambda
movableContentOf
nhiều lần trong cùng một cấu trúc, thì trạng thái mới và các nút sẽ được tạo cho mỗi lệnh gọi. Khi các lệnh gọi rời khỏi cấu trúc và các lệnh gọi mới nhập vào, trạng thái đó sẽ được chuyển từ lệnh gọi rời đi đầu tiên đến lệnh gọi nhập vào theo thứ tự chúng được gọi. Tất cả trạng thái không được xác nhận quyền sở hữu bởi các cuộc gọi mới sẽ bị xoá vĩnh viễn. (Ib4850)FontFamilyResolver
hiện được cung cấp quaLocalFontFamilyResolver.current
Thêm
createFontFamilyResolver(context)
vàcreateFontFamilyResolver(context, coroutineScope)
để tạo các trình phân giải FontFamily mới cho việc sử dụng bên ngoài Compose.Đoạn và nhiều Đoạn hiện sử dụng mã
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
hiện chứa trình phân giải dùng cho bố cục này, đã ngừng sử dụngTextLayoutResult.layoutInput.resourceLoader
vì mã này không còn được dùng nữa. (Id5a45, b/174162090)Hỗ trợ tải phông chữ không đồng bộ và tuỳ chọn với hành vi dự phòng. Đường dẫn này được Text (Văn bản) và TextField (Trường văn bản) sử dụng và được hiển thị thông qua FontFamilyResolver
Hỗ trợ tải trước phông chữ qua
FontFamilyResolver.preload
FontFamilyResolver.setAsyncLoadContext
cho phép cài đặt ngữ cảnh coroutine chung cần thiết để tải phông chữ không đồng bộ. (I87fe8, b/174162090)Thêm
AndroidFont
, một API cấp độ thấp mới để cung cấp các loại trình mô tả tài nguyên phông chữ mới trên Android. Ví dụ: tải phông chữ từ một lệnh phụ trợ cụ thể cho ứng dụng, tuỳ chọn định vị phông chữ cài đặt sẵn trên thiết bị hoặc tải phông chữ từ một tài nguyên không do nhà máy Font (Phông chữ) hiện tại cung cấp.Mở rộng API
Font.ResourceLoaded
để hỗ trợ việc tải phông chữ không bắt buộc và không đồng bộ. Các nhà phát triển ứng dụng không nên trực tiếp sử dụng API này. Để thêm các loại phông chữ mới, hãy xemAndroidFont
.Hàm mở rộng
Font.AndroidResourceLoader
cho phép tạo mộtFont.ResourceLoader
khi ở bên ngoài cấu trúc.Thêm tham số
loadingStrategy
vào các phông chữ dựa trên tài nguyên để cho phép tải không đồng bộ khi phông chữ tài nguyên tham chiếu đến XML của phông chữ có thể tải xuống. (Ie5aea, b/174162090)Ngừng sử dụng hàm khởi tạo
Typeface(FontFamily)
. Trước đây, hàm này dùng để tải trước phông chữ và có thể mất đến 10 giây để tải xuống các phông chữ. Với phông chữ có thể tải xuống, thao tác gọi lệnh này có thể chặn trong 10 giây. Thay vào đó, hãy sử dụngFontFamilyResolver.preload
.Ngừng sử dụng
fontResource(FontFamily): Typeface
. Trước đây, hàm này dùng để tải trước phông chữ và có thể mất đến 10 giây để tải xuống các phông chữ. Thay vào đó, hãy sử dụngFontFamilyResolver.preload
(If8e7c, b/174162090)Ngừng sử dụng hàm khởi tạo
SubcomposeLayoutState
chấp nhậnmaxSlotsToRetainForReuse
. Thay vào đó, có một hàm khởi tạo mới chấp nhậnSubcomposeSlotReusePolicy
– một giao diện mới cho phép bạn kiểm soát chi tiết hơn về việc cần giữ lại những khe nào để tái sử dụng trong tương lai. (I52c4d)Hiển thị hàm HSV và HSL trong
Color
dưới dạng API không thử nghiệm. Hệ màu Oklab hiện là API công khai. (I08fb6, b/180731008)Ngừng sử dụng
AndroidComposeTestRule.AndroidComposeStatement
, vốn không nằm trong API công khai và không thực hiện thao tác nào cho bạn. (Ibc46b)Đổi tên lớp kt được tạo nội bộ (Ia0b9e, b/174162090)
Xoá
FontLoadingStrategy.values
(I42a9d, b/174162090)Trình tải phông chữ chung hiện được gọi là
FontFamilyResolver
. (I4f773, b/174162090)Sử dụng hệ thống tải phông chữ mới cho máy tính. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
trả vềState<Any>
(I4406c, b/174162090)
Sửa lỗi
- Giờ đây, các trường văn bản TextField sẽ được giữ ở phía trên bàn phím khi các trường này được lấy làm tâm điểm và bàn phím hiển thị khi chế độ nhập mềm là
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Máy tính sử dụng cấu trúc cục bộ cho
FontFamily.Resolver
- Ngừng sử dụng
FontLoader
dành cho máy tính - Lập trình hướng đối tượng mã
createFontFamilyResolver
mới trên Máy tính (I6bbbb, b/174162090) - Kiểu nhập bằng bàn phím mềm không còn nhấp nháy khi thay đổi tâm điểm giữa các trường văn bản. (I1bf50, b/187746439)
Phiên bản 1.2.0-alpha02
Ngày 26 tháng 1 năm 2022
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm
Modifier.onRotaryScrollEvent()
vàModifier.onPreRotaryScrollEvent()
cho các thiết bị Wear có nút bên xoay (I18bf5, b/210748686) - Thêm phần mở rộng
View.createLifecycleAwareRecomposer
thử nghiệm (I0cde6)
Đóng góp bên ngoài
PointerEvent.scrollDelta.y
hiện đang được đảo ngược trên Android (hiện giờ giá trị này trả về 1 thay vì -1 nếu chúng ta nghiêng con lăn chuột sang phải) (Ia9811)
Phiên bản 1.2.0-alpha01
Ngày 12 tháng 1 năm 2022
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Ngừng sử dụng
FontFamily.canLoadSynchronously
. Thuộc tính này không có ý nghĩa ngữ nghĩa. (Ica5ef) - Thêm trường nhận dạng vào
CompositionData
để tạo mã nhận dạng bất biến (invariant id) trong Layout Inspector. (Ic116e) - Thêm mã thiết bị Wear OS vào danh sách Thiết bị xem trước (I93232)
Thông tin cập nhật về phần phụ thuộc
- Hiện phụ thuộc vào Kotlin
1.6.10
.
Phiên bản 1.1
Phiên bản 1.1.1
Ngày 23 tháng 2 năm 2022
androidx.compose.ui:ui-*: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.ui:ui-*: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 (Overscroll effect) của Android 12
- Những cải tiến đối với kích thước đích nhấn
- 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.ui:ui-*: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.
Sửa lỗi
- Cập nhật để hỗ trợ Compose Material 1.1.0-rc03
Phiên bản 1.1.0-rc01
Ngày 15 tháng 12 năm 2021
androidx.compose.ui:ui-*: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
- Sửa lỗi gây ra sự cố thiếu thao tác cuộn hỗ trợ tiếp cận (I7cbfb)
SemanticsNodeInteraction.captureToImage()
hiện cũng sẽ hoạt động nếuHardwareRenderer.isDrawingEnabled()
làfalse
, bằng cách bật giá trị này trong suốt thời gian diễn ra lệnh gọi (Idf3d0 )
Phiên bản 1.1.0-beta04
Ngày 1 tháng 12 năm 2021
androidx.compose.ui:ui-*: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 Kotlin
1.6.0
Thay đổi về API
- Đã xoá sạch giá trị rỗng trong
androidx.core.view
(I7078a, b/204917439) - Thêm API thử nghiệm cho phép người dùng sử dụng toàn bộ PointerInputchange hoặc kiểm tra xem nó có được sử dụng hay không. (I2e59d)
- Thêm hỗ trợ cho các sự kiện con lăn chuột trong lớp giao diện người dùng. (Ia14eb, b/198214718)
- Thêm phương thức nạp chồng
Modifier.composed
thử nghiệm chấp nhận các khoá để so sánh tính cân bằng và đủ điều kiện để bỏ qua quá trình tối ưu hoá. (Ice799, b/205851704) ComposeNotIdleException
hiện mở rộng từException
thay vì trực tiếp từThrowable
. Lưu ý rằng điều này có nghĩa là các mệnh đề phát hiện đang phát hiệnException
hiện có thể phát hiện đượcComposeNotIdleException
. Đây là điều mà trước đây chúng không làm được. (I9c217)
Sửa lỗi
- Khắc phục lỗi ô điều khiển văn bản không di chuyển khi chế độ hiển thị IME thay đổi. (I25f2e)
Phiên bản 1.1.0-beta03
Ngày 17 tháng 11 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm đối tượng sửa đổi mới Modifier.onPlaced cho phép theo dõi việc thay đổi vị trí. Do đó, có thể sửa đổi thêm mức chênh lệch của đối tượng sửa đổi con dựa trên sự thay đổi về vị trí có thể quan sát được. (I558fd)
- Đã xoá
InjectionScope.flush()
vàInjectionScope.dispose()
. Mọi sự kiện và phạm vi đang bị xoá và loại bỏ ở cuối phương thức có tên là perform*Input() như trước đây. (I2bed8) - Đã xoá
MultiModalInjectionScope.Touch
vàMultiModalInjectionScope.Mouse
. Để chèn sự kiện chạm và sự kiện chuột cho các cử chỉ đa phương thức, bạn hiện có thể sử dụngMultiModalInjectionScope.touch()
vàMultiModalInjectionScope.mouse()
, cả hai đều chấp nhận lambda có phạm vi trình thu nhận của phương thức đó. (Idde18)
Sửa lỗi
- Giá trị mặc định cho
durationMillis
trongTouchInjectionScope.swipeWithVelocity
hiện được tính toán để cho phép vuốt. (I19deb)
Phiên bản 1.1.0-beta02
Ngày 3 tháng 11 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm API BringIntoView thử nghiệm cho phép bạn gửi yêu cầu đến thành phần mẹ để các thành phần này cuộn cho một mục xuất hiện trong khung hiển thị (Ib918d, b/195353459)
- Các API ảnh động mới để hỗ trợ công cụ. Cụ thể, các API này cho phép công cụ kiểm tra hiệu ứng chuyển động và cấu hình của chúng trong một Transitions. (I4116e)
Đóng góp bên ngoài
- Thêm Modifier.pointerHoverIcon (I95f01)
Phiên bản 1.1.0-beta01
Ngày 27 tháng 10 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm API
BringIntoView
thử nghiệm cho phép bạn gửi yêu cầu đến thành phần mẹ để chúng cuộn đưa một mục vào khung hiển thị (Ib918d, b/195353459) - Các API ảnh động mới để hỗ trợ công cụ. Cụ thể, các API này cho phép công cụ kiểm tra hiệu ứng chuyển động và cấu hình của chúng trong một Transitions. (I4116e)
Phiên bản 1.1.0-alpha06
Ngày 13 tháng 10 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Xoá
ExperimentalComposeUiApi
khỏiViewRootForInspector
vàLayoutInfo.ownerViewId
(I5c2e3) - Thêm phương thức nạp chồng không có thành phần con cho Layout (Bố cục) với hiệu quả được cải thiện (Ib0d9a)
- Xoá
InternalCompilerApi
khỏi các phương thức Compose bắt buộc phải được gọi mô-đun chéo (I1aa0b) SemanticsNodeInteraction.performSemanticsAction
hiện trả vềSemanticsNodeInteraction
mà hàm được gọi. (I9e5db)- Thêm LocalInputModeManager CompositionLocal để phát hiện TouchMode/NonTouchMode. (I6a83c, b/175899786)
- Thêm
viewConfiguration: ViewConfiguration
vàoLayoutInfo
để người dùng có thể nhận được giá trị chính xác cho những thông tin như thời gian chờ nhấn và giữ. (I76ca6)- Thêm
viewConfiguration: ViewConfiguration
vàoInjectionScope
để cho phép hoạt động kiểm thử nhằm điều chỉnh nội dung chèn đầu vào theo thời gian chờ nhấn và giữ hoặc giới hạn khoảng cách cảm ứng. - Thay đổi thời lượng mặc định của thao tác nhấn và giữ cũng như nhấn đúp cho cả phương thức nhập bằng cảm ứng và bằng chuột theo các giá trị trong
InjectionScope.viewConfiguration
.
- Thêm
- Việc triển khai ExposedDropdownMenu dựa trên ExposedDropdownMenuBox với TextField và DropdownMenu bên trong (If60b2)
- Thêm dismissOnOutsideClick vào PopupProperties, thay thế dismissOnClickOutside không được 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 chạm vào thẻ.
- Thêm updateAndroidWindowManagerFlags vào PopupProperties, cung cấp khả năng kiểm soát ở mức 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)
- Ngừng sử dụng
Recomposer.state
và thay bằngRecomposer.currentState
để đổi loại mã thành StateFlow (Ic2ab3, b/197773820) - Thêm
flush()
vàdispose()
vàoInjectionScope
. Hãy sử dụng các thứ nguyên đó khi bạn muốn xoá mọi sự kiện trong danh sách chờ ngay lập tức và khi muốn loại bỏ phạm vi. (Ifb73a) - Thêm
performScrollToNode(matcher: SemanticsMatcher)
có thể cuộn một vùng chứa cuộn được vào nội dung phù hợp với trình so khớp nhất định. (Ic1cb8) InjectionScope
hiện triển khaiDensity
, cho phép bạn dễ dàng chuyển đổi giữa px và dp trongperformTouchInput
và bạn bè. (I8fe1f)
Sửa lỗi
- AndroidView hiện đã phát hành chế độ xem LocalLifecycleOwner và LocalSavedStateRegistryOwner qua ViewTreeLifecycleOwner và ViewTreeSavedStateRegistryOwner. (I38f96, b/179708470)
- Sửa lỗi WearOS SwipeToDismissBox đôi khi không xử lý các thao tác vuốt. (I9387e)
- Thời gian mặc định giữa các sự kiện đầu vào được chèn đã thay đổi từ 10 mili giây thành 16 mili giây. Việc này có thể làm thay đổi kết quả kiểm thử thực hiện các thao tác nhập, chẳng hạn như một thao tác vuốt cụ thể. (I829fd)
Phiên bản 1.1.0-alpha05
Ngày 29 tháng 9 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm tuỳ chọn hỗ trợ cho hình thức giao tiếp liên đối tượng sửa đổi (inter-modifier) (Id5467, b/198826874)
- Thêm con trỏ nhật ký thử nghiệm vào PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Thêm
density: Density
vàlayoutDirection: LayoutDirection
vàoLayoutInfo
. Việc này cho phép người dùng ởLayoutInfo
diễn giải đúng cách kích thước và vị trí xuất hiện trongLayoutInfo
. (I002f1) - Đã thêm tuỳ chọn hỗ trợ thử nghiệm để chèn các sự kiện chuột. Sử dụng
performMouseInput
để bắt đầu gửi các sự kiện chuột hoặc gửi sự kiện chuột thông qua thuộc tínhMouse
củaMultiModalInjectionScope
trong thao tác nhập nhiều phương thức vớiperformMultiModalInput
. Hãy xemMouseInjectionScope
để biết tài liệu về API sẵn có (Iaa4a8, b/190493367)
Sửa lỗi
- Khắc phục khả năng hỗ trợ tiếp cận cho nội dung cuộn được (cả tải từng phần và tải toàn bộ) với tính năng cuộn (I6cdb0)
- Có cải thiện
TouchInjectionScope.swipeWithVelocity
Cửa sổ này hiện chấp nhận nhiều biến đầu vào và sẽ đề xuất các thay đổi đối với đầu vào nếu không thể tạo lần vuốt (I40fbe, b/182477143)
Phiên bản 1.1.0-alpha04
Ngày 15 tháng 9 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
PointerEvent
hiện đã cóPointerEventType
để hỗ trợ các sự kiện di chuột. (I091fa)- Cho phép phần tử con chấp nhận phương thức nhập của con trỏ bên ngoài giới hạn nhập ban đầu. Phần tử mẹ có thể chặn các lệnh gọi đó bằng một thuộc tính PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655)
- 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) - Làm lại thao tác triển khai có thể kiểm tra (I927bc, b/191017532)
- Đã thay đổi tên thông số của thành phần có thể kiểm tra để khớp với thành phần (I3a482, b/191017532)
Ra mắt
performTouchInput
vàTouchInjectionScope
làm thuộc tính thay thế choperformTouchInput
vàTouchInjectionScope
, tạo điều kiện bắt đầu các phương thức khác (như chuột).TouchInjectionScope
có các phương thức tương tự nhưGestureScope
, ngoại trừmovePointerTo
vàmovePointerBy
(đã được đổi tên thànhupdatePointerTo
vàupdatePointerBy
). Tất cả các phương thức khác đều giống nhau.Hành vi của
TouchInjectionScope
giống hệ vớiGestureScope
với hai chi tiết nhỏ:- Khi gửi một sự kiện xuống khi con trỏ đã được di chuyển mà không gửi sự kiện di chuyển (nói cách khác là đã sử dụng
updatePointerTo()
thay vìmove()
và sau đódown()
được gọi), việc triển khai trước sẽ chuyển đổi thời gian diễn ra sự kiện và gửi sự kiện di chuyển trước khi gửi sự kiện xuống. Thao tác triển khai mới vẫn gửi sự kiện di chuyển, nhưng không đẩy thời gian chuyển đổi vào kịch bản cụ thể này. - Khi gửi một sự kiện lên trong khi con trỏ đã được di chuyển mà không gửi sự kiện di chuyển (tương tự như trên), việc triển khai trước đó sẽ chuyển tiếp thời gian diễn ra sự kiện và gửi sự kiện di chuyển trước khi gửi sự kiện lên. Cách triển khai mới không thực hiện cả hai: các vị trí mới của các con trỏ sẽ chỉ được phản ánh thông qua sự kiện lên.
Cuối cùng,
TouchInjectionScope
giới thiệu mộtcurrentPosition(pointerId: Int)
phương thức mới để lấy vị trí hiện tại của con trỏ đã cho. (If1191, b/190493367)- Khi gửi một sự kiện xuống khi con trỏ đã được di chuyển mà không gửi sự kiện di chuyển (nói cách khác là đã sử dụng
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)
- Hỗ trợ hiệu ứng kéo giãn khi cuộn quá mức trên các thiết bị Android 12. (Iccf3c, b/171682480)
Phiên bản 1.1.0-alpha03
Ngày 1 tháng 9 năm 2021
androidx.compose.ui:ui-*: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)
Thay đổi về API
- Thêm
Modifier.inspectable
để gói các đối tượng sửa đổi khác. (I1909b, b/191017532) - Thêm API
BlurredEdgeTreatment
nhằm tinh giản các trường hợp sử dụng làm mờ thành các tổ hợp gắn cờ cắt bớt và TileModes thường dùng. Hầu hết các trường hợp sử dụng đều liên quan đến việc cho phép nội dung được làm mờ hiển thị bên ngoài giới hạn nội dung gốc và làm mờ các vùng nằm ngoài giới hạn này bằng màu đen trong suốt hoặc cắt nội dung theo giới hạn nội dung, lấy mẫu cạnh gần nhất để làm mờ hạt nhân vượt quá giới hạn nội dung. (I6b4b7, b/166927547) - Thêm tuỳ chọn hỗ trợ RenderEffect trong ứng dụng Compose dành cho máy tính. Ra mắt OffsetEffect cũng như đối tượng sửa đổi làm mờ như một cách đơn giản để giới thiệu các hiệu ứng làm mờ trực quan cho một phần của hệ phân cấp cấu trúc. (I0f6aa, b/166927547)
- Ra mắt API RenderEffect có thể được định cấu hình tuỳ chọn trên
Modifier.graphicsLayer
để thay đổi nội dung của chính lớp đó. Tính năng này có thể dùng để làm mờ nội dung của thành phần kết hợp và thành phần kết hợp con trong hệ phân cấp cấu trúc. (I47c4d, b/166927547) - AwaitPointerEventScope hiện có với withTimeout() và withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- 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)
- Thêm hỗ trợ TileMode.Decal hữu ích cho việc xác định hành vi của cạnh viền cho hiệu ứng làm mờ dựa trên RenderEffects. (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
vàhasScrollToKeyAction
hiện là API ổn định (I142ae, b/178483889)- Thêm phương thức kiểm thử để lấy giới hạn được cắt đoạn. (I6b28e)
Sửa lỗi
- Xoá phương thức isBounded khỏi phần BlurredEdgeTreatment theo hướng kiểm tra rõ ràng liệu tham số hình dạng có bị rỗng hay không. (I85d68)
Phiên bản 1.1.0-alpha02
Ngày 18 tháng 8 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- PointerEvent hiện có hỗ trợ đọc trạng thái nút chuột và trạng thái công cụ sửa đổi bàn phím. (I6310c, b/180075467)
- Các cử chỉ được chèn hiện sử dụng thời gian của MainTestClock làm nguồn thông tin đáng tin cậy cho thời gian. Thời gian hiện tại cho các sự kiện được chèn trong
performGesture
sẽ được khởi chạy tới thời điểm hiện tại của MainTestClock. (Ifb364, b/192064452) - Thêm hàm khởi tạo
DpRect(DpOffset, DpSize)
(I2cf16, b/194219828) - Thêm lớp DpSize (I7abb1, b/194219828)
Sửa lỗi
- Đã cập nhật trình phân tích cú pháp xml của đồ hoạ vectơ nhằm hỗ trợ ColorStateLists dưới dạng các thuộc tính sắc thái màu gốc trên VectorDrawables. (I86915, b/195668138)
Phiên bản 1.1.0-alpha01
Ngày 4 tháng 8 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
RelocationRequester.bringIntoView
hiện chấp nhận hình chữ nhật dưới dạng tham số, điều này cho phép chúng ta đưa một phần của thành phần kết hợp sang khung hiển thị (Ice2c5, b/194330245)AnimatedImageVector
và các API liên quan hiện nằm trong mô-đunandroidx.compose.animation:animation-graphics
mới. (I60873)- Thêm đối tượng sửa đổi thử nghiệm để xử lý yêu cầu chuyển vị trí. (I65a97, b/178211874)
Đã giới thiệu API BrushPainter để hỗ trợ tính năng vẽ của một Bút vẽ tuỳ ý trong Painter, tương tự như ColorPainter
Đã cập nhật API Bút vẽ để có thông số kích thước nội tại được truy vấn trong BrushPainter (Ia2752, b/189466433)
Đã 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 + Hình ảnh để sử dụng tham số FilterQuality tuỳ chọn (Ie4fb0, b/180311607)
Thêm phương thức
GestureScope.advanceEventTime
để có thêm quyền kiểm soát thời gian của các sự kiện trong một cử chỉ (Ibf3e2)
Sửa lỗi
- Để hỗ trợ tốt hơn cho việc sắp xếp chuỗi
các công cụ sửa đổi bản vẽ, hãy đảm bảo rằng phương thức triển khai Modifier.paint
gọi drawsContent.
Trước đó, Modifier.paint đã được dự kiến sử dụng cho một nút lá trong chuỗi của Đối tượng sửa đổi. Tuy nhiên, nếu làm như vậy, nút này sẽ không được định cấu hình trên một vùng chứa có thể kết hợp (ví dụ: hộp) hoặc thêm các yếu tố trang trí bổ sung ở trên cùng chẳng hạn như
Modifier.paint().border()
. Bằng cách yêu cầu Modifier.paint gọi drawContent sau khi vẽ nội dung của trình vẽ được cung cấp, chúng ta có tính nhất quán cao hơn về hành vi trong hành vi với mẫu của đối tượng sửa đổi. (Ibb2a7, b/178201337, b/186213275) - 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) - Di chuyển
InfiniteAnimationPolicy
sang :compose:ui (I5eb09, b/160602714) - Việc cuộn qua các thao tác ngữ nghĩa cho danh sách lazy và các thành phần cuộn thông thường hiện là ảnh động (Id9066, b/190742024)
Phiên bản 1.0
Phiên bản 1.0.5
Ngày 3 tháng 11 năm 2021
androidx.compose.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.ui:ui-*: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.
Tính năng mới
- Tách mô-đun công cụ giao diện người dùng thành
ui-tooling
vàui-tooling-preview
(Iefa28, b/190649014)
Thay đổi về API
- Xoá
FocusManager#moveFocusIn
vàFocusManager#moveFocusOut
thử nghiệm không dùng nữa (I227d7, b/170154986, b/186567354, b/168510304) - Canvas hiện hỗ trợ tham số contentDescription dành cho tính năng hỗ trợ tiếp cận. (Ib547c)
- Đổ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 tuỳ chọn hỗ trợ thử nghiệm cho nội dung trình bày màu HSV và HSL. (Id7cf8, b/180731008)
Thay đổi về hành vi
- Compose
@Preview
hiện cung cấpLocalActivityResultRegistryOwner
cho phép bạn xem trước các Thành phần kết hợp sử dụng API nhưrememberLauncherForActivityResult()
phụ thuộc vào chủ sở hữu hiện tại đó. (Ib13d1, b/185693006) - Compose
@Preview
hiện cung cấpLocalOnBackPressedDispatcherOwner
cho phép bạn xem trước các Thành phần kết hợp sử dụng API nhưBackHandler
phụ thuộc vào chủ sở hữu hiện tại đó. (Ia1c05, b/185693006)
Sửa lỗi
- Di chuyển
InfiniteAnimationPolicy
sangandroidx.compose.ui:ui
(I5eb09, b/160602714) - AnimatedImageVector đã bị xoá tạm thời để thay đổi cấu trúc mô-đun. (I41906, b/160602714)
Phiên bản 1.0.0-beta09
Ngày 16 tháng 6 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thay đổi enum Role và LiveRegionMode thành các lớp cùng dòng bằng hàm khởi tạo riêng tư (Id1890)
- KeyboardCapitalization được chuyển đổi thành lớp cùng dòng. (Id5a1c)
- Thay đổi HapticFeedbackType thành lớp cùng tuyến. (I255ec)
- Modifier.pointerInteropFilter là @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis và TextDirection hiện là các lớp cùng dòng. (I212fe)
- TextOverflow được thay đổi thành lớp cùng dòng. (I433af)
- FontStyle hiện là lớp cùng dòng. (I9e48b)
Sửa lỗi
- Các hằng số chính hiện tại là @ExperimentalComposeUiApi. Việc sử dụng mã có thể khai báo các hằng số riêng trước khi ổn định. (Ia5d48)
- Bạn hiện có thể chạy các chương trình kiểm thử Compose trên Robolectric. Cho đến nay, đã xác định được các giới hạn sau:
- Không có bitmap gốc, vì vậy
ImageBitmap()
dẫn đến một NullPointerException. - Không có bản vẽ nào, vì vậy
captureToImage()
sẽ đợi vô thời hạn lần truyền bản vẽ tiếp theo (chẳng hạn như bản vẽ bị tắc nghẽn). - Không có phông chữ nào được tải, vì vậy mọi văn bản sẽ được đo lường không chính xác. Tất cả các ký tự đều có chiều cao cố định khoảng 20px và chiều rộng là 1px.
ComposeTestRule.waitUntil {}
không chạy luồng chính trong khi chờ, khiến mã này có hiệu quả giống vớiComposeTestRule.mainClock.advanceTimeUntil {}
. Có thêm một số giới hạn sẽ được xác định trong tương lai. (I284fa)
- Không có bitmap gốc, vì vậy
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. Khi một ứng dụng được tạo bao gồm các cấu phần phần mềm này, 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 được dùng để tạo ra một hồ sơ ART nhị phân nhỏ gọn dành riêng cho ứng dụng. Sau đó, ART có thể tận dụng hồ sơ này khi ứng dụng được cài đặt trên thiết bị để biên dịch trước một tập hợp con cụ thể của ứng dụng 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. 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.ui:ui-*: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.
Thay đổi về API
- Thay thế enum
NestedScrollSource
bằng một lớp cùng dòng. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)
đã được đổi tên thànhFocusManager.clearFocus(force = true)
(Ia0c41)- 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)
- Xoá
@ExperimentalComposeUiApi
khỏiPopupProperties
. (I01fa6) - Đã thay đổi
PointerType
từ một enum thành một lớp cùng dòng (If5058) - 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 thế bằngModifier.focusTarget()
(I6c860) Modifier.onSizeChanged()
vàModifier.onGloballyPositioned()
không còn là các hàm cùng dòng nữa (I727f6, b/186109675)- Thay thế enum
KeyboardType
bằng một lớp cùng dòng. (I73045, b/187055290) - Thay thế enum
FocusState
bằng giao diệnFocusState
(Iccc1a, b/187055290) - Enum ImeActionđược thay thế bằng một lớp cùng dòng. (I18be5, b/187055290)
PlaceholderVerticalAlign
được chuyển đổi thành một lớp cùng dòng. (If6290)- TextUnitType hiện là một lớp cùng dòng. (I4cba9)
- Các hàm
AnnotatedString.withAnnotation
hiện là ExperimentalTextApi thay vì ExperimentalComposeApi. (I0cd0a)- Hàm khởi tạo TextUnit với TextUnitType hiện là ExperimentalTextApi thay vì ExperimentalComposeApi.
Sửa lỗi
- Sửa lỗi xuất hiện trong phiên bản beta07 khiến các mục LazyColumn/Row hiển thị một phần sau khi cuộn (I8c9ac, b/188566058)
- Hiện tại,
detectDragGesures
,detectVerticalGestures
vàdetectHorizontalGestures
sẽ tự động thay đổi vị trí, không cần gọi change.consumePositionChange trong lệnh gọi lại onDrag (I42fc4, b/185096350, b/187320697) - Đã sửa LayoutModifiers, công cụ cung cấp các dòng căn chỉnh. Sửa lỗi khiến thành phần mẹ không thể đo lường lại khi các dòng căn chỉnh của thành phần con thay đổi. (I4401f, b/174315652)
- 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)
Phiên bản 1.0.0-beta07
Ngày 18 tháng 5 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Đã thêm giao diện
ViewRootForInspector
để sử dụng trong công cụ kiểm tra (Ib70df) SubcomposeLayoutState
hiện hỗ trợ đếm tập hợp các vị trí có thể sử dụng lại. Bố cục này sẽ duy trì hoạt động của các vị trí đếm này thay vì loại bỏ các vị trí đó để sử dụng lại vị trí trong lần tiếp theo, khi cần một vị trí mới (Ieb981)- Thay thế enum KeyEventType bằng một lớp cùng dòng. (Id670a, b/187055290)
- Thay thế enum
FocusDirection
bằng một lớp cùng dòng. (Ib6d03, b/187055290, b/184086802) - Ra mắt khả năng chuyển trạng thái SubcomposeLayout lên trên cho phép bạn kết hợp trước nội dung vào một slotId bắt buộc, điều này sẽ khiến phép đo tiếp theo truyền nhanh hơn vì khi chúng ta cố kết hợp phụ với slotId đã cho vào lần tiếp theo thì sẽ không cần cấu trúc nữa. (I42580, b/184940225)
- Thêm tính năng cắt ô điều khiển lựa chọn (Iff80d, b/183408447)
- Xoá API không sử dụng liên quan đến hỗ trợ LayoutInspector. (I2ac78)
Sửa lỗi
- Giờ đây, LazyColumn/Row sẽ giữ trạng thái đang hoạt động (chưa bị loại bỏ) cho tối đa 2 mục hiển thị trước đó, ngay cả khi các mục đã bị cuộn ra ngoài. Điều này cho phép thành phần đó sử dụng lại các cấu trúc phụ đang hoạt động khi chúng ta cần kết hợp một mục mới để cải thiện hiệu suất của tính năng cuộn. (Ie5555)
TextGeomerticTransform
vàTextDecoration
tạiAnnotatedString
sẽ được áp dụng như đã nêu. (I61900, b/184760917)
Phiên bản 1.0.0-beta06
Ngày 5 tháng 5 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Giải quyết xung đột bằng Cử chỉ điều hướng (I1145e)
@ComposeCompilerApi
không còn@RequiresOptIn
(Iab690)- 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
SemanticsActions.ScrollToIndex
để cuộn danh sách các mục đã lập chỉ mục cho mục có một chỉ mục nhất định vàSemanticsProperties.IndexForKey
để lấy chỉ mục của một mục trong danh sách có các mục được khoá. Cả hai hành động đều được lệnh LazyList triển khai.- Thêm
SemanticsNodeInteraction.performScrollToIndex
cuộn danh sách vào chỉ mục đã cho vàSemanticsNodeInteraction.performScrollToKey
cuộn danh sách đến mục có khoá đã cho. (I4fe63, b/178483889, b/161584524)
- Thêm
- Thêm ownerViewId vào GraphicLayerInfo (I19f62)
- Thêm phương thức nạp chồng Font() để tải phông chữ từ các thành phần, File (Tệp) và FileDescriptor (I5d382)
- 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) - Thêm phương thức nạp chồng
Font()
để tải phông chữ từ các thành phần, File (Tệp) và FileDescriptor (I43007) - AnnotatedString lưu hỗ trợ vào
TextFieldValue.Saver
. ThêmaddTtsAnnotation
và các hàm số hiệu dụng withAnnotation vàoAnnotatedString.Builder
(I8cbdc, b/178446304) - Thêm hàm khởi tạo TextUnit
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304)
Phiên bản 1.0.0-beta05
Ngày 21 tháng 4 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm
FocusManager.moveFocus(In)
vàFocusManager.moveFocus(Out)
thử nghiệm (Ic5534, b/183746743) - Thêm API
performTextInputSelection
thử nghiệm (I2dcbb, b/178510628) - Ngừng sử dụng giao diện
InputEventCallback
. Không thể sử dụng giao diện trong bất kỳ API công khai nào; và không sử dụng giao diện này trong mã này. (I34a02, b/184003208) - Ngừng sử dụng hàm
TextLayoutResult/createTextLayoutResult
. Đây là một hàm công khai không được sử dụng mà đã được thêm vào để thử nghiệm. Hàm không thực hiện bất cứ tính năng nào hữu ích đối với API văn bản của Compose. Ngừng sử dụng và sẽ xoá hàm này sau. (I80413)
Sửa lỗi
- Khắc phục các thao tác cuộn hỗ trợ tiếp cận
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
vàaccessibilityActionScrollDown
. Thay vì cuộn xuống cuối của thanh cuộn, giờ đây, trang này sẽ hiển thị theo một màn hình ở hướng nhất định. (Ieccb0) - Các tệp AndroidManifest của ui-test-manifest và ui-tooling-data hiện tương thích với Android 12 (I6f9de, b/184718994)
Phiên bản 1.0.0-beta04
Ngày 7 tháng 4 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Lần lượt đổi tên
hideSoftwareKeyboard
vàshowSoftwareKeyboard
tạiSoftwareKeyboardController
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 đang hoạt động, 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)
- Giới thiệu TextOverflow.Visible. (Ic8f89)
Sửa lỗi
- Khắc phục vấn đề khi các mục của
LazyColumn
/LazyRow
nằm ở các cạnh được đặt không chính xác sau khi hất nhanh (Ie4d13, b/183877420) AndroidViewBinding
hiện đã gỡ bỏ đúng cách các mảnh được tăng cường quaFragmentContainerView
khiAndroidViewBinding
bị gỡ bỏ khỏi hệ phân cấp trong Compose. (Ib0248, b/179915946)AndroidViewBinding
hiện lồng ghép chính xác các mảnh được tăng cường quaFragmentContainerView
khiComposeView
nằm trongFragment
, khắc phục các vấn đề khi lưu và khôi phục trạng thái của các mảnh đó. (I70eb0, b/179915946)- ViewBinding của Compose hiện phụ thuộc vào Fragment
1.3.2
và hiển thị một cách nhất quán các mảnh được tăng cường thông quaFragmentContainerView
sau các thay đổi về cấu hình. (I0743d, b/179915946)
Phiên bản 1.0.0-beta03
Ngày 24 tháng 3 năm 2021
androidx.compose.ui:ui-*: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
- Đã tạm hoãn kiểm tra các phần phụ thuộc ViewTree của ComposeView (I8dbbf, b/182466548)
- Đã thêm thông số
startX
/endX
vàstartY
/endY
tuỳ chọn vào các hàmswipeUp
/swipeDown
/swipeLeft
/swipeRight
tạiGestureScope
. (I49e2d, b/182063305)
Phiên bản 1.0.0-beta02
Ngày 10 tháng 3 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm API CompositionLocal
LocalSoftwareKeyboardController
mới để thay thế giao diện SoftwareKeyboardController trước đó trên TextField. (I5951e, b/168778053) - Thêm API CompositionLocal
LocalSoftwareKeyboardController
mới để thay thế giao diện SoftwareKeyboardController trước đó trên TextField. (I84472, b/168778053) - Đã gỡ bỏ
SemanticsMatcher
sau:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Đã đánh dấu
SemanticsMatchers
sau là @ExperimentalTestApi:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Đã thêm
SemanticsMatcher
sau:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
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)
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)- Sửa lỗi
rememberSaveable { mutableStateOf(0) }
bị hỏng khi được sử dụng bên trong một đích đến của navigation-compose. (I1312b, b/180042685, b/180701630) - Thêm API CompositionLocal
LocalSoftwareKeyboardController
mới để thay thế giao diện SoftwareKeyboardController trước đó trên TextField. (I658b6, b/168778053) - Khắc phục tình trạng hiếm gặp NoSuchElementException tại
tearDownRegistry()
củaComposeRootRegistry
(Iddce1)
Phiên bản 1.0.0-beta01
Ngày 24 tháng 2 năm 2021
androidx.compose.ui:ui-*: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.
Thay đổi về API
- Thêm lệnh gọi lại onStart vào
detectDragGestures
(I67269, b/179995594) - 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)
- MeasureBlocks đã được đổi tên thành MeasurePolicy, qua đó trở thành một giao diện thú vị. Cập nhật/đơn giản hoá API bố cục để sử dụng MeasurePolicy. (Icab48, b/167662468, b/156751158)
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)
- Gỡ bỏ các phương thức LayoutCoordinates không dùng nữa, hãy sử dụng hàm thay vì thuộc tính cho positionInParent và boundsInParent (I580ed, b/169874631, b/175142755)
- Typealiases được thay thế bằng các loại cơ bản:
ColorStop
hiện làPair<Float, Color>
SpanStyleRange
hiện là `AnnotatedString.RangeParagraphStyleRange
hiện làAnnotatedString.Range<ParagraphStyle>
StringAnnotation
hiện làAnnotatedString.Range<String>
- (I8dd1a)
- Tạo TextInputSession mới cho các phiên nhập từ các thành phần văn bản cấp thấp, chẳng hạn như CoreTextField. (I8817f, b/177662148)
- Giờ đây, Placeable hiển thị measuredSize, đại diện cho kích thước mà bố cục con thực sự đo lường. Kích thước này có thể không tuân theo giới hạn đo lường. (Ib2729, b/172560206, b/172338608)
- Thêm đối tượng sửa đổi selectionGroup cho phép đánh dấu bộ sưu tập Tab hoặc RadioButtons cho các mục đích hỗ trợ tiếp cận (Ie5c29)
Giờ đây, bạn bắt buộc phải sử dụng
defaultFactory
chocompositionLocalOf
vàstaticCompositionLocalOf
thay vì không bắt buộc.Sự thay đổi này sẽ loại bỏ lỗi tiềm ẩn về loại đối với các loại không thể có giá trị rỗng nếu bạn chưa cung cấp nhà máy mặc định ban đầu. Trước đây điều này sẽ cung cấp một tham chiếu rỗng cho loại không thể rỗng.
Đối với các loại giá trị rỗng, bạn nên cung cấp
{ null }
làm nhà máy (factory) mặc định.Bạn không nên sử dụng các thành phần cục bộ có loại không thể rỗng, trừ phi có thể cung cấp giá trị mặc định hợp lý. Nếu không có giá trị mặc định hợp lý, hàm lambda
defaultFactory
sẽ tạo ngoại lệ. Tuy nhiên việc loại bỏ một trường hợp ngoại lệ có nghĩa là người dùng thành phần cục bộ sẽ có phần phụ thuộc ngầm định được cung cấp mà không được hệ thống loại này thực thi. (Ifbd2a)Đã xoá các phương thức không còn hoạt động khỏi mô-đun giao diện người dùng (I646f6)
Đã đổ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)
Xoá
Modifier.tapGestureFilter
. Thay vào đó, hãy sử dụngModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)mức tiêu thụ một phần đã bị xoá khỏi hệ thống nhập con trỏ. Đề xuất cách kết hợp mức tiêu thụ một phần là Modifier.nestedScroll. (Ie9c9b)
Orientation (Hướng) đã được chuyển đến gói nền tảng. Chuyển VelocirtTracker từ ui.gesture sang ui.input.pointer. (Iff4a8, b/175294473)
imageResource và vectơResource hiện là các hàm mở rộng lần lượt trên cùng ImageBitmap và ImageVector. Các hàm
load{Image,Vector,Font}Resource
đã bị xoá. (I89130)AnimationClockObservable và lớp con đã bị xoá. Xoá AnimatedFloat. (Icde52, b/177457083)
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 ở giai đoạn thử nghiệm
- Xoá hàm @TestOnly clearRoots cấp cao nhất. 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)
Đã xoá
ComponentActivity.setContent()
khỏi Compose:ui. Thay vào đó hãy sử dụng từandroidx.activity:activity-compose:1.3.0-alpha01
. Đã xoáviewModel()
vàLocalViewModelStoreOwner
khỏi Compose:ui. Hãy sử dụng trình duyệt có trongandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b)Sửa đổ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)
Đã xoá tuỳ chọn hỗ trợ Customevens của PointerInputModifier (I02707, b/175294473)
SnapshotStateObserver không còn ở giai đoạn Thử nghiệm nữa (Id2e6a)
Xoá một số API không dùng nữa (Ice5da, b/178633932)
Xoá longPressGestureFilter và doubleClickGestureFilter. Hãy sử dụng Modifier.pointerInput với các chức năng trợ giúp, như detectTapGestures (I2fedf, b/175294473)
Xoá việc sử dụng API String.format được tái cấu trúc trong nhiều phương thức toString để tránh tận dụng String.format nội bộ. (Id1290)
Xoá câu nhận định dp (I798d2)
Đã xoá androidx.Comose.runtime:runtime-dispatch (I55feb)
Bây giờ, thao tác văn bản sẽ tự động kiểm tra tiêu điểm (I13777, b/179648629)
Xoá
runBlockingWithManualClock
(I15cdc, b/179664814)Vị trí cuộn trong Modifier.verticalScroll()/horizontalScroll() hiện tại được biểu thị bằng Ints (I81298)
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)
Thêm chức năng trợ giúp hữu ích để đặt cùng một thao tác cho tất cả các lệnh gọi lại ImeAction (I63447, b/179226323)
Xoá lệnh gọi lại SoftwareKeyboardController khỏi tất cả các trường văn bản để sớm thay thế bằng một API mới. (Iae869, b/168778053)
Fontspan và FontWeigthStyleSpan không còn được sử dụng và đã bị xoá. (Ie5b56, b/177423444)
Thực hiện các thay đổi sau với API Material:
- 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)
Sửa lỗi
- Thêm API để sử dụng các tài nguyên AnimatedVectorDrawable trong Compose. Sử dụng
animatedVectorResource để tải một
<animated-vector>
XML dưới dạng AnimatedImageVector và hoạt ảnh với painterFor (I8ea91) - Thêm API CompositionLocal LocalSoftwareKeyboardController để thay thế giao diện SoftwareKeyboardController trong TextField. (I658b6, b/168778053)
Phiên bản 1.0.0-alpha12
Ngày 10 tháng 2 năm 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
đã phát hành. Phiên bản 1.0.0-alpha12 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá tính năng hỗ trợ ViewGroups khỏi UiApplier. Xoá các thành phần kết hợp emitView không được dùng nữa. (Ifb214)
- Hiện tại, Modifier.pointerInput yêu cầu các phím nhớ để cho biết thời điểm phát hiện coroutine đầu vào con trỏ cho các phần phụ thuộc mới. (I849cd)
- CompositionReference được đổi tên thành CompositionContext (I53fcb)
- Đổi tên Bounds thành DpRect (I4b32a)
- Kiểm tra bản cập nhật: hasText() sẽ kiểm tra cả văn bản nhập và nhãn/nội dung gợi ý/phần giữ chỗ trong trường văn bản (Iab803)
- viewModel() tổng hợp và LocalViewModelStoreChủ đã được chuyển sang androidx.lifecycle.viewmodel.camose. Bây giờ, bạn cần thêm một phần phụ thuộc riêng biệt androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 để sử dụng phần phụ thuộc này. (I7a374)
- Cho phép hành động có thể rỗng trong AccessibilityAction, thay đổi nhãn hành động trong AccessibilityAction và CustomAccessibilityAction từ CharSequence thành String (I0dc82)
- Để 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)
- Chuỗi kiểm tra chuỗi con có chuỗi con bây giờ là một đối số (Icbe78)
- Thêm một
Modifier.focusOrder()
chấp nhận FocusRequester mà không cần chỉ định thứ tự tiêu điểm tuỳ chỉnh lambda. Điều này hữu ích khi chúng tôi chỉ cần chỉ định tệp đối chiếu mà không cần phải là thứ tự tiêu điểm tuỳ chỉnh cho thành phần kết hợp (I4f52a, b/179180978) - 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)
- Chuyển Cửa sổ bật lên sang chế độ dành riêng cho một nền tảng. AndroidPopupProperties đã được đổi tên thành PopupProperties, và
isFocusable
đã được chuyển sang thông sốfocusable
trongPopupProperties
(Ieeea5) - Đã chuyển hộp thoại sang chế độ dành riêng cho nền tảng. Đã đổi tên AndroidDialogProperty thành DialogProperty. (I4ef69, b/179138130)
- Đặt LayoutNode thành lớp nội bộ (I8a7b1, b/175103944)
- Thay thế Constraints.enforce bằng Constraints.constrain. (I8b8ea)
- 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)
- Vì lý do hiệu suất, giờ đây, ngữ nghĩa ScrollAxisRange lấy các hàm lambda trả về Độ chính xác đơn thay vì các giá trị Độ chính xác đơn trực tiếp. (If4a35, b/178657186)
- Thêm ngữ nghĩa EditableText để đánh dấu văn bản nhập vào có thể chỉnh sửa của trường văn bản, hỗ trợ cho khả năng tiếp cận và các phương pháp kiểm thử tương ứng để kiểm tra ngữ nghĩa (I8e07a)
- Làm OwnerLayer/OwnerScope/OwnerSnapshotObserver nội bộ (I4ffaf, b/175103944)
- 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)
- Cập nhật Snapshot API (API Ảnh chụp nhanh) để phù hợp hơn với nguyên tắc API cũng như ẩn các lớp triển khai nội bộ từ API công khai. (Id9e32)
- Đã 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)
- BaseTextField không còn được dùng nữa hiện đã bị xoá. Sử dụng BasicTextField thay thế. (I71368)
- 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 ngữ nghĩa của mật khẩu cho tính năng hỗ trợ tiếp cận (I231ce)
- 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 các phần mềm tiện ích
emptyContent()
và(@Composable () -> Unit).orEmpty()
do không còn có bất kỳ giá trị hoặc tác động tích cực nào về hiệu suất (I0484d) snapshotFlow
vàwithMutableSnapshot
không còn ở trạng thái thử nghiệm (I6a45f)- Bạn hiện có thể đóng các bộ cấu phần lại. Trình kết hợp lại đã đóng sẽ tiếp tục tái cấu trúc cho đến khi hoàn tất quá trình tái cấu trúc coroutine con. Recomposer.shutDown được đổi tên để huỷ chế độ tương phản với chế độ đóng. (Ib6d76)
- Đổi tên UiSavedStateRegistry thành SaveableStateRegistry, đổi tên AmbientUiSavedStateRegistry thành AmbientSaveableStateRegistry và cả hai đều chuyển sang gói androidx.comose.runtime.saveable. (I30224)
- Đổi tên Cấu phần phần mềm androidx:Comose:runtime:runtime-saved-instance-state thành androidx:compose:runtime:runtime-saveable (I6dcac)
- Xoá nhiều API không còn dùng từ lâu trong gói giao diện người dùng. (I2f2dc)
- Hiện ngừng sử dụng cấu phần phần mềm compose:runtime-dispatch. Giờ đây, bạn có thể tìm thấy compose:runtime và AndroidUiDispatcher trong compose:ui. (Ib5c36)
- Các loại Outline.* không còn là lớp dữ liệu nữa (I4879e, b/178001427)
- Đã xoá
view.captureToImage()
mà không thay thế. (I7fcd2) - 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)
- Thêm tham số layoutDirection vào createOutline của Hình dạng. 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)
- Ngừng sử dụng onImeActionPerformed. Thay vào đó, hãy sử dụng KeyboardActions (If0bbd, b/179071523)
- Ra mắt thành phần ngữ cảnh coroutine
InfiniteAnimationPolicy
sẽ được áp dụng trong ảnh động vô hạn. Theo mặc định, không có chính sách nào được cài đặt, trừ phi chạy thử nghiệm vớiComposeTestRule
. (I50ec4, b/151940543) - Xoá canDrag khỏi Modifier.scrollable. (Id66e7, b/175294473)
- Đã đổi tên LayoutCoordinates.parentCoordinates thành LayoutCoordinates.parentLayoutCoordinate để cho phép cho một thuộc tính parentCoordinates mới. Thuộc tính parentCoordinates hiện cung cấp đối tượng sửa đổi mẹ của LayoutCoordintes. Điều này sẽ tạo ra các trường hợp sử dụng hoàn chỉnh hơn cho onSizeChanged() và onGloballyPositioned() (Idfbfd, b/177926591)
- 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)
- Đã xoá unregisterProvider của SaveableStateRegistry. Thay vào đó, registerProvider() hiện trả về đối tượng SaveableStateRegistry.Entry mà bạn có thể sử dụng để huỷ đăng ký (Ic4274, b/178583739)
- rememberSavedInstanceState() đổi tên thành rememberSaveable() và chuyển sang gói androidx.compose.runtime.saveable. (I1366e, b/177338004)
- Đã xoá CoreText và CoreTextField khỏi API công khai
- Xoá phương thức nạp chồng SelectionContainer không dùng nữa
- (I99c19)
- Các thử nghiệm mà ứng dụng Compose dùng để sử dụng trong các hệ phân cấp được thêm/xoá trực tiếp vào nhóm WindowManager hiện đã ổn định hơn. (Ie81ed, b/175765614)
- 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. Tạm dùng 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 trong khi Vòng đời máy chủ ngừng hoạt động. (I38e11)
- Recomposer.runningRecomposers hiện cung cấp StateFlow toàn cục của RecomposerInfo chỉ đọc để quan sát trạng thái cấu trúc đang diễn ra trong quá trình này. Ưu tiên API này hơn Recomposer.current() hiện không dùng nữa. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver đã được chuyển từ androidx.compose.runtime.savedinstancestate thành androidx.compose.runtime.saveable (I77fe6)
- EditCommands chấp nhận AnnotatedString. Tuy nhiên, đây là API chỉ thay đổi và tính năng chỉnh sửa văn bản nhiều kiểu chưa được triển khai. (I4c3ea)
- Đã xoá Thời gian hoạt động và Thời lượng. (Ib9bf4, b/177420019)
- CompositionData.asTree() và các API liên quan đã chuyển sang mô-đun dữ liệu ui-tooling-data riêng biệt và được đánh dấu là thử nghiệm (Ic95b8)
- Đổi tên các 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. 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)
API mà trình biên dịch Compose nhắm mục tiêu đã được tái cấu trúc để sử dụng một giao diện thay vì một loại cụ thể. Giao diện này cũng không còn sử dụng tham số loại.
Đây là một thay đổi nội bộ sẽ không ảnh hưởng đến khả năng tương thích cho mã nguồn mà là một thay đổi có thể gây lỗi nhị phân. (I3b922, b/169406779)
Xoá hàm StringBuilder.deleteAt không công khai (Id6ed9)
Sửa lỗi
- ComposeViews được đặt trong hệ phân cấp khung hiển thị là con của một cấu trúc khác hiện lưu trữ các cấu trúc con của đối tượng cấp trên (I92883)
- Cập nhật API imageFromResource của Compose để sử dụng lại bộ nhớ đệm có thể kéo tài nguyên khi tải các đối tượng ImageBitmap. (If3627, b/178751994)
Phiên bản 1.0.0-alpha11
Ngày 28 tháng 1 năm 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
đã phát hành. Phiên bản 1.0.0-alpha11 bao gồm các thay đổi sau.
Thay đổi về API
- WithConstraints đã được thiết kế lại dưới dạng BoxWithConstraints và được chuyển sang foundation.layout. (I9420b, b/173387208)
- Ngừng sử dụng Key.DPadUp. Hãy sử dụng Key.DirectionUp thay thế. (Iab335, b/177954892)
- Giao diện chủ sở hữu hiện sẽ hiển thị trong nội bộ. (If8e35)
- Thêm API FocusManager.moveFocus() để di chuyển tâm điểm theo phương thức lập trình. (I045cb, b/177681839)
- 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 gparentGlobalBounds 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 thế 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 loại đó. (Ia33b2, b/175142755, b/177420019)
- Thêm AmbientSavedStateRegistryOwner, tương tự như AmbientLifecycleOwner và AmbientViewModelStoreOwner hiện có (I9a3e8, b/176756365)
- 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)
- Thêm toolType vào PointerInputChange để phân biệt các thiết bị (Iac787, b/175142755)
- AmbientwindowManager được đổi tên thành AmbientWindowInfo (I2686a, b/177084714, b/177084983)
- 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)
- Xoá PointerInputData và sửa đổi PointerInputChange để cung cấp cho tất cả các trường của PointerInputData. Nội bộ hoá PointerInputEvent và PointerInputEventData vì chúng không được sử dụng trong bất kỳ API công khai nào. (Ifff97, b/175142755)
- GraphicsLayerScope cập nhật triển khai mật độ để hỗ trợ các lượt chuyển đổi dp thành pixel thô. (Ied528, b/176819695)
- Cập nhật API ma trận để tuân theo thứ tự hàng chính và cung cấp các hằng số chỉ mục để hỗ trợ chuyển đổi giữa các lần biểu diễn ma trận khác nhau cho phù hợp với logic chuyển đổi khung giữa SkMatrix và Matrix4 trong nội bộ. (I432e6)
- Xoá các phương thức monotonicFrameAnimationClockOf thử nghiệm (Ib753f, b/170708374)
- Di chuyển String.fintPrecedingBreak và String.fingFollowBreak tới InternalTextApi. (I657c4)
- androidx.comose.ui.util.isSurrogatePair đã được xoá khỏi API công khai. (Ia9494)
- Đã đổi tên TransformedText.transformedText thành TransformedText.text
- TransformedText không còn là lớp dữ liệu (Ie672a)
- Đã xoá
data class
khỏi các loại sau:- InlineTextContent
- LocaleList (I605c7)
- Các loại sau đây không còn là loại dữ liệu:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- Đã thay đổi VisualTransformation thành giao diện chức năng (I3bba4)
- Đã thêm loại tham số tham chiếu hàm (I5e1bd)
- Thêm các giới hạn đã chuyển đổi vào InspectorNode (Ice42f)
Sửa lỗi
- Ngừng sử dụng onCommit, onDispose và onActive, thay vào đó là các API SideEffect và DisposableEffect (If760e)
Thay đổi đối với các hàm trả về một đối tượng cho Font/FontFamily/Typeface
- Thêm các hàm trạng thái ban đầu bắt đầu bằng chữ cái viết hoa
- Ngừng sử dụng các hàm nhà máy có chữ cái đầu tiên viết thường
- Các hàm nhà máy mới sẽ trả về FontFamily thay vì các lớp con
- Ẩn các hàm khởi tạo của lớp con để những lớp này chỉ có thể được tạo dựng qua các hàm nhà máy.
- Đã đổi tên Font.asFontFamily thành Font.toFontFamily (I42aa7)
Ra mắt
ComposeContentTestRule
, phần 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)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)
Thêm tham số mô tả nội dung vào Hình ảnh và Biểu tượng. 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)
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)
OnSizeChanged đã báo cáo kích thước nội dung của bố cục. Giờ báo cáo sẽ hiển thị kích thước ở vị trí tương ứng trong chuỗi đối tượng sửa đổi. (I36b78, b/177562900)
API emit() và tất cả các phương thức nạp chồng đều đã ngừng hoạt động và được đổi tên thành ComposeNode. Các API giống hệt nhau, chỉ khác một tên để tuân theo quy ước đặt tên của Compose (I4137b)
TextFieldValue chấp nhận AnnotatedString. Tuy nhiên, đây chỉ là thay đổi đối với API và tính năng chỉnh sửa văn bản nhiều kiểu chưa được triển khai.
- Xoá
initial
khỏi tham số hàm khởi tạo EditingBuffer. (I326d5)
- Xoá
Ngừng sử dụng invalidate và compositionReference(), thay vào đó lần lượt là currentRecomposeScope và rememberCompositionReference. (I583a8)
AnnotatedString được thay đổi để mở rộng từ kotlin.CharSequence. Do đó, length (độ dài) và subSequence giờ là các hàm thực thể và các hàm mở rộng bị xoá. (Iaf429)
Ngừng sử dụng CompositionLifecycleObserver và thay thế bằng RememberObserver.
RememberObserver
thay thế choCompositionLifecycleObserver
với ngữ nghĩa được sửa đổi và phương thức được đổi tên. Việc thay đổi sang API mới có thể được thực hiện bằng máy móc đối với các đối tượng chỉ được nhớ một lần và tiếp tục là phương pháp được đề xuất. Tuy nhiên, nếu một tệp đối chiếu được nhớ nhiều lần trong một cấu trúc, thìonRemembered
sẽ được gọi cho mỗi tệp đối chiếu màonEnter
chỉ được gọi một lần.onEnter
được gọi nhiều lần nếu đối tượng được sử dụng trong các cấu trúc phụ, chẳng hạn nhưWithConstraints
vàScaffold
, giúp đảm bảo rằng một lệnh gọionEnter
không đáng tin cậy và đã bị xoá choRememberObserver
.RememberObserver
thêmonAbandoned
được gọi nếu thực thểRememberObserver
được trả về từ lệnh gọi lại truyền đếnremember
nhưng không được nhớ ở trạng thái cấu trúc và do đó, sẽ không bao giờonRemembered
được gọi. Điều này có thể xảy ra nếu một trường hợp ngoại lệ chấm dứt quá trình cấu trúc trước khi hoàn tất hoặc cấu trúc bị huỷ vì trạng thái đang tạo quá trình cấu trúc không còn hiệu lực hoặc không còn cần thiết nữa. Nếu thực thể củaRememberObserver
(tuân theo một mục đề xuất tham chiếu ở trên) đang theo dõi một tài nguyên bên ngoài (cảonForgotten
vàonAbandoned
), thì mỗi loại sẽ cho thấy tài nguyên không còn cần thiết nữa. Nếu đối tượng đang theo dõi công việc đã bắt đầu hoặc tài nguyên được phân bổ trongonRemembered
,onAbandoned
có thể bị bỏ qua vì đối tượng này sẽ không được gọi nếuonRemembered
được gọi. (I02c36)Không dùng các phép tính số học từ 2 TextUnits trở lên. TextUnit.Sp và TextUnit.Em không dùng nữa, có chức năng ưu tiên cho các chức năng của tiện ích như Int.sp và Int.em. (I48369)
Theo mặc định, các tài nguyên trong thư viện chưa được khai báo rõ ràng (ví dụ: qua public.xml) sẽ ở chế độ riêng tư. (Ia1dcc, b/170882230)
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 sử dụng 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 hoạt động tải rảnh tay và sử dụng các đối tượng sửa đổi trực tiếp 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)Vui lòng sử dụng ImeAction.None thay vì ImeAction.NoAction
- Vui lòng sử dụng ImeAction.Default thay vì ImeAction.Unspecified (Ie1bcc)
Tận dụng TestCoroutineDispatcher trong quá trình kiểm thử (I532b6)
Đổi tên TextInputService.onStateUpdated thành updateState (Id4853)
Ngừng sử dụng tính năng chuyển đổi dựa trên TransitionDefinition (I0ac57)
TextUnitType.Inherit đã bị xoá. Thay vào đó, hãy sử dụng TextUnitType.Unspecified. (I9ff64)
Phiên bản 1.0.0-alpha10
Ngày 13 tháng 1 năm 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
đã phát hành. Phiên bản 1.0.0-alpha10 bao gồm các thay đổi sau.
Thay đổi có thể gây lỗi
Việc sắp xếp lại cấu trúc của API trình biên dịch nội bộ cho phép thay đổi hàng loạt các nút được tạo do kết quả của cấu trúc vào giai đoạn "áp dụng các thay đổi" của cấu trúc, sau khi tất cả các hàm
@Composable
đã hoàn tất.Đây là thay đổi có thể gây lỗi hành vi có khả năng ảnh hưởng đến mã ứng dụng vì các nút không còn hoạt động qua API nội bộ và thử nghiệm cho đến khi thay đổi được áp dụng. Bạn thường có thể xử lý vấn đề này bằng cách đặt mã xung quanh các phần phụ thuộc như vậy trong một thành phần kết hợp
SideEffect
để trì hoãn việc thực thi mã cho đến khi các nút đã được tạo và khởi chạy. (I018da)
Thay đổi về API
- Thêm Modifier.focusOrder() có thể dùng để chỉ định thứ tự truyền tải tiêu điểm tuỳ chỉnh (I90cf5, b/175899543, b/170155556, b/170155429)
- Xoá focusObserver không còn được dùng nữa và thay thế bằng onFocusChanged hoặc onFocusEvent. (I3ecb9, b/175156387)
- Các thay đổi về API EditOperations
- Đổi tên EditOperation là EditCommand
- Thêm hậu tố Command cho các hoạt động triển khai chi tiết EditOperation
- EditCommand không còn là lớp dữ liệu
- Đổi tên hàm EditOperation.process thành applyTo
- Đổi tên InputEventListener thành InputEventCallback
- (I0a366)
- Đã xoá PxSquared, PxCubed, PxInverse không sử dụng. Thay đổi Size.center() thành thuộc tính. (I973f7)
- Giờ đây, mô-đun ui-test có thể định cấu hình việc tạo Trình kết hợp lại cho Giao diện người dùng đang trong quá trình kiểm thử (Ibebd8)
- Tốc độ đã sửa đổi để có các phần và thành phần toán học. (Ib0447)
- Đổi tên
@ExperimentalTesting
thành@ExperimentalTestApi
để phù hợp với các chú giải API thử nghiệm tương tự (Ia4502, b/171464963) - Đã đổi tên Color.useOrElse() thành Color.takeOrElse() (Ifdcf5)
- Đã xoá các loại DpInverse, DpSquared và DpCubed không dùng đến. (I4d62b)
- Constraints#satisfiedBy đã được đổi tên thành isSatisfiedBy. (I9cf5c)
- Thêm lệnh gọi lại để thông báo cho Chủ sở hữu khi giới hạn layoutnode thay đổi. (I72fd1)
- Thêm isSpecified, isUnspecified và useOrElse cho các lớp cùng dòng có một hằng số Không xác định. (I93f7b, b/174310811)
Mở rộng [Abstract]ComposeView API để cho phép tái chế khung hiển thị dựa trên Compose, loại bỏ cấu trúc để tạo lại sau. Thêm API để cài đặt và khám phá Trình kết hợp lại trong phạm vi cửa sổ và CompositionReferences để tạo cấu trúc con.
Thêm ViewCompositionStrategy để định cấu hình chiến lược loại bỏ cấu trúc của [Abstract]ComposeViews; hành vi mặc định được loại bỏ trên cửa sổ có thể tách biệt. (I860ab)
Xoá api công khai Any.identityHashCode() (I025d7)
Xoá API toStringAsFixed và sử dụng String.format thay thế trực tiếp. (Iaba6b)
Thêm nút Bật/tắt đối với nền tảng Strings.kt (I4a5b7, b/172366489)
Chuyển nativeClass thành mô-đun giao diện và nội bộ hoá nội dung đó. 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)
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)
Giới thiệu SelectionRegistrar.notifySelectableChange để thông báo các bản cập nhật Có thể chọn (Selectable) cho SelectionManager. (I6ff30, b/173215242)
Ra mắt thuộc tính Outline.bounds để lấy phần giới hạn cho các cách triển khai đường viền khác nhau. (I16e74, b/175093504)
Ngừng sử dụng TestUiDispatcher. Sử dụng Dispatchers.Main thay thế (Ic171f, b/175385255)
ImeOptions và KeyboardOptions không còn là loại dữ liệu (I3c898, b/168684531)
Các thay đổi về API ImageTransformation
- Đổi tên OffsetMap thành OffsetMapping
- Đổi tên OffsetMapping.identityOffsetMap thành OffsetMapping.Identity
- ChangeTransformation không còn là loại dữ liệu nữa
- Di chuyển OffsetMapping đến tệp riêng của lệnh
- (I0bdf3)
Đổi tên Position thành DpOffset và xoá getDistance() (Ib2dfd)
Đã thay đổi fun Dp.isFinite() thành val Dp.isFinite (I50e00)
Sửa lỗi
- Trình kết hợp lại sẽ cho thấy Flow (Luồng) của trạng thái hiện tại, cho phép theo dõi hoạt động và hoạt động của Flow và của các hiệu ứng liên quan. (Ifb2b9)
- Giờ đây, bạn có thể truy cập vào keyEvent gốc thông qua keyEvent.nativeKeyEvent (I87c57, b/173086397)
animate()
hiện được thay thế bằnganimateAsState()
trả vềState<T>
thay vìT
. 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)
Animatable
API dựa trên coroutine mới đảm bảo tính loại trừ lẫn nhau giữa các ảnh động.- Decay AnimationSpec mới để hỗ trợ ảnh động giảm nhiều chiều
- (I820f2, b/168014930)
Phiên bản 1.0.0-alpha09
Ngày 16 tháng 12 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
đã phát hành. Phiên bản 1.0.0-alpha09 bao gồm các thay đổi sau.
Thay đổi về API
- KeyEvent.Alt không còn được dùng nữa hiện đã bị xoá. Sử dụng KeyEvent.isAlt Pressed thay thế. (Idd695)
- Ngừng sử dụng Modifier.keyInputFilter và Modifier.previewKeyInputFilter. Thay vào đó là Modifier.onKeyEvent và Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Ngừng sử dụng Modifier.focusObserver. Chuyển sang sử dụng Modifier.onFocusChanged hoặc Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Để tạm ngưng các API nhập con trỏ, đổi tên HandlePointerInputScope thành AwaitPointerEventScope và handlePointerInput() thành awaitPointerEventScope(). (Idf0a1, b/175142755)
- 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 thực thể FocuSRequester (I35d84, b/174817008)
- accessibilityLabel đã đổi tên thành contentDescription. accessibilityValue đã đổi tên thành stateDescription. (I250f2)
- Đã xoá các sự kiện tuỳ chỉnh khỏi việc tạm ngưng API nhập con trỏ (Ia54d5, b/175142755)
- Ra mắt một số hàm mới trong SelectionRegistrar và cũng đổi tên onPositionChange thành notifyPositionChange. (Ifbaf7)
- Nhiều thành viên khác của LayoutsNode mà chúng tôi đã đánh dấu là nội bộ (I443c6)
- Bố cục thông tin được giới thiệu để sử dụng trong công cụ và thử nghiệm (I9b190)
- Đặt AndroidOwner thành nội bộ (Ibcad0, b/170296980)
- Xoá chú thích ExperimentalPointerInput (Ia7a24)
- Đã thêm hệ thống cuộn lồng. Tham khảo Modifier.nestedScroll để biết thêm chi tiết (I36e15, b/162408885)
- Đặt subcomposeInto(LayoutNode) thành nội bộ (Id724a)
Thay đổi giao diện
Applier
để đơn giản hoá quy trình xây dựng cây từ dưới lên thay vì từ trên xuống.Phương thức
insert()
được đổi tên thànhinsertTopDown()
.Thêm phương thức mới:
insertBottomUp()
.Một trình áp dụng sẽ chèn các nút vào cây mà trình áp dụng này đang chỉnh sửa bằng cách sử dụng
insertTopDown()
hoặcinsertBottomUp()
, tuỳ thuộc vào việc chế độ nào hoạt động hiệu quả hơn.Một số cây, chẳng hạn như
LayoutNode
vàView
, có hiệu quả hơn khi tạo từ dưới lên so với từ trên xuống. Trước đó, hệ thống phải có một tập hợp các nút chèn để triển khai từ dưới lên nên cần sao chép sang tất cả các trình áp dụng cần xây dựng từ dưới lên để đạt được hiệu suất. Với thay đổi này,Applier
ghi đèinsertBottomUp()
để tạo cây từ dưới lên vàinsertTopDown()
để tạo cây từ trên xuống. (Icbdc2)Thêm các thuộc tính dismissOnBackPress và dismissOnClickOutside vào AndroidDialogProperties. Các tuỳ chọn này cho phép định cấu hình khi lambda onDismissRequest của hộp thoại sẽ được gọi. (If5e17)
Thêm API painterResource để xử lý các đối tượng Painter (Trình vẽ) được tải mờ ảo từ các định dạng thành phần tạo từ đường quét (như PNG) hoặc VectorDrawables. Người dùng không còn phải xác định trước loại thành phần và có thể gọi phương thức này để nhận đối tượng Painter (Trình vẽ) để sử dụng trong các thành phần kết hợp Image (Hình ảnh) hoặc đối tượng sửa đổi trình vẽ. (I2c703, b/173818471)
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)
Giới thiệu API đồ hoạ PathEffect để cung cấp các mẫu khác nhau cho hình dạng vừa vẽ. Ngừng sử dụng NativePathEffect và thay bằng việc hỗ trợ quá trình triển khai dự kiến/thực tế của PathEffect. (I5e976, b/171072166)
Thêm giao diện IdlingResource vào Compose, dưới dạng một biến thể hỗ trợ Compose của tài nguyên đang hoạt động của Espresso. Bạn có thể đăng ký và huỷ đăng ký thông qua ComposeTestRule (I433f3)
Xoá gói (huỷ) đăng ký chung của ComposeIdlingResource và (huỷ) đăng ký đồng hồ vào ComposeIdlingResource (I32660)
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)
Xoá SlotTable, SlotReader và SlotWriter khỏi API công khai. Trước đây, các hàm này được đánh dấu là InternalComposeAPI. Giờ đây, chúng thuộc nội bộ của mô-đun Compose.
CompositionData và CompositionGroup được thêm vào để thay thế cho API ui-tooling dùng để trích xuất thông tin về cấu trúc. Các hàm này là công khai nhưng không nhằm sử dụng bên ngoài API công cụ giao diện người dùng vì chúng cung cấp thông tin chưa xử lý mà API công cụ giao diện người dùng diễn giải (I31a9c)
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)
Không dùng LazyColumnFor, LazyRowFor, LazyColumnForIndexed và LazyRowForIndexed nữa. Thay vào đó, sử dụng LazyColumn và LazyRow (I5b48c)
Ngừng sử dụng BuildCompat.isAtLeastR (Idb37e)
Thêm hàm nhà máy buildAnnotatedString để tạo một AnnotatedString. Ngừng sử dụng hàm trình tạo annotatedString. (Idfe0b)
Đã xoá các phương thức mở rộng trên Float và Double để chuyển đổi giá trị sang radian. Di chuyển sang một hàm riêng trong quá trình triển khai PathParser là nơi duy nhất mà tệp được sử dụng (I25f52)
Phiên bản 1.0.0-alpha08
Ngày 2 tháng 12 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
đã phát hành. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.
Thay đổi về API
- 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)
- Thêm các phương thức placeable.placeWithLayer() và placeable.placeRelativeWithLayer() mới, cho phép bố cục tuỳ chỉnh và đối tượng sửa đổi bố cục đặt thành phần con để giới thiệu một lớp đồ hoạ cho bản vẽ. Nhờ đó mà chúng ta có thể tối ưu hoá bản vẽ lại đầu tiên. Vì vậy, khi cần di chuyển một thành phần con, chúng ta không phải vẽ lại nội dung của nó, thứ hai, chúng ta có thể áp dụng các phép biến đổi bản vẽ cho một thành phần con (Ibd8f6 ,b/170296989 ,b/171493718 ,b/173030831)
- 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
- Điều chỉnh để thời gian hoạt động của PointerInputData và các trường vị trí không nhận giá trị rỗng. (Id468a)
- 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 WindowManager.isWindowFocused để kiểm tra xem cửa sổ máy chủ có phải là tiêu điểm hay không và WindowFocusObserver cung cấp một lệnh gọi lại onWindowFocusChanged. (I53b2a, b/170932874)
- Cập nhật API TransformOrigin để có cú pháp giải cấu trúc trả về
pivotFractionX
vàpivotFractionY
dưới dạngcomponent1
vàcomponent2
(If43c4, b/173586560) - 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) - Đã thêm API để kiểm tra xem phím Alt, Ctrl, Meta hay phím bổ trợ Shift đã được nhấn khi một sự kiện chính được gửi đi. (I50ed9)
- Thêm phương thức nạp chồng
Modifier.drawLayer()
mới. 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ức placeable.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) - Di chuyển
androidx.compose.ui.text.Typeface
sangandroidx.compose.ui.text.font.Typeface
(Ic2b81) - Đổi tên đối số ngữ nghĩa mergeAllDescendants thành mergeDescendants. (Ib6250)
- Trình phát hiện thao tác kéo mới tạm ngưng API nhập con trỏ, bao gồm cả việc khoá hướng. (Icef25)
- Đã đổ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)
- Thêm thông số zIndex cho place() của PlacementScope để Modifier.zIndex() hiện hoạt động như một LayoutsModifier và mọi bố cục tuỳ chỉnh có thể đặt zIndex cho con ngay trong khối vị trí (I711f7, b/171493718)
- 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 place(Offset) và placeRelative(Offset). Thay vào đó, sử dụng các giá trị nạp chồng với độ dời số nguyên (I4c5e7)
- Xoá các API trước đây đã ngừng hoạt động: Xoá Modifier.onPositioned, sử dụng Modifier.onGloballyPositioned. Xoá, Modifier.onDraw, sử dụng Modifier.onDrawBehind. Modifier.plus đã bị xoá, hãy sử dụng Modifier.then. Color.Unset đã bị xoá, hãy sử dụng Color.Unspecified. Đã xoá loại PxBounds, hãy dùng Rect thay thế. (Ie9d02, b/172562222)
- Giao diện Căn chỉnh đã được cập nhật và hoạt động bình thường. (I46a07, b/172311734)
- Trình phát hiện cử chỉ cho thao tác nhấn, nhấn đúp, nhấn và giữ và chỉ báo nhấn được thêm bằng cách dùng nội dung nhập con trỏ tạm ngưng mới. Chúng tôi cũng bổ sung một số tiện ích giúp nhà phát triển dễ viết trình phát hiện cử chỉ của riêng họ hơn. (I00807)
- Đổi tên
id
thànhlayoutId
choLayoutIdParentData
.Measurable.id
được đổi tên thànhMeasurable.layoutId
. (Iadbcb, b/172449643) - Trình phát hiện cử chỉ chạm đa điểm mới, bao gồm các trình trợ giúp phát hiện thao tác xoay, thu phóng và kéo. (Ic459d)
- Ra mắt các API SweepGradientShader và SweepGradientBrush. (Ia22c1)
- 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)
Thêm các API cuộn dựa trên coroutine:
Thêm LazyListState.snapToItem và LazyListState.smoothScrollBy, cũng như các API cấp thấp hơn để kiểm soát thao tác cuộn. Các API này cung cấp giao diện tạm ngưng để kiểm soát tính năng cuộn. Tính năng này sẽ đợi cho đến khi hoàn thiện thanh cuộn trước khi trả về. (Ie5642)
Modifier.focusable cần có nền bổ trợ. Hãy dùng Modifier.focusable để thêm nội dung có thể đặt tiêu điểm vào một thành phần, kèm theo khả năng hỗ trợ tiếp cận và ngữ nghĩa chính xác. (I41eb9, b/152525426, b/162865824)
Cung cấp các phương thức triển khai mặc định của các phương thức và thuộc tính trong AnimationWatchTestRules có thể được uỷ quyền cho
clock
(I7ea3d, b/173399709) của phương thức đóAndroidComposeTestRule hiện có thể chấp nhận trình chạy hoạt động tuỳ chỉnh (Ib8288, b/153623653, b/154135019)
Ngừng sử dụng TextLayoutResult.getLineVisibleEnd. Thay thế TextLayoutResult.getLineEnd hiện đã có một thông số mới visibleEnd. (I73282)
Đã 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)
Hỗ trợ TtsAnnotation cho công cụ chuyển văn bản sang lời nói. (I54cc6)
Các API mới để chạy ảnh động trong coroutine (Ied662)
Sửa lỗi
- Đổi tên tham số căn chỉnh của Hộp 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)
- Thêm tham số resetInput vào TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- 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)
- Tạm thời thêm tuỳ chọn cho phép điều khiển TestAnimationClock bằng MonotonicFrameClock (I1403b, b/173402197)
- Thêm trình bao bọc Bộ phông chữ (Typeface) của Android. Bạn có thể tải Bộ phông chữ Android thông qua hàm
typeface
, ví dụtypeface(Typeface.DEFAULT)
. Cũng đã đổi têntypefaceFromFontFamily()
thànhtypeface()
(I52ab7) - Thêm mục kiểm tra tìm lỗi mã nguồn để đảm bảo rằng các hàm nhà máy của Đối tượng sửa đổi được xác định là phần mở rộng của Đối tượng sửa đổi, nhờ vậy, các hàm này có thể liên kết trơn tru với nhau. (I07981)
- Xoá mô-đun cũ, giao diện người dùng kiểm tra giao diện người dùng và các nội dung mô-đun (I3a7cb)
- Trình kết hợp lại không còn chấp nhận EmbeddingContext; các phần phụ thuộc lên lịch bắt buộc được lấy từ effectCoroutineContext. Ngừng sử dụng FrameManager; việc tích hợp nền tảng sẽ bắt đầu quá trình xử lý ảnh chụp nhanh toàn cục của riêng chúng. (I02369)
- Chuyển thông tin kiểu đến nút hỗ trợ tiếp cận. (If5e8d)
- 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 người dùng Compose phiên bản 1.0.0-alpha07
Ngày 11 tháng 11 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
đã phát hành. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
- Ra mắt lớp cùng dòng ScaleFactor để thể hiện hệ số tỷ lệ cho các trục ngang và trục dọc độc lập với nhau nhằm hỗ trợ các trường hợp sử dụng tỷ lệ không đồng nhất.
- Thêm phương thức computeScaleFactor vào ContentScale
- Thêm ContentScale.FillBounds để thực hiện điều chỉnh tỷ lệ không đồng nhất nhằm kéo dài phạm vi src để chiếm hoàn toàn đích đến.
- Thêm các phương thức toán tử để tính toán các thông số ScaleFactor với thông số Kích thước.
- (Ic96a6, b/172291582)
- Đã thêm các nhà máy BiasAlignment và BiasAbsoluteAlignment để tạo Căn chỉnh. (Iac836, b/169406772)
- Giúp nhà phát triển tập trung rõ ràng vào tiêu điểm. (I90372)
- Đã khắc phục lỗi không vẽ được độ cao cho Chế độ xem trong Compose. (If7782)
- Tạo API onDrawBehind trong ContentDrawScope để phù hợp với quy ước đặt tên của Modifier.drawBehind. (I4fc3a, b/171955269)
- Thêm tuỳ chọn hỗ trợ cho khoảng cách của máy ảnh để bổ sung cho các lượt chuyển đổi 3d rotationX/rotationY trên API lớp. (I40213, b/171492100)
- Thêm SelectionContainer mà không có lệnh gọi lại (Ibfadb)
- 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)
- Xoá độ mờ khỏi vùng sửa đổi drawShadow() vì nó gây nhầm lẫn. (I82c62, b/171624638)
- MeasureResult được xoá 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)
- Đã xoá FocusState2 không dùng nữa (I686cb, b/168686446)
- ZIndexModifier hiện là nội bộ (I1808b, b/171493718)
- Cập nhật loại trả về của phương thức lerp trên các tham số Size (Kích thước) để trả về Kích thước có giá trị bằng không nhằm tránh hộp thoại không cần thiết. (Ib0044)
- Thêm TestMonotonicFrameClock để kiểm thử mã dựa trên MonotonicFrameClock của Compose để chờ sự kiện khung cấu trúc sử dụng runBlockingTest của kotlinx-coroutines-test (I4402f)
- Đã xoá GestureScope.localToGloba (I15299, b/171462785)
- Thêm trình tìm kiếm
onAllNodesWithSubstring
(I81dd7, b/171462889) - Ngừng sử dụng mô-đun androidx.ui.test. Vui lòng di chuyển đến androidx.comose.ui.test và androidx.comose.ui.test.junit4 (I452e8)
Sửa lỗi
- captureToBitmap chuyển sang captureToImage. (I86385)
- 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)
- Cập nhật TextFields để chấp nhận KeyboardOptions (Ida7f3)
- Đổi tên KeyboardOptions thành ImeOptions (I82f36)
- Di chuyển KeyboardType và ImeAction vào KeyboardOptions (I910ce)
- Thêm provideDefault với vai trò thay thế trong việc cung cấp môi trường xung quanh và dùng để chỉ định các giá trị môi trường xung quanh chỉ được đặt khi không có giá trị môi trường nào được cung cấp. (Id6635, b/171024925)
- Ngừng sử dụng BaseTextField. Sử dụng BasicTextField thay thế. (I896eb)
- Giới thiệu mô-đun ui-test-junit4 (Ib91f8)
relativePaddingFrom
đã được đổi tên thànhpaddingFrom
. Hệ thống sửa đổipaddingFromBaseline
đã được thêm vào để thuận tiện cho việc chỉ định khoảng cách từ giới hạn 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)
- Ra mắt thành phần kết hợp tài nguyên sẽ kết hợp lại khi cấu hình cập nhật. (I6387c, b/167352819)
- Trình soạn lại hiện yêu cầu CoroutineContext công trình đang xây dựng (Ic4610)
- Tính tổng các giá trị
zIndex
khi áp dụng nhiềuModifier.zIndex()
. Trước đó, mục đầu tiên là chiến thắng. (Ic514c, b/170623936) - Các thay đổi đối với cách triển khai SlotTable nội bộ sẽ không ảnh hưởng đến API công khai. (If9828)
- Thêm Tuỳ chọn IME tự động sửa bàn phím (I57b8d)
- androidx.ui.test di chuyển sang androidx.compose.ui.test (I9ffdb)
- Đã xoá keyboardOptions.toImeOptions khỏi API công khai. (Ic2e45)
Đóng góp bên ngoài
- Đã tắt xuất bản cấu phần phần mềm nội bộ androidx.comose.ui:ui-text-android (Ib93fa)
Phiên bản 1.0.0-alpha06
Ngày 28 tháng 10 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
đã phát hành. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Trình kết hợp lại hiện là CompositionReference và là thành phần cha hợp lệ trong cấu trúc. Hiện tại, bạn bắt buộc phải sử dụng tính năng Trình kết hợp lại rõ ràng ở ít địa điểm hơn. (I4036f)
- Ngừng sử dụng VectorPainter và thay bằng rememberVectorPainter để chỉ ra 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. (Ifda43)
- Cập nhật API Modifier.drawWithCache để hiển thị ContentDrawScope dưới dạng phạm vi trình thu nhận thay vì DrawScope để cung cấp sự triển khai khả năng sắp xếp lại các lệnh vẽ. Điều này rất hữu ích cho việc kết hợp/phân phối các trường hợp sử dụng mà trong đó pixel nội dung phải được hiển thị đầu tiên để thuật toán chế độ kết hợp tương ứng được áp dụng đúng cách. (Ie7ec8)
- Chuyển SimpleContainer vào PopupTestUtils.kt (I78c57)
- ConsumedData không còn là một loại dữ liệu. Truy cập https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 để xem thông tin chi tiết (I1737f)
- Chỉnh sửa Vị trí ô điều khiển Phải sang Trái (I6e1e0)
- 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)
- Thay đổi có thể gây lỗi: xoá giá trị trả về khỏi
PointerInputFilter.onPointerEvent(...)
vì giá trị duy nhất có thể thay đổi được trong các sự kiện con trỏ là dữ liệu sử dụng. Thay vì trả về dữ liệu từPointerInputFilter.onPointerEvent(...)
, giờ đây, bạn có thể chỉ cần thay đổi dữ liệu sử dụng của PointerEvents đã chuyển qua. (I6acd0) - MeasurementScope và IntrinsicMeasureScope đã được tạo giao diện. (I1a087, b/170461665)
- Hàm hợp nhất cho AlignmentLine đã bị ẩn. (I9da1a, b/170612900, b/170611568)
- Thêm khả năng chỉ định thông tin của công cụ kiểm tra trong công cụ sửa đổi được kết hợp (Idee08, b/163494569)
- Thêm tuỳ chọn SelectAll vào trình đơn lựa chọn (Ief02b)
- Bản cập nhật DrawTransform.Xoay để lấy
một thông số tổng hợp mặc định ở giữa để khớp với
tài liệu.
- Cập nhật DrawScope.rotateRad để tiêu thụ một mức chênh lệch cho điểm chuyển đổi cho phù hợp với các phương thức chuyển đổi khác.
- DrawScope.rotateRad không dùng nữa quá tải tiêu thụ nổi cho toạ độ x và y của bảng tổng hợp.
- (Iffcbb, b/170434992)
Sửa lỗi
- Bật chế độ kiểm tra tìm lỗi mã nguồn API của MissingGetterMatchingBuilder cho androidx (I4bbea, b/138602561)
- Thêm thử nghiệm (I6b8ae)
- 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 IME KeyboardCapitalization (I8ac38)
- Thêm tuỳ chọn bàn phím một dòng vào CoreTextField (I72e6d)
- Chuyển SimpleContainer vào PopupTestUtils.kt (I65c3e)
- Đổ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)
- Cải thiện khả năng tương tác trên Android bằng cách tiếp tục gửi MotionEvents cho các Chế độ xem Android con trả về giá trị false cho onTouchEvent cho tất cả các hành động ngoại trừ
ACTION_DOWN
(I94c5a, b/170320973) - Hộp được tạo một hàm cùng dòng. (Ibce0c, b/155056091)
Đóng góp bên ngoài
- Hỗ trợ nhiều ngôn ngữ cho
AnnotatedString.capitalize
vàAnnotatedString.decapitalize
(I4aa7f)
Phiên bản 1.0.0-alpha05
Ngày 14 tháng 10 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
đã phát hành. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm DSL để chỉ định thông tin của công cụ kiểm tra (Ic9a22)
- Di chuyển LongPress vào Văn bản. (Iff2bc)
- Modifier.pointerInput thử nghiệm tạm ngưng đối tượng sửa đổi đầu vào (Ia77d2)
- Thêm các thao tác hỗ trợ tiếp cận Sao chép/Dán/Cắt (I6db4f)
- Đã xoá hàm tạo công khai cho AndroidOwner (Iacaef)
- 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)
Dữ liệu tiêu thụ hiện có thể thay đổi. Ngoài ra các lệnh gọi đến hàm mở rộng thực hiện tiêu thụ giờ đây không còn trả về PointerInputChange mới mà thay vào đó thay đổi PointerInputChange đã cung cấp.
Đây là bước đầu tiên trong quy trình 2 bước để khiến dữ liệu PointerEvent có thể biến đổi sao cho mã người dùng không thể chỉnh sửa dữ liệu con trỏ khác. Bước thứ hai là xoá loại
List<PointerInputChange>
trả về khỏiPointerInputFilter.onPointerEvent(...)
. (Id067e)Tắt tính năng Lựa chọn trong Văn bản và Bản minh hoạ. (Ie7e97)
Tạo onGloballyPositioned thành một hàm nội tuyến (I15830)
Đổi tên OnPositionedModifier thành OnGloballyPositionedModifier và đổi tên onPositioned() thành onGloballyPositioned(). (I587e8, b/169083903)
Thêm thuộc tính hasPendingMeasureOrLayout vào Chủ sở hữu, cho biết liệu Chủ sở hữu có bố cục đang chờ xử lý nào hay không. (I3d9f8, b/169038599)
Thêm API vào tiêu điểm rõ ràng theo chương trình (Ie1dc2, b/161487952)
Đã xoá
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
phải được sử dụng đúng vị trí của hàm. (I6f04a)Các thay đổi về Kích thước
- Đã xoá Size.getFlipped
- Đã xoá Size.rem
- Đã xoá Size.truncDiv (Ief44d, b/169790720)xoá
Là một phần của quy trình tiêu chuẩn hoá các giá trị canh cho các lớp cùng dòng, đổi tên Color.Unset thành Color.Unspecified để nhất quán với các lớp cùng dòng 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 tham số phạm vi trong AnnotatedString.Builder.addStringAnnotation thành thẻ để đảm bảo tính nhất quán cho API. (I7c8cb)
Sửa lỗi
- Cải thiện hiệu suất cuộn của LazyColumn/Row bằng cách thực hiện ít công việc hơn trong phân mục trên mỗi lần cuộn. Thêm phương thức hasInvalidations() mới cho lớp Thành phần kết hợp. Đổi tên phương thức hasPendingChanges() của Trình kết hợp lại thành hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Cập nhật các tham số Size.Unspecified thành Float.NaN thay vì Float.POSITIVE_INFINITY. Cập nhật các nội dung triển khai Painter để kiểm tra với Size.Unspecified cũng như non-finite Sizes. (I95a7e)
- Giờ đây, thứ tự của các lệnh gọi place() trong Layout tuỳ chỉnh sẽ xác định thứ tự bản vẽ cho thành phần con (Ibc9f6)
- Hỗ trợ AnnotatedString thành lượt chuyển đổi SpannableString để hỗ trợ tiếp cận. (Ief907)
- Thêm mã giả lập cho các lớp Android trên các nền tảng cũ để tránh việc sử dụng tính năng phản chiếu khi có thể. (Ia1790)
- Khắc phục lỗi: Nếu bàn phím phần mềm hiển thị khiến ứng dụng dịch, thì các toạ độ nhập của con trỏ sẽ không chính xác. (Ic4cec, b/163077821)
Phiên bản 1.0.0-alpha04
Ngày 1 tháng 10 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
đã phát hành. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm OwnerScope để cho phép thu thập bố cục và vẽ phạm vi quan sát khi các phạm vi này không còn hợp lệ. (Ic4cf8)
- Thêm OnRemeasuredModifier và onSizeChanged() để nhận được lệnh gọi lại khi bố cục nội dung đã được đo lường lại và kích thước thay đổi tương ứng. (I657cf, b/154108792)
- Thêm thao tác ngữ nghĩa nhấp và giữ (I6281b, b/156468846)
- Đặt FocusManager ở chế độ riêng tư. (I7872f)
Cập nhật phương thức triển khai để tạo cách triển khai DrawCacheModifier thay vì thêm các thuộc tính không bắt buộc trên DrawModifier.
Tài liệu cập nhật cho nhiều phương pháp (Ibd166)
Đặt TextRange cùng dòng để tránh tạo đối tượng. (Id034b)
Bạn không thể đọc vị trí PlacementScope#parentWidth và PlacementScope#parentLayoutDirection nữa từ khối vị trí của một bố cục tuỳ chỉnh. (Icc1ae, b/168295623)
thêm AccessibilityScrollState vào các thuộc tính ngữ nghĩa. (Ifeda9)
Ra mắt Modifier.drawWithCache để hỗ trợ việc tạo một đối tượng bản vẽ sẽ tạo lại các phần phụ thuộc tuỳ thuộc vào thông tin về kích thước/trạng thái (I376dc)
Xoá ParagraphConstraints. Chiều rộng được chuyển trực tiếp đến Đoạn ngay. (Ica712)
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ú thích rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled và textInputServiceFactory với @VisibleForTesting, tạo cho chúng API nội bộ và ẩn các kdoc (I554eb, b/168308412)
- Xoá SelectionContainer từ Trên cùng để vô hiệu hoá lựa chọn mặc định và tránh hành vi không mong muốn. Cụ thể, người dùng có thể sử dụng SelectionContainer để bao gồm nội dung cần chọn. (I8dfe0, b/158459594)
Phiên bản 1.0.0-alpha03
Ngày 16 tháng 9 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
đã phát hành. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá các hành động ngữ nghĩa tiến/lùi. Đã thêm các bước trong AccessibilityRangeInfo. (Ia47b0)
- Đã xoá
onInvalidate()
khỏiOwner
--OwnedLayer
sẽ xử lý hiệu lực. (Ica72b, b/162061312) Đã xoá các phương thức toán tử trên API Kích thước sử dụng các thông số chênh lệch. Kết quả của những thao tác này không rõ ràng và loại kết quả không mong muốn của những thao tác này. Ví dụ: kích thước – số lần trả về số lần trả về hoặc một kích thước với sự khác biệt?
Đồng thời, xoá các phương thức không dùng nữa trên loại Kích thước. (Iec902, b/166514214)
Sửa lỗi
- Khắc phục các mục trong LazyColumn đôi khi được vẽ không chính xác, điều này cũng có thể gây ra sự cố trong một số điều kiện. (Ibcf17, b/163066980, b/165921895)
- Ngừng sử dụng DpConstraints và các API sử dụng hàm giới hạn này. (I90cdb, b/167389835)
- Di chuyển
createAndroidComposeRule
vàAndroidInputDispatcher
từandroidx.ui.test.android
sangandroidx.ui.test
(Idef08, b/164060572) - Việc sử dụng trọng lực được đổi tên nhất quán thành căn chỉnh hoặc phép căn chỉnh trong 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)
Phiên bản 1.0.0-alpha02
Ngày 2 tháng 9 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
đã phát hành. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- xoá lệnh gọi lại để thông báo cho Chủ sở hữu khi giới hạn layoutnode thay đổi. (If654e, b/166106882)
- Thêm tuỳ chọn hỗ trợ cho các tham số loại trên đường dẫn đồ hoạ vectơ để hỗ trợ vết cắt của hình theo quy tắc lấp đầy đường dẫn evenOdd hoặc NonZero. (I43dd2)
- Uptime và Velocity hiện là các loại nội tuyến (I48f4a)
- Thời lượng hiện là một loại nội tuyến (I565eb)
- Thêm lệnh gọi lại để thông báo cho Chủ sở hữu khi giới hạn layoutnode thay đổi. (Ic40b3)
Sửa lỗi hàm khởi tạo hàm Rect có Offset và bán kính sẽ tạo Rect theo thứ tự trái, phải, trên, dưới thay vì trái, trên, phải, dưới.
Xoá các phương thức đồng hành không dùng nữa trên Rect thay vì các hàm tạo của hàm.
Thêm thử nghiệm để xác minh phương pháp trong Rect.kt (I08460, b/165822356)
Sửa lỗi
- Thêm MutableRect, một hình chữ nhật có thể sửa đổi được. (I71bd2, b/160140398)
- 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)
Thay đổi quy ước gọi cho hàm có khả năng kết hợp. Đây là một thay đổi có thể gây lỗi nhị phân. Mọi thư viện phải được biên dịch lại để hoạt động với phiên bản trình bổ trợ trình biên dịch Compose này.
Thay đổi này không tạo ra thay đổi có thể gây lỗi cấp nguồn do các API duy nhất đã thay đổi là API trình biên dịch có lựa chọn rõ ràng. (I7afd2, b/158123185)
Khắc phục sự cố có thể xảy ra khi gửi đến PointerInputFilter có thể khiến PointerInputFilter bị xoá đồng bộ. (I58f25)
Phiên bản 1.0.0-alpha01
Ngày 26 tháng 8 năm 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
đã phát hành. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.
Phiên bản 0.1.0-dev
Phiên bản 0.1.0-dev17
Ngày 19 tháng Tám, 2020
androidx.compose.ui:ui-*:0.1.0-dev17
đã phát hành. Phiên bản 0.1.0-dev17 bao gồm các thay đổi sau.
Thay đổi về API
- Ngừng sử dụng
emitView
. Thay vào đó, hãy sử dụngAndroidView
nếu có thể để triển khai Khung hiển thị bên trong Compose. Lưu ý rằng việc soạn thảo Chế độ xem và Nhóm xem trực tiếp sẽ không được hỗ trợ trong tương lai trừ phi đây là những lá trong cây bố cục, trong trường hợp có thể đạt được điều này bằng cách sử dụng AndroidView. (I29b1e, b/163871221) - Ngừng sử dụng
FocusState2
và thay thế bằngFocusState
(Ia8b79, b/160822876, b/160923332) - Xoá phương thức nạp chồng AndroidView không dùng nữa. (I946b9, b/163802393)
- Giờ đây, bộ phát sóng có thể khai báo một hoặc nhiều phương thức setter có thể bỏ qua và kết hợp lại một cách độc lập. (Ibbd13)
Các lớp Vectơ đã thay đổi thành không còn là các lớp dữ liệu giống như phiên bản đối tượng sẽ được dùng để tạo cấu trúc.
Thêm cờ mutableStateOf cho VectorPainter để vẽ lại có điều kiện nếu nội dung của vectơ thay đổi.
Tái cấu trúc thực thể VectorComponent thành một phần của VectorPainter khi được sử dụng lại trong cấu trúc.
Đã cập nhật GroupComponent và PathComponent để các trường tên của chúng có thể thay đổi (Ieae45, b/151378808)
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)Offset đã trở thành lớp cùng dòng (Iaec70)
Thêm tham số đối tượng sửa đổi vào SelectionContainer (I4aada, b/161487952)
Xoá FocusModifier không dùng nữa (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Thêm lambda
mergePolicy
vàoSemanticsPropertyKey
. 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)Ràng buộc hiện là một loại nội tuyến (I88736)
Đã thêm FocusManager để di chuyển logic lấy tiêu điểm chung ra khỏi AndroidSoạnView (I528ef, b/161487952, b/162206799)
Đã cập nhật tên PointerEventPass để phát hành Alpha. (Ifda6f)
IntOffset hiện là loại nội tuyến (Iac0bf)
IntSize nay là lớp cùng 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)AlertDialog hiện sử dụng FlowRow cho các nút (I00ec1, b/161809319, b/143682374)
Không công khai một số tiện ích thử nghiệm vì những tiện ích này không phải là nơi chúng thuộc về. Sẽ được công khai trong tương lai. (I32ab1)
Sắp xếp lại cấu trúc của mã nhập con trỏ. (Ie3f45)
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)
Đã xoá KeyEvent2 không dùng nữa. Thay vào đó hãy sử dụng KeyEvent. (Ied2d0, b/162097587)
KeyEvent có một thuộc tính Unicode có thể dùng để nhận ký tự Unicode do tổ hợp khoá và trạng thái khoá meta chỉ định tạo (If3afc)
Sự kiện tuỳ chỉnh DelayUp và các lớp liên quan trở thành API chọn tham gia vì nó có thể sẽ nhiều thay đổi. (I56d6f)
Đã xoá 2 PointerEventPasses không còn cần thiết nữa. (I3dd9d)
Bạn có thể thêm màu tham số, đổ bóng và TextDecoration vào Paragraph.paint. Đây là hàm hữu ích để tránh tạo lại Đoạn không cần thiết. (I81689)
Sửa lỗi
- 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)
Xoá lệnh gọi FrameManager không dùng nữa.
Thay đổi Internal Compose API để giảm số lượng giá trị đầu vào nhằm theo dõi đối tượng trạng thái như
mutableStateof()
(I80ba6)VerticalScroller và HorizontalScroller đã bị xoá. Thay vào đó, hãy sử dụng ScrollableColumn/Row. Xoá Modifier.drawBackground. Sử dụng Modifier.background (I73b0d, b/163019183)
Khắc phục sự cố khi lưu nội dung nào đó vào trạng thái sử dụng bên trong vòng lặp. Hiện tại, bạn đã cho phép khoá tương tự trong savedInstanceState(), nên api của UiSavedStateRegistry hiện được điều chỉnh theo yêu cầu mới này (I4ab76 ,b/160042650, b/156853976, b/159026663, b/154920561)
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 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
androidx.compose.ui:ui-*:0.1.0-dev16
đã phát hành. Phiên bản 0.1.0-dev16 bao gồm các thay đổi sau.
Thay đổi về API
- 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)
- Ngừng sử dụng setViewContent. Nên dùng setContent để thay thế. (I7e497, b/160335130)
- Thêm API AndroidViewBinding để làm tăng cường và kết hợp tài nguyên bố cục, dựa trên ViewBinding. (I081c6)
- KeyEvent2 được thay thế bằng KeyEvent (I2d770, b/162097585)
- Đã thêm hỗ trợ khoá phần cứng Alt (I9036b)
- Ngừng sử dụng FocusManager. Sử dụng Modifier.focus(), Modifier.focusObserver() và Modifier.focusRequester() thay thế. (I74ae4, b/162211322)
- loadVectorResource hỗ trợ các thuộc tính trimPath (I808fe)
- Di chuyển hộp thoại đến giao diện người dùng (I47fa6)
- Đã xoá 2 PointerEventPasses không còn cần thiết nữa. (I33ca7)
- PointerInteropModifier đã triển khai cung cấp khả năng nhận MotionEvent và tương tác với ứng dụng Compose như thể bạn đang triển khai một Chế độ xem Android. (Ieb08c)
- Xoá đối tượng sửa đổi thẻ không còn dùng nữa. Thay vào đó, hãy sử dụng layoutId. (Idaa05, b/162023919)
- Các API dành cho 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)
- Hỗ trợ cắt bỏ đường dẫn trong đồ hoạ vectơ (Ie16c9, b/158188351)
- Thêm Modifier.layout() cho phép tạo đối tượng sửa đổi bố cục tuỳ chỉnh một cách thuận tiện (I73b69, b/161355194)
- Thêm API AndroidView mới và không dùng các API hiện có. (I5bcfd)
- Ngừng sử dụng Modifier.plus, thay vào đó, chuyển sang dù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) - Thêm các loại con [Abstract]ComposeView View để lưu trữ nội dung Compose trong hệ phân cấp Chế độ xem. (I46357)
Row
vàColumn
hiện là hàm cùng dòng đã giảm đáng kể tài nguyên sử dụng. (I75c10)- Đã thêm SubcomposeLayout. Đây là danh sách gốc cấp thấp cho phép kết hợp phần tử con trong quá trình đo lường nếu chúng ta chỉ muốn sử dụng một số giá trị có sẵn trong quá trình đo lường cho cấu trúc cây con. Ví dụ: WithConstraints không được triển khai bằng SubcomposeLayout. (I25cc8)
- Đã thêm
SemanticsNode.positionInRoot
để lấy vị trí của SemanticsNode so với gốc của hệ phân cấp Compose (Icdf26, b/161336532) - MotionEvents đã chuyển hoàn toàn từ Android, đến Compose và quay lại Android. (I14be8, b/158034713)
- Đã xoá dropdownPopup. (I00430)
- Sửa vị trí cửa sổ bật lên trên màn hình cut-out. (Idd7dd)
- Thêm hành động hỗ trợ tiếp cận để có được TextLayoutResult (I9d6e6)
- Thêm RemeasurementModifier cho phép người dùng đo lường lại bố cục một cách đồng bộ. Nói chung, bạn không bao giờ cần đến thuộc tính này để tự động đo lường/bố cục lại, nhưng chúng tôi sử dụng nó bên trong LazyColumnItems trong quá trình cuộn. (I5f331, b/160791058)
- Xoá getLineEllipsisOffset/getLineEllipsisCount. Thay vào đó hãy dùng getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Thêm một số Dấu/Chú giải để thực hiện một cách tốt nhất. (I66b20)
- hiển thị nhiều API dòng hơn trong TextLayoutResult. (I79bd2)
- Giờ đây, bạn có thể truy cập các trình chuyển đổi vectơ tích hợp để chuyển đổi các đơn vị tích hợp thông qua Foo.VectorConverter. Ví dụ: Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, v.v (I3e273)
Sửa lỗi
- Thông báo 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
- Cập nhật cấu hình tiêu thụ API BlendMode để liên kết đúng cách giữa chế độ BlendMode của Android và chế độ PorterDuff, tuỳ thuộc vào cấp độ API. Ra mắt API BlendMode#isSupported để hoạt động như một truy vấn khả năng nhằm xác định xem BlendMode có được hỗ trợ trên thiết bị hay không trước khi sử dụng. (I0ef42)
- Thêm LazyItemScope cho tham số itemContent của danh sách Lazy. Thành phần này cung cấp các đối tượng sửa đổi để lấp đầy kích thước tối đa của thành phần mẹ, giúp giải quyết trường hợp sử dụng khi mục cần lấp đầy khung nhìn và Modifier.fillMaxSize() thông thường không hoạt động khi mục được đo lường bằng các giới hạn vô hạn. (Ibd3b2, b/162248854)
- Đã xoá
SemanticsNodeInteraction.performPartialGesture
. Chuyển sang sử dụngSemanticsNodeInteraction.performGesture
. (Id9b62) LazyColumnItems
đã được đổi tên thànhLazyColumnFor
.LazyRowItems
đã được đổi tên thànhLazyRowFor
(I84f84)- Gói
foundation.shape.corner
đã được phân tách thànhfoundation.share
(I46491, b/161887429) - Đổi tên
AndroidComposeTestRule
thànhcreateAndroidComposeRule
. (I70aaf) - Thêm các API vào
TextLayoutResult
. (Id7e04) - Đổi tên
FilledTextField
Material thànhTextField
và đổi tênTextField
cơ bản thànhBaseTextField
để dễ dàng khám phá cũng như sử dụng API mong muốn đơn giản nhất (Ia6242, b/155482676) - Đổi tên Modifier.drawBackground thành Modifier.background (I13677)
Phiên bản 0.1.0-dev15
Ngày 22 tháng Bảy, 2020
androidx.compose.ui:ui-*:0.1.0-dev15
đã phát hành. 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 FocusModifier và thay bằng Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. Ngừng sử dụng FocusState và FocusDetailedState và thay bằng FocusState2 (I46919, b/160822875, b/160922136)
- Thêm đối tượng sửa đổi để quan sát sự thay đổi trạng thái của tâm điểm. (I05866, b/160924455, b/160923326)
- Thêm công cụ sửa đổi để yêu cầu thay đổi tiêu điểm (I8dd73, b/161182057, b/160924778)
- Điều chỉnh trình đơn Thanh công cụ để hiển thị thao tác sao chép, cắt, dán đúng cách. (Id3955)
- 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 là:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Thêm Modifier.focus thay cho FocusModifier. (Ib852a, b/160924778)
- Thêm FloatingToolbar cho Lựa chọn TextField. (Ie8b07)
- Thêm chú thích api thử nghiệm cho API liên quan đến đầu vào chính (I53c0a)
- Thêm chú giải API thử nghiệm cho tất cả các API liên quan đến Tâm điểm (I53b24, b/160903352)
- Thêm FocusState2 thay cho FocusDetailedState (I0a3ba, b/160822595)
- Thêm ExperimentalFocus, đây là chú giải @OptIn cho API tâm điểm. (I1544b, b/160820961)
- 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)
- Trình áp dụng hiện yêu cầu phương thức clear() để xử lý các cấu trúc (Ibe697)
- Ngừng sử dụng KeyEvent và thay thế bằng KeyEvent2 (I68730)
- Một cờ useUnmergedTree tuỳ chọn mới được thêm vào trình tìm kiếm thử nghiệm. (I2ce48)
- Tạo API thử nghiệm LayoutNode (I4f2e9)
Đã thêm các phương thức sao chép vào nhiều loại lớp nội tuyến bao gồm:
- Chênh lệch
- Kích thước
- Bán kính
- Chuyển động
TransformOrigin
Ngừng sử dụng phương thức đối tượng đi kèm Size.copy, thay thế bằng phương thức sao chép thực thể (Ife290, b/159905651)
Cửa sổ bật lên, Hộp thoại và Trình đơn nay kế thừa MaterialTheme theo ngữ cảnh (Ia3665, b/156527485)
TextDirection được đổi tên thành ResolvedTextDirection (I3ff38)
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ể sử 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)
Tái cấu trúc SelectionHandles để sử dụng lại. (I420e0)
Xoá tính năng có thể nhấp. Sử dụng Modifier.clickable (I84bdf)
Đã xoá TestTag và Semantics. Thay vào đó, hãy sử dụng Modifier.testTag và Modifier.semantics (I15ff0, b/158841414)
Trước khi có sự thay đổi này, trình bổ trợ biên dịch của Compose sẽ không chặn các lệnh gọi tới hàm khởi tạo trong hàm @Composable nếu có (I5205a, b/158123804)
Modifier.tag đã được đổi tên 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)
Thành phần kết hợp AndroidView đã được thêm một tham số đối tượng sửa đổi. (I48a88, b/158746303)
Ngừng sử dụng Semantics(). Dùng Modifier.semantics() để thay thế. (I72407, b/158841414)
Thêm thành phần kết hợp viewModel() cho phép tạo hoặc nhận ViewModel đã tạo tương tự như cách hoạt động trong chế độ Hoạt động hoặc Mảnh (I5fdd1)
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)
Để thống nhất số lượng lớp đại diện cho thông tin vị trí, hãy 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)
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 Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I97a5a)
Ngừng sử dụng TestTag. Thay vào đó, hãy sử dụng Modifier.testTag. (If5110, b/157173105)
Tuỳ chọn mặc định, không hoạt động, việc triển khai ParentDataModifier#ModifyParentData đã bị xoá. Điều này tương đương với việc không triển khai giao diện ngay từ đầu. (I0deaa)
scaleFit trước đây đã ngừng hoạt động do bị xoá. Thay vào đó hãy sử dụng Contentscale. (Ifbc5b)
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 (I19d02)
Thêm thành phần DropdownMenu trong ui-material – một cách triển khai menu Material Design. (I9bb3d)
Xoá LayoutTag() không dùng nữa, chuyển sang sử dụng Modifier.tag(). Xoá Modifier.matchParent() không dùng nữa, chuyển sang sử dụng Modifier.matchParentSize(). (If8044)
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 (I57bff)
Chúng tôi đã ngừng sử dụng Modifier.semantics để cho phép sử dụng các thành phần cấp cao. (I4cfdc)
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. Cập nhật Painter và PainterModifier để ngừng duy trì thuộc tính RTL vì DrawScope đã cung cấp thuộc tính này mà không cần cung cấp nó theo cách thủ công (I1798e)
DoubleTapGestureFilter giờ đây phân biệt với SingleTapGestureFilter trên cây. (If92b1)
Cập nhật Alignment API và thêm hỗ trợ cho tính năng căn chỉnh tuyệt đối (không phản chiếu tự động trong ngữ cảnh Rtl) (I38cd3)
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)
Thay đổi API hàm lambda theo sau WithConstraints. Giờ đây, thay vì 2 tham số, giao diện này có phạm vi trình thu 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)
Đổi tên LayoutModifier2 thành LayoutModifier. (Id29f3)
Xoá giao diện LayoutModifier không dùng nữa. (I2a9d6)
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)
Bạn có thể đo lường Layout và thành phần con của LayoutModifier theo một hướng bố cục khác. (Ibd731)
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ẹ. Đổi tên thuộc tính elevation (nâng độ cao) trên DrawLayerModifier 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)
Đã xoá onSizeChange và onPositionChange trong Chủ sở hữu. (I5c718)
Thêm Constraints2, một bản sao của những Giới hạn chỉ hỗ trợ giá trị giới hạn Int thay vì IntPx. IntPx sẽ bị xoá và tất cả các hạn chế là số nguyên sẽ được giả định là các pixel như Android.
- IntSize cũng đã được thêm, và sẽ dần thay thế IntPxSize. (I4b43a)
Tạo Alignment (Căn chỉnh) có thể tạo phiên bản với các giá trị tuỳ ý. Thêm Căn chỉnh 1D. (Ia0c05)
alignToSiblings hiện chấp nhận một giá trị Đã đo (Measured) thay vì Có thể đặt (Placeable). (I5788d)
-
- Đã đổi tên scaleFit thành Contentscale
- Đã chuyển ContentScale từ mô-đun ui-graphics sang mô-đun ui-core để hoạt động trong cùng một mô-đun với API Căn chỉnh.
- Đã đổi tên FillMaxDimension thành Crop
- Đã đổi tên FillMinDimension thành Fit
- Đã đổi tên Fit thành Inside để phù hợp hơn
- Hình ảnh tương đương ImageView.ScaleType
- Thêm tài liệu cho biết rằng việc kết hợp Crop và Alignment.Center đạt được kết quả tương tự như ImageView.ScaleType.CENTER_CROP và Fit dùng với Alignment.Center đạt được kết quả tương tự như ImageView.ScaleType.FIT_CENTER nside được sử dụng cùng với Alignment.Center đạt được kết quả tương tự như ImageView.ScaleType.CENTER_INSIDE
Hỗ trợ Rtl cho phím bổ trợ bản vẽ. (I0aaf9)
Phát hành API để tăng cường Chế độ xem Android từ XML. Hãy xem bản minh hoạ ViewInCompose để biết thêm thông tin. (I42916)
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ũ
- ContentContentScope có phương thức DrawContent() (Ibaced, b/152919067)
Thêm positionInParent và boundsInParent cho LayoutCoordinates. (Icacdd, b/152735784)
DrawLayerModifier và drawLayer() đặt mặc định clipToBounds và clipToOutline là false. (I0eb8b, b/152810850)
Đổ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êm các thuộc translationX/Y để hỗ trợ bù trừ danh sách hiển thị các lệnh vẽ cho một Lớp nhất định. Phương thức này rất hữu ích khi di chuyển nội dung để đáp ứng với ảnh động hoặc sự kiện nhấn. (I8641c)
Thêm tham số pivotX, pivotY vào API Lớp để hỗ trợ xoay vòng và chia tỷ lệ xung quanh một điểm cụ thể trên lớp (Icf7c3)
Thêm OnPositionedModifier và OnChildPositionedModifier để thay thế các hàm có khả năng kết hợp OnPositioned và OnChildPositioned. (I2ec8f)
Đã 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)
Làm cho hướng bố cục được truyền từ nút bố cục thành phần mẹ đến thành phần 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)
Hỗ trợ ban đầu cho Rtl trong bố cục Compose (Ia5519)
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)
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)
Cải tiến khu vực API của Giới hạn (Constraints) (I0fd15)
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ạ có bản minh hoạ đồ hoạ khai báo (Ifd86d)
Xoá API MaskFilter không sử dụng vì API này có mức sử dụng hạn chế và không được tối ưu hoá để tăng tốc phần cứng trong hầu hết các trường hợp sử dụng (I54f76)
RectangleShape được di chuyển từ androidx.ui.foundation.shape.* sang androidx.ui.graphics.* (Ia74d5, b/154507984)
Thay thế tất cả Color (Màu) có thể nhận giá trị rỗng trong API bằng các Color (Màu) không nhận giá trị rỗng và sử dụng Color.Unset thay cho giá trị rỗng (Iabaa7)
Ra mắt tham số hình chữ nhật tuỳ chọn bổ sung cho ImagePainter để hỗ trợ vẽ một phần phụ của ImageAsset cơ bản (I0ea9e)
Đã thêm màu chưa đặt để thể hiện giá trị chưa được đặt mà không có màu sắc hộp. (If901a)
Thêm các phương thức mở rộng Canvas.rotate và Canvas.scale để sử dụng toạ độ tổng hợp không bắt buộc cho các lượt biến đổi. Các tuỳ chọn mặc định này ở góc trên cùng bên trái của bản dịch canvas hiện tại.
Cũng đã di chuyển Canvas.rotateRad để trở thành phương thức mở rộng cho tính nhất quán (Ibaca6)
Tạo API PixelMap để hỗ trợ truy vấn thông tin pixel từ ImageAsset. (I69ad6)
Đổi tên toFrameworkRect/toFrameworkRectF thành toAndroidRect/toAndroidRectF để khớp với quy ước đặt tên của các đối tượng chuyển đổi giữa Compose và các API khung Android mà chúng được tạo ở trên cùng. Tài liệu cũng được cập nhật trên các API này (I86337)
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 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 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)
Thêm TextDirection.Content (I48f36)
Thêm toán tử TextDecoration.plus (I0ad1a)
Force
sẽ bị xoá khỏi các giá trị enum của TextDirectionAlgorithm (Icc944)TextDirectionAlgorithm được đổi tên thành TextDirection (I75ce8)
Triển khai LongPressAndDrag cho Lựa chọn TextField. (I17919)
Thêm AnnotatedString.getStringAnnotations trả về tất cả các chú giải trong dải ô. (I1fa00)
Đổi tên gói cho Locale và LocaleList từ androidx.ui.text thành androidx.ui.intl (I8132c)
Con trỏ của TextField có một ảnh động nhấp nháy (Id10a7)
Thay đổi API: AnnotatedString(builder: Builder được đổi tên thành annotatedString(builder: Builder). (Ia6377)
Thay đổi API: AnnotatedString.Ite được đổi tên thành AnnotatedString.Range. (I2d44d)
Đổi tên AnnotatedString.Builder.addAnnotationString thành addStringAnnotation. (I5059e)
Giờ đây, bạn có thể ẩn/hiện bàn phím phần mềm bằng SoftwareKeyboardController do lệnh gọi lại onTextInputStarted cung cấp (I8dc44, b/151860051)
Đã thêm toán tử cộng cho Kiểu (Văn bản/Đoạn/Span) uỷ quyền hàm merge(). (Ia1add)
Fontweight.lerp không chụp nhanh nữa. Đây vẫn là một loại dữ liệu. (I521c2)
Hàm dựng Fontweight hiện đã ở chế độ công khai chứ không còn là loại dữ liệu nữa. (Id6b1f)
Thêm getLineStart, getLineEnd, getEllipsisOffset và getEllipsisCount vào TextLayoutResult (Ibc801)
mô-đun ui-text được đổi tên thành ui-text-core (I57dec)
Đã xoá loại Kích thước không sử dụng vì có một loại Kích thước trùng lặp trong mô-đun hình học giao diện người dùng đang được sử dụng. (I1b602)
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)
Thêm khoảng đệm, đường viền, hình dạng và tham số nền vào Box (I05027, b/148147281)
Sửa lỗi
- Lệnh gọi lại onFocusChange trong các trường văn bản đã được đổi tên thành onFocusChanged (Ida4a1)
- 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)
runOnIdleCompose
đã được đổi tên thànhrunOnIdle
(I83607)- Đổ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)
- Giờ đây, bạn có thể soạn Giao diện người dùng Compose bên trong ViewGroups mà không cần yêu cầu bản soạn mới. Hãy xem ViewInteropdemo để biết ví dụ. (I9ab0b, b/160455080)
- Thêm sortWith và removeRange vào MutableVector (Icccf7)
- Triển khai Ô điều khiển lựa chọn kéo để thay đổi lựa chọn cho TextField. (I27032)
- 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)
Tái cấu trúc PainterModifier để ngừng cung cấp tỷ lệ dựa trên các giới hạn nhất định và tham số Contentscale. Cách triển khai của Painter là mở rộng chính nội dung bản vẽ của chúng dựa trên kích thước cụ thể của DrawScope mà chúng đang vẽ.
Sửa lỗi bitmap bộ nhớ đệm của VectorPainter có kích thước mặc định thay vì kích thước vẽ được đưa ra.
Cập nhật ImagePainter để mở rộng quy mô nội dung thay vì dựa vào PainterModifier để thay thế nội dung. (I6ba90)
Thêm hàm cấp cao nhất withFrameNanos cho thời gian ảnh động (Ie34c5)
Ngừng sử dụng chú giải @Untracked. Thay thế bằng @ComposableContract(tracked=false) (Id211e)
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)
Sửa lỗi trong đó việc nhập con trỏ sẽ gây ra sự cố nếu PointerInputFilters bị loại bỏ thông qua cấu trúc phụ trong quá trình loại bỏ. Vấn đề này hiện đã được khắc phục. (I1f48b, b/157998762)
Sửa lỗi trong đó việc nhập con trỏ sẽ gây ra sự cố nếu PointerInputFilters bị loại bỏ thông qua cấu trúc phụ trong quá trình loại bỏ. Vấn đề này hiện đã được khắc phục. (Iab398, b/157998762)
Tái cấu trúc lớp Bán kính 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ành phần kết hợp Recompose này không còn là một bản tóm tắt hữu ích nữa. Hầu hết quá trình kết hợp lại sẽ xảy ra do số lần gán MutableState. Đối với những dữ liệu khác, bạn nên dùng hàm
invalidate
để kích hoạt quá trình tái cấu trúc phạm vi hiện tại. (Ifc992)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 (Iede0b)
Thay đổi chiến lược tạo mã của trình biên dịch Compose. Trước khi có thay đổi, trình biên dịch Compose sẽ chuyển đổi lệnh gọi thành hàm có khả năng kết hợp. Với thay đổi này, giờ đây chúng tôi chuyển đổi phần nội dung của hàm có khả năng kết hợp và giữ lại trang web không có hiệu lực (chủ yếu).
Tức là hầu hết logic giao tiếp với môi trường thời gian chạy sẽ xảy ra ở phần đầu của nội dung hàm, thay vì ở vị trí gọi hàm.
Đây phải là một thay đổi tương thích với nguồn để sử dụng khi soạn. Hầu hết người dùng Compose không phải cập nhật bất cứ mã nào vì thay đổi này.
Để hỗ trợ công việc này, chữ ký JVM của mọi hàm có khả năng kết hợp đã thay đổi. Chuyển đổi hàm có khả năng kết hợp chấp nhận một tham số thành chấp nhận 3 tham số, các tham số bổ sung là Composer, số nguyên "key", số nguyên bitmask dùng để truyền siêu dữ liệu qua lệnh gọi.
Compose hiện cũng biến đổi các đối số mặc định thành hàm có khả năng kết hợp. Compose làm việc này mà không cung cấp thêm phương thức nạp chồng mặc định của hàm, nên thay đổi này sẽ làm giảm ít chức năng được xác định.
Những thay đổi cố ý về hành vi cố ý xuất phát từ điều này:
- Một số cuộc gọi sẽ bỏ qua dù trước đây không như vậy
- Đăng ký và xử lý chính xác biểu thức thành phần kết hợp trong biểu thức đối số mặc định
Công việc này bao gồm một số điểm tối ưu hoá: 1. Kết quả so sánh các tham số được truyền qua biểu đồ lệnh gọi đến các hàm có khả năng kết hợp khác. Điều này dẫn tới số lần so sánh trong thời gian chạy ít hơn, giảm kích thước bảng vị trí cũng như bỏ qua nhiều hàm có khả năng kết hợp hơn mà trước đây không bị bỏ qua 2. Tham số được xác định là "tĩnh" tại thời gian biên dịch không còn được so sánh hoặc lưu trữ trong thời gian chạy. Điều này làm giảm số lần so sánh và kích thước bảng vị trí. 3. Cấu trúc luồng kiểm soát trong phần nội dung của các hàm được dùng để giảm thiểu số nhóm được tạo. Việc này giúp giảm kích thước bảng vị trí và dẫn đến thời gian chạy ít hơn 4. Tham số gửi và nhận chưa dùng đến của các hàm không được đưa vào quy trình xác định khả năng có thể bỏ qua của hàm nếu chúng không được dùng trong nội dung của hàm.
Hầu hết các thay đổi có thể gây lỗi đều là đối với các API mà trình biên dịch nhắm mục tiêu trực tiếp, và quá trình sử dụng Compose thường sẽ không bị ảnh hưởng: 1. Xoá Composer::startExpr 2. Xoá Composer::endExpr 3. Ngừng sử dụng Composer::call 4. Xoá phương thức nạp chồng không phải varargs của
key
. Sử dụng phiên bảnvararg
trở đi. 5. Ngừng sử dụng chú giải Pivotal. Thay vào đó, hãy sử dụngkey
. 6. Thay đổi ScopeUpdateScope::updateScope thành Function3 thay vì Function1 7. Cập nhật restartableFunction và restartableFunctionN để bao gồm các tham số thời gian biên dịch bổ sung (I60756, b/143464846)Xoá các đối tượng sửa đổi LayoutAlign không dùng nữa. (I10877)
Đã xoá RepaintBoundary và thay vào đó là DrawLayerModifier (I00aa4)
Nút, FloatingActionButton và Clickable hiện có thông 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)Thay thế ButtonStyle bằng các chức năng riêng biệt và loại bỏ 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)
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)Thay đổi hoạt động của TextDirection mặc định để xác định bằng LayoutDirection, tức là nếu LayoutDirection là RTL thì TextDirection mặc định sẽ là RTL. Trước đây, TextDirection.ContentOrLtr/Rtl (I4e803)
Sửa lỗi: Khi lượng phông chữ và kiểu phông chữ được lồng trên một thẻ Chú thích, văn bản sẽ không hiển thị chính xác. (I77a9d)
Thêm các tham số thường dùng vào Text(). Nếu hiện đang tạo một kiểu văn bản cục bộ để chuyển một số ít tham số này, chẳng hạn như ext(style = TextStyle(textAlign = TextAlign.Center)) thì bạn chỉ cần cung cấp trực tiếp các tham số sau: Text(textAlign = TextAlign.Center) (I82768)
Giao diện người dùng ui-android-text được đổi tên thành ui-text-android (I68cbe)