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 29 tháng 6 năm 2022 | 1.1.1 | 1.2.0-rc03 | - | 1.3.0-alpha01 |
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 bộ ghi chú phát hành riêng.
Bảng này giải thích các nhóm và đường liên kết đến từng bộ 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 Compose Jetpack 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ó 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ữ Google Maven 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 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.3.0-alpha01" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.3.0-alpha01" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.3.0-alpha01") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.3.0-alpha01" } 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.
Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 1.3
Phiên bản 1.3.0-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.
Thay đổi API
LookaheadLayout
mới hỗ trợ thẻ xem trước khi đo/bố cục 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 đo/bố cục sau khi xem lại sử dụng kích thước/vị trí đã tính toán trước để tạo kích thước và các 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 thông số alpha (không bắt buộc) vào hương 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
- Khi thêm sự kiện
InputEventChange
vào Đo Tốc Độ, 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 (If9ef3, b/216582726, b/223440806, b/227709803) TextLayoutResult.getLineForOffset
không gửi. (Idc5d6, b/235876324)
Đóng góp bên ngoài
- Đã thêm API mới
WindowInfo.keyboardModifiers
để quan sát trạng thái của API này trong các hàm tổng hợp hoặc thông qua SnapchatFlow (Icdb8a)
Phiên bản 1.2
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.
Thay đổi API
- Các giao diện trong thư viện soạn thư 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) - Chúng tôi đã cho ra mắt
OverscrollEffect
thử nghiệm để cho phép các hiệu ứng cuộn quá mức tùy chỉnh cùng với các quá tảiModifier.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 API
- Đã thêm
pressKeyTimes
cũng nhưisCapsLockOn
và bạn bè vàoKeyInjectionScope
. Ngoài ra, API này hiện hỗ trợ các kiể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 tùy chọn hỗ trợ thử nghiệm để chèn các sự kiện chính. Sử 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
giờ đây sẽ được áp dụng cho các thành phần có thể tổng hợp ngay sau khi bật/tắt chế độ này trong ô 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) - Nhấn phím xóa 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 API
- Chức năng sử dụng lại trong các loại 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 API
- Thêm thử nghiệm
BeyondBoundsInterval
có thể sử dụng được bằng cách triển khai tùy 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 hóa API
rememberNestedScrollConnection
để sử dụng cấu trúc cục bộ nhằm thu nạp thông tin chế độ xem hiện tại (I67ca7) - Hiện tại, bạn có thể dùng chú thích
@ComposableTarget
và chú thích được đánh dấu bởi@ComposableTargetMarker
trong phạm vi tệp bằng cách sử dụng tiền tố@file
. Việc sử dụng chú thích 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 ứng 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) Giới thiệu API thử nghiệm mới, độc lập với nền tảng:
interface ComposeUiTest
vàfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
. Bạn có thể sử dụng API này để chạy thử nghiệm giao diện người dùng trong Compose mà không cầnTestRule
. Để chạy thử nghiệm mà không cầnComposeTestRule
, hãy truyền thử nghiệm dưới dạng hàm lambda chorunComposeUiTest
, đồng thời sử dụng các phương thức và thành viên trong phạm vi trình thu nhậnComposeUiTest
, giống như trongComposeContentTestRule
.interface AndroidComposeUiTest
vàfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
dành riêng cho Android được thêm để cung cấp quyền truy cập vào Hoạt động cơ bản, tương tự nhưAndroidComposeTestRule
. Để kiểm soát nhiều hơn, bạn có thể tự tạoclass 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 thử nghiệm 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
Các giá trị hàm khởi tạo mặc định từ
LineHeightStyle
được gỡ bỏ (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 hai giá trị boolean:FirstLineTop
,LastLineBottom
, Cả hai và 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 đang đả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 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ế hóa 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 chuyển
Constraints.maxHeight
là 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ư 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 dựng. (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à cha mẹ soạn có thể nhận các delta cuộn từ chế độ xem cuộn lồng nhau. (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 Tư, 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 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. Bạn có thể thấy hữu ích đối với các trường hợp 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ó thể đọc giá trị này mà không cần quá trình ghi lại 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 tùy chọn sử dụng AndroidWindowInsets
. Việc này cho phép sử dụngComposeViews
riêng biệt trong hệ thống 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
để cụ thể bao gồm 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 tính năng tương tác cuộn giữa Nest giữa Chế độ xem và Soạn thư để hợp tác cùng các lớp Chế độ xem. Điều này nghĩa là giờ đây, bạn có thể gửi delta cuộn qua chế độ xem mẹ (đang hợp tác) trong Chế độ xem. (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) Font(AssetManager, String, ...)
không còn được dùng nữa 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)
để tùy ý 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/StyleStyle. Bạn có thể thay đổiincludeFontPadding
quaTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Đây là tùy chọn cấu hình tạm thời để bật tính năng di chuyển và sẽ bị xóa. (If47be, b/171394808) - Thêm tiện ích
GoogleFont.Provider.isAvailableOnDevice
để được trợ giúp gỡ lỗi. (I64e31) - Thêm hàm dựng
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 xơ vải 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 Ba, 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 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 tài nguyên có thể vẽ vectơ để 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 bóng/môi trường xung quanh là các tham số
Modifier.graphicsLayer
của 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 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 vào 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()
.FocusOrder
vàfocusOrder()
đã ngừng hoạt động. NhữngfocusOrder()
chấp nhận mộtfocusRequester
sẽ được thay thế bằng một hệ số sửa đổifocusRequester()
kết hợp vớifocusProperties()
. Điều này cho phép công cụ sửa đổi có sự phân tách 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 hỗ trợ cho chú thích lớp chú thích với @Preview làm bước đầu tiên để thêm tính năng Xem trước. Các chú thích như vậy có thể được dùng để chú thích các phương thức Có thể so sánh hoặc các lớp chú thích khác, sau đó có thể được coi là được chú thích gián tiếp bằng @Preview. (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 đồ họa EIDR để sử dụng chú thích kết hợp thích hợp @PNGComposable thay vì @UiComposable (I942bc)
- Xóa 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 chứa các thao tác lưu trữ thay đổi này.
Thay đổi 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! Tính năng soạn ảnh động hiện đã hỗ trợ cài đặt "Tỷ lệ thời lượng của trình tạo ảnh động" từ Tùy chọn cho nhà phát triển. (I5a4fc, b/161675988)
- Đã thêm giá trị phím bổ trợ 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
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 Kotlinx coroutines 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 API
Đã thêm
ComposableTarget
,ComposableTargetMarker
vàComposableOpenTarget
cho phép biên dịch báo cáo thời gian về khi một hàm có khả năng kết hợp được gọi là nhắm mục tiêu một ứng dụng khác mà tính năng này không được thiết kế để sử dụng.Trong hầu hết các trường hợp, trình biên dịch bổ trợ của Compose có thể dự đoán các chú thích. Do đó, hiếm khi sử dụng trực tiếp các chú thích này. Các trường hợp không thể dự đoán được bao gồm việc tạo và sử dụng các hàm có khả năng kết hợp, trừu tượng, á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ủa thành phần kết hợp (biến và thông số cục bộ được dự đ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 ứng dụng tuỳ chỉnh, các hàm có khả năng kết hợp có thể gọi
ComposeNode
hoặcReusableComposeNode
cần thêm chú thíchComposableTarget
cho hàm đó và mọi loại thông số lambda của thành phần kết hợp. Tuy nhiên, bạn nên tạo chú thích được chú thích vớiComposableTargetMarker
, sau đó sử dụng chú thích được đánh dấu trực tiếp thay choComposableTarget
. Một chú thích của thành phần kết hợp được đánh dấu bằngComposableTargetMarker
tương đương vớiComposbleTarget
có tên đủ điều kiện của loại thuộc tính là thông số ứng dụng. Để xem 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
tùy chỉnh thànhFontFamily.Resolver
. (Ia0060)
Sửa lỗi
- Miễn là
FontFamily.Resolver
được truyền đến các phần phụ như Cửa sổ bật lên. - Miễn là
Font.ResourceLoader
được truyền đến các 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 API
- Phương thức
notifyFocusedRect
trongTextInputSession
vàTextInputService
hiện không được dùng nữa và sẽ không được gọi nữa. Thay vào đó, hãy sử dụngBringIntoViewRequester
? (Ia4302, b/192043120, b/216842427, b/178211874) - Đã áp dụng 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 biên soạn 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 thành phần, 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 thành phần 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ó cuộc gọi mới nào được thêm, trạng thái sẽ bị xoá vĩnh viễn và hãy nhớ rằng những người quan sát sẽ được thông báo.Nếu hệ thống gọi
movableContentOf
lambda trong nhiều lần trong cùng một thành phần, 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 thành phần và các lệnh gọi mới nhập vào, trạng thái đó sẽ bị di chuyển từ lần đầu tiên thoát cuộc gọi đến cuộc gọi nhập 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 sử dụng nữa. (Id5a45, b/174162090)Hỗ trợ tải phông chữ không đồng bộ và tùy chọn với hành vi dự phòng. Đường dẫn này được Văn bản và 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 toàn cầu 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 lập trình hướng đối tượng Font hiện tại cung cấp.API
Font.ResourceLoaded
mở rộng để 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 không hợp thành.Thêm thông 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)Hàm khởi tạo
Typeface(FontFamily)
đã ngừng hoạt động. 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
.fontResource(FontFamily): Typeface
không đã ngừng hoạt động. 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)Hàm dựng
SubcomposeLayoutState
chấp nhậnmaxSlotsToRetainForReuse
hiện đã ngừng hoạt động. 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 để sử dụng lại trong tương lai. (I52c4d)Hiển thị hàm HSV và HSL trong
Color
dưới hình thức 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)
Đã gỡ bỏ
FontLoadingStrategy.values
(I42a9d, b/174162090)Trình tải phông chữ toàn cầu 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ả lạiState<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
là tiêu điểm và bàn phím được hiển thị khi chế độ nhập mềm là
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Máy tính sử dụng CompositionLocal cho
FontFamily.Resolver
FontLoader
dành cho Máy tính đã ngừng hoạt động- 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 tiêu đ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 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 API
- Không dùng
FontFamily.canLoadSynchronously
nữa. Thuộc tính này không có ý nghĩa ngữ nghĩa. (Ica5ef) - Đã thêm trường tự tăng vào
CompositionData
để tạo mã bất biến 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
- Giờ 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 Material cho kích thước đích nhấn. Ví dụ: đích nhấn Nút sẽ mở rộng tới kích thước tối thiểu 48x48dp, ngay cả khi bạn đặt kích thước nhỏ hơn cho Nút. Điều này giúp căn chỉnh Compose Material phù hợp với hành vi của Thành phần Material Design, tạo ra hành vi nhất quán khi kết hợp Chế độ xem và Compose. 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 nhấn 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
- Đã khắc phục lỗi gây ra sự cố thiếu thao tác cuộn hỗ trợ tiếp cận (I7cbfb)
SemanticsNodeInteraction.captureToImage()
giờ cũng sẽ hoạt động nếuHardwareRenderer.isDrawingEnabled()
làfalse
, bằng cách bật giá trị này trong suốt cuộc 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 API
- Đã xóa sạch giá trị rỗng trong
androidx.core.view
(I7078a, b/204917439) - Các API thử nghiệm đã được thêm vào cho phép người dùng sử dụng toàn bộ PointerInputchange hoặc kiểm tra xem API đã thay đổi hay chưa. (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
Modifier.composed
thử nghiệm nạp chồng phương thức mà chấp nhận các khóa để so sánh tính cân bằng và đủ điều kiện để bỏ qua quá trình tối ưu hóa. (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 đề bắt mà đang bắtException
hiện có thể bắt đượcComposeNotIdleException
, đây là điều mà trước đây chúng ta 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 API
- Thêm phương thức sửa đổi mới Modifier.onPlaced cho phép theo dõi việc thay đổi vị trí. Do đó, bạn có thể thực hiện thêm một số thay đổi đối với mức chênh lệch của phương thức sửa đổi con dựa trên thay đổi về vị trí có thể quan sát được. (I558fd)
- Đã xóa
InjectionScope.flush()
vàInjectionScope.dispose()
. Tất cả sự kiện và phạm vi hiện đang bị xoá và loại bỏ ở cuối phương thức .có tên là perform*Input() như trước đây. (I2bed8) - Đã xóa
MultiModalInjectionScope.Touch
vàMultiModalInjectionScope.Mouse
. Để chèn sự kiện nhấn và chuột cho các cử chỉ đa phương thức, giờ đây bạn có thể sử dụngMultiModalInjectionScope.touch()
vàMultiModalInjectionScope.mouse()
, cả hai đều chấp nhận lambda có bộ thu phạm vi 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 để không 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 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 chế độ xem (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 ảnh độ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 chứa các thao tác lưu trữ thay đổi này.
Thay đổi 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 chế độ xem (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 ảnh độ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 API
- Xóa
ExperimentalComposeUiApi
khỏiViewRootForInspector
vàLayoutInfo.ownerViewId
(I5c2e3) - Bổ sung tính năng quá tải không có thành phần con cho Bố cục có cải thiện hiệu quả (Ib0d9a)
- Đã xóa bỏ
InternalCompilerApi
khỏi các Phương thức soạn 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 tiêu 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 điều chỉnh nội dung chèn khi kiểm thử theo thời gian chờ nhấn và giữ hoặc độ trễ khi nhấn. - Đã thay đổi thời lượng mặc định của thao tác nhấn và giữ và nhấn đúp cho cả phương thức nhập bằng cách nhấn và 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 PopProperty, thay thế dismissOnClickOutside không dùng nữa. Thuộc tính mới nhận được vị trí nhấp chuột và giới hạn liên kết, cho phép bạn kiểm soát tốt hơn việc có nên gọi on dismissRequest hay không. Ví dụ: chức năng này có thể hữu ích nhằm tránh loại bỏ quảng cáo cố định cho các lần nhấn vào quảng cáo cố định.
- updateAndroidWindowManagerFlags đã được thêm 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. Thông số của lambda sẽ là những lá cờ được tính toán từ giá trị PopupProperties dẫn đến cờ của trình WindowManager: ví dụ: có thể lấy tiêu điểm. 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)
Recomposer.state
không được dùng nữa và được thay thế bằngRecomposer.currentState
để thay đổ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 xóa tất cả 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)
cuộn đến một vùng chứa có thể cuộn 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 chứa các thao tác lưu trữ thay đổi.
Thay đổi API
- Đã thêm hỗ trợ cho giao tiếp giữa các chỉ định (Id5467, b/198826874)
- Đã thêm con trỏ lịch sử thử nghiệm vào PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
- Đã thêm
density: Density
vàlayoutDirection: LayoutDirection
vàoLayoutInfo
. Thao tác này cho phép người tiêu dùng ởLayoutInfo
diễn giải kích thước và vị trí hiển thị trongLayoutInfo
đúng cách. (I002f1) - Đã thêm tùy chọn hỗ trợ thử nghiệm để chèn các sự kiện chuột. Hãy 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
- Đã cố định hỗ trợ tiếp cận cho nội dung có thể cuộn (cả nội dung tải lười và không lười) 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 API
PointerEvent
hiện đã cóPointerEventType
để hỗ trợ các sự kiện di chuột. (I091fa)- Cho phép 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. Cha mẹ có thể chặn các lệnh gọi đó bằng một thuộc tính PointerInputScope.alwaysInterceptChildEvent (I9eae3, b/192479655)
performGesture
vàGestureScope
không còn dùng nữa. Hai mã lệnh này đã được thay thế bằngperformTouchInput
vàTouchInjectionScope
. (Ia5f3f, b/190493367)- Đã thêm
touchBoundsInRoot
vàoSemanticsNode
có kích thước đích nhấn tối thiểu để nhà phát triển có thể đảm bảo rằng đích nhấn đáp ứng các tiêu chí tối thiểu về khả năng 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)
Đã áp dụng
performTouchInput
vàTouchInjectionScope
làm vị trí 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 nhấn bên ngoài khu vực của đoạn video để có mục đích nhấn tối thiểu. (I43e10, b/171509422)
- Chúng tôi đã thêm tính năng hỗ trợ nhiều thao tác 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 API
- Đã thêm
Modifier.inspectable
để bao gồm các chỉ định 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 hỗ trợ cho RenderEffect trong ứng dụng Compose dành cho máy tính. Đã giới thiệu hiệu ứng OffsetEffect cũng như công cụ 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ệ thống phân cấp bố cục. (I0f6aa, b/166927547)
- Đã giới thiệu API RenderEffect
có thể được định cấu hình tùy chọn trên
Modifier.graphicsLayer
để thay đổi nội dung của chính lớp đó. Bạn có thể sử dụng tính năng này để 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ệ thống phân cấp bố cụ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 nhấn tối thiểu vào ViewConfiguration để sử dụng ngữ nghĩa và phương thức nhập con trỏ nhằm đả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 tra để nhận giới hạn được cắt đoạn. (I6b28e)
Sửa lỗi
- Đã xóa phương thức isBounded khỏi phần BlurredEdgeTreatment theo hướng kiểm tra rõ ràng liệu thông 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 chứa các thao tác lưu trữ thay đổi này.
Thay đổi 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 đồ họa 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 chứa những cam kết này.
Thay đổi API
RelocationRequester.bringIntoView
hiện chấp nhận hình chữ nhật dưới dạng thông 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 chế độ xem (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 công cụ 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ẽ tùy ý 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 thông số FilterQuality tùy 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 Công cụ sửa đổi, tuy nhiên, bằng cách 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 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 ứng dụng vẽ được cung cấp, chúng ta có tính nhất quán hành vi tốt hơn trong hành vi với mẫu của công cụ 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 hành động ngữ nghĩa cho danh sách lười 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 phiên bản 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 minSdkVersion lên 24+ 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 chứa các thao tác lưu trữ thay đổi này.
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 chứa các thao tác lưu trữ thay đổi này.
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 API
- Đã xóa
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ợ thông số contentDescription dành cho tính năng hỗ trợ tiếp cận. (Ib547c)
useDefaultMaxWidth
tạiPopupProperties
đã được đổi tên 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 tùy 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()
mà 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
mà 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ị xóa 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 API
- Thay đổi vai trò enum 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 tư 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 đối với 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>
có một hoặc nhiều ký tựH
,S
vàP
để cho biết phương thức này có nên được gắn cờ là "Hot", "Startup" hoặc "Post Startup" 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 đơn lẻ bao gồm nhiều phương thức hoặc lớp.
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 rằng đây là phương thức được gọi khi khởi động và phải được biên dịch trước để 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 rằng đâ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 mềm AAR. Khi một ứng dụng được tạo bao gồm các cấu 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. ART sau đó 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 API
- Enum
NestedScrollSource
được thay thế 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 các lớp cùng dòng để tránh các vấn đề mang tính toàn diện khi tuyên bố khi thêm vào các giá trị enum mới. (I2b5eb)
- Xóa
@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à 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 thử nghiệm tốt hơn để tận dụng những thay đổi này (Ica6bf, b/184825850)
Modifier.focusModifier()
không được dùng nữa và được 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)- Enum
KeyboardType
được thay thế 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
- Khắc phục lỗi được giới thiệu trong phiên bản beta07 trong đó các mục LazyColumn/Row được 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 xong lỗi khiến lớp mẹ không thể tái đo lường khi các dòng căn chỉnh của lớp con đang thay đổi (I4401f, b/174315652)
Modifier.onGloballyPositioned()
đã được thay đổi để báo cáo các toạ độ của công cụ sửa đổi này trong chuỗi phương thức sửa đổi, chứ không phải là toạ độ bố cục sau khi áp dụng tất cả các công cụ 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 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)- Enum KeyEventType được thay thế bằng một lớp cùng dòng. (Id670a, b/187055290)
- Enum
FocusDirection
được thay thế bằng một lớp cùng dòng. (Ib6d03, b/187055290, b/184086802) - Giới thiệu khả năng lưu trữ trạng thái SubcomposeLayout cho phép bạn kết hợp sẵn nội dung vào một slotId bắt buộc, điều này sẽ làm cho phép đo tiếp theo truyền nhanh hơn vì khi cố kết hợp phụ với slotId đã cho vào lần tiếp theo thì sẽ không cần bố cục nữa. (I42580, b/184940225)
- Đã thêm Ô điều khiển Lựa chọn Cắt bỏ (Iff80d, b/183408447)
- Xóa API không sử dụng liên quan đến hỗ trợ LayoutInspector. (I2ac78)
Sửa lỗi
- Giờ đây, LazyColumn/Row sẽ giữ tới 2 mục hiển thị trước đây đang hoạt động (chưa được xử lý), ngay cả khi đã bỏ tính năng cuộn của chúng. Điều này cho phép thành phần đó sử dụng lại các bố cụ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 API
- Giải quyết Xung đột bằng Cử chỉ di chuyển (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 nạp chồng phương thức Font() để tải phông chữ từ các thành phần, 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 nạp chồng phương thức
Font()
để tải phông chữ từ các thành phần, 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)
(I7esuccess, 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 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) - Giao diện
InputEventCallback
đã ngừng hoạt động. 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) - Hàm
TextLayoutResult/createTextLayoutResult
đã ngừng sử dụng. Đâ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. Hàm này hiện không được dùng nữa và sau này sẽ được gỡ bở. (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 trong ui-test-manifest và ui-tooling-data giờ 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 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 thử nghiệm) (I579a6)
- Đã thêm API hỗ trợ tiếp cận LiveRegion. Nếu nút được đánh dấu là khu vực trực tiếp, các dịch vụ hỗ trợ tiếp cận sẽ tự động thông báo cho người dùng về các thay đổi của nút (Idcf6f, b/172590946)
- Đã 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 thực hiện thao tác 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ệ thống phân cấp 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 hiển thị một cách nhất quán các mảnh được tăng cường thông quaFragmentContainerView
sau khi cấu hình thay đổi. (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 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
tùy 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 chứa các thao tác lưu trữ thay đổi này.
Thay đổi 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 cho
rememberSaveable { mutableStateOf(0) }
bị hỏng khi được sử dụng bên trong một đích đến của thành phần di chuyển trong 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 API
- Thêm lệnh gọi lại onStart vào
detectDragGestures
(I67269, b/179995594) - Các công cụ sửa đổi kích thước cho hàm nội tại không còn được 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ì chuyển
interactionState = remember { InteractionState() }
vào các thành phần nhưButton
vàModifier.clickable()
, hãy sử dụnginteractionSource = remember { MutableInteractionSource() }
. - Bạn nên sử dụng các hàm mở rộng trên InteractionSource thay vì
Interaction.Pressed in interactionState
, 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 đã ngừng sử dụng, 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 công cụ sửa đổi selectionGroup cho phép đánh dấu bộ sưu tập Tab hoặc RadioButton cho các mục đích hỗ trợ tiếp cận (Ie5c29)
Bạn hiện bắt buộc phải cung cấp
defaultFactory
chocompositionLocalOf
vàstaticCompositionLocalOf
thay vì không bắt buộc.Thay đổi này sẽ xoá lỗi loại có thể xảy ra đối với các loại không thể rỗng nếu bạn chưa cung cấp trạng thái ban đầu mặc định. 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, hãy cân nhắc cung cấp
{ null }
làm giá trị mặc định.Chúng tôi khuyên bạn không nên sử dụng các bộ lọc có loại không thể rỗng trừ khi 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ệ thống
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 tiêu dùng tại địa phương sẽ có phần phụ thuộc ngầm định cung cấp mà hệ thống loại này không 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. VelocirtTracker được chuyển từ ui.gesture sang to 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ị xóa. (I89130)AnimationWatchObable và lớp con đã bị xóa. Xoá AnimatedFloat. (Icde52, b/177457083)
Nhà cung cấp đã được đổi tên thành CompositionLocalProvider
- Hàm tạo Bản sáng tác không còn chấp nhận một thông số chính và đã ngừng hoạt động.
- currentCompositeKeyHash đã được chuyển thành 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.
- ComposableLambdaN đã được đặt thành giao diện thay vì loại cụ thể, và không còn có thông số loại nữa.
- Hàm snapshotFlow đã được di chuyển sang không gian tên androidx.compose.runtime
- phương pháp hợp nhất của SnapshotMutationPolicy không còn là thử nghiệm nữa
- Hàm @TestOnly clearRoots cấp cao nhất đã bị xoá. Dữ liệu này không còn cần thiết nữa.
- Các hàm keySourceInfoOf và resetSourceInfo đã bị xoá. Các dữ liệu này không còn cần thiết nữa.
- Composer.collectKeySourceInformation đã bị xoá. Dữ liệu này không còn cần thiết nữa.
- Các phương thức isJoinedKey, joinedKeyLeft và joinedKeyRight đã bị xoá. Các dữ liệu này không còn cần thiết nữa.
- Nhiều API cấp cao nhất đã được di chuyển và sắp xếp lại thành các tệp khác nhau. Do ngữ nghĩa lớp tệp 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)
Đã xóa
ComponentActivity.setContent()
khỏi Compose:ui. Thay vào đó hãy sử dụng từandroidx.activity:activity-compose:1.3.0-alpha01
. Đã xóaviewModel()
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)Modifier.scrollable đã được làm lại. 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)
Đã xóa tùy chọn hỗ trợ Customevens của PointerInputModifier (I02707, b/175294473)
SnapshotStateObserver không còn là Thử nghiệm nữa (Id2e6a)
Đã xóa 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 (I2feedf, b/175294473)
Đã xóa việc sử dụng API String.format hệ số tái cấu trúc cho nhiều phương thức toString để tránh tận dụng String.format nội bộ. (Id1290)
Đã xoá xác nhận dp (I798d2)
Đã xóa androidx.Comose.runtime:runtime-dispatch (I55feb)
Bây giờ, hành động 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 hành động cho tất cả các lệnh gọi lại ImeAction (I63447, b/179226323)
Đã xóa lệnh gọi lại SoftwareSoftwareController khỏi tất cả các trường văn bản để được thay thế bằng một API mới sớm. (Iae869, b/168778053)
Fontspan và FontWeigthStyleSpan không còn được sử dụng và đã bị xóa. (Ie5b56, b/177423444)
Thực hiện các thay đổi sau với API Material:
- Đã thêm thông số contentPadding vào Top/BottomAppBar để cho phép tuỳ chỉnh khoảng đệm mặc định.
- Các thông số được sắp xếp lại trong BackdropScaffold để tuân thủ các nguyên tắc của API đối với những thông số bắt buộc đứng trước thông số không bắt buộc.
- Đã di chuyển thông số
icon
trong BottomNavigationItem sang 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()
. Xin lưu ý rằng vì loại thông số này không thay đổi, nên mã này sẽ không gây ra lỗi. Hãy đảm bảo bạn đang sử dụng các thông 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 như trước. - Thêm thông số
secondaryVariant
vàodarkColors()
. Màu này thường giống với màusecondary
trong giao diện tối, nhưng việc thông số để màu thêm tính nhất quán và tuỳ chỉnh thêm. - Đã xoá HeightDefaults 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 thành rỗng. - Đã đổi tên thông số
text
trongSnackbar
thànhcontent
để đảm bảo tính nhất quán. - Đã thêm thông 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 AnimationCampaignvables 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 thành phần cục bộ mới 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 Hai, 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
đã phát hành. Phiên bản 1.0.0-alpha12 chứa những cam kết này.
Thay đổi API
- Tính năng hỗ trợ cho ViewGroups đã bị xoá khỏi UiAppier. Các thành phần kết hợp emitView không được dùng nữa đã bị xoá. (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/chỉnh nét ngoà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)
- Để đối sánh tốt hơn các quy ước đặt tên với ImageBitmap và ImageVector, ImagePainter đã được đổi tên thành BitmapPainter sang 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 đơn đặt hàng tiêu điểm tùy 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à đơn đặt hàng tiêu điểm tùy chỉnh cho tệp sáng tạo (I4f52a, b/179180978) - componentActivity.setContent đã chuyển sang androidx.activity.Comose.setContent trong mô-đun androidx.activity:activity- compose. (Icf416)
- Phương thức giải cấu trúc và copy() đã được xoá khỏi một số lớp nơi chúng ít khi được sử dụng. (I26702, b/178659281)
- Đã di chuyển cửa sổ bật lên trên nền tảng cụ thể. 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)
- Làm LayoutNode nội bộ (I8a7b1, b/175103944)
- Constraints.enforce đã được thay thế bằng Constraints.constrain. (I8b8ea)
- loadfontResource đã ngừng hoạt động. Thay vào đó hãy sử dụng fontResource. imageResource, loadImageResource, vectorResource và loadVectorResource không còn được dùng nữa. 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ề các Độ chính xác đơn thay vì giá trị Độ chính xác đơn trực tiếp. (If4a35, b/178657186)
- Việc 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ợ tiếp cận và các phương pháp kiểm tra 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)
- Ảnh chụp nhanh API được cập nhật để 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)
- Modifier.dragGestureFilter đã không còn được dùng nữa. 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 thành phần CompositionLocal. Ambients trước đây được đặt 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ị xóa. 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)
- Các tiện ích
emptyContent()
và(@Composable () -> Unit).orEmpty()
không còn được dùng nữa 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 thử nghiệm (I6a45f)- Bạn hiện có thể đóng các bộ cấu phần lại. Các thành phần kết hợp lại đã đóng sẽ tiếp tục kết hợp lại cho đến khi hoàn tất quá trình kết hợp lại các coroutine con Recomposer.shutDown được đổi tên để huỷ chế độ tương phản với chế độ đóng. (Ib6d76)
- UiSavedStateRegistry được đổi tên thành SaveableStateRegistry, AmbientUiSavedStateRegistry được đổi tên thành AmbientSaveableStateRegistry và cả hai đều chuyển sang gói androidx.comose.runtime.saveable. (I30224)
- ArteFact androidx:Comose:runtime:runtime-saved-instance-state đã được đổi tên thành androidx:comose:runtime:runtime-saveable (I6dcac)
- Nhiều API không còn được dùng từ lâu trong gói giao diện người dùng sẽ bị xoá. (I2f2dc)
- Cấu phần compose:runtime-dispatch hiện không được dùng nữa. 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)
- Đã xóa
view.captureToImage()
mà không thay thế. (I7fcd2) - Giới thiệu 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 thông số layoutDirection để tạo Outline 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)
- onImeActionPerformed đã không còn được dùng. thay vào đó, hãy sử dụng KeyboardActions (If0bbd, b/179071523)
- Giới thiệu 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) - canDrag đã bị xoá 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 phím bổ trợ của LayoutsCoordintes. Đ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)
- tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter và pressIndicaitonGestureFilter đã không còn được dùng nữa. Thay vào đó, hãy sử dụng Modifier.clickable hoặc Modifier.pointerInput với hàm detectTapGestures. (I6baf9, b/175294473)
- Đã xóa 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 để hủy đă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)
- Đã xóa CoreText và CoreTextField khỏi API công khai
- Đã xóa phần bổ sung SelectionContainer đã ngừng hoạt động
- (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/xóa trực tiếp vào nhóm WindowManager hiện đã ổn định hơn. (Ie81ed, b/175765614)
- Đã xóa Recomposer.current(). [Abstract]ComposeView hiện được đặt mặc định là các Trình tạo lại theo từng cửa sổ ở phạm vi cửa sổ do ViewTreeLifecycleOwner cho cửa sổ tạo ra). Quá trình soạn lại và bằng khung đánh dấu hoạt ảnh dựa trên frameNanos sẽ bị tạm dừng trong khi máy chủ Lifecycle ngừng hoạt động. (I38e11)
- Recomposer.runningRecomposers hiện cung cấp StateFlow toàn cầu của RecomposerInfo chỉ đọc để quan sát trạng thái thành phần đang diễn ra trong quá trình này. Ưu tiên API này hơn Recomposer.current(), hiện không được 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)
- Đã xóa 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)
- Các thông số trên RounderCornerShape, CutCornerShape và CornerBasedShape đã được đổi tên từ trái/phải để 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 thông 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)
Xóa hàm StringBuilder.deleteAt không công khai (Id6ed9)
Sửa lỗi
- ComposeViews được đặt trong hệ phân cấp chế độ xem là con của một bản soạn khác hiện lưu trữ các bản soạn con của đối tượng cấp trên (I92883)
- Cập nhật API imageFromResource của soạn thư để 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 Một, 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 API
- WithConstraints đã được thiết kế lại dưới dạng BoxWithIdentifiers và được chuyển sang Foundation.layout. (I9420b, b/173387208)
- Key.DPadUp đã ngừng hoạt động. Hãy sử dụng Key.DirectionUp thay thế. (Iab335, b/177954892)
- Từ giờ giao diện chủ sở hữu sẽ hiển thị trong nội bộ. (If8e35)
- Đã thêm API FocusManager.MoveMove() để di chuyển tiêu điểm theo phương thức lập trình. (I045cb, b/177681839)
- Thay đổi PopupPositionProvider để sử dụng các tọa độ tương đối với cửa sổ, chứ không phải các tọa độ 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ẽ xóa 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 đồ họa vectơ để hỗ trợ việc phân tích cú pháp của việc phủ màu được áp dụng cho thư mục gốc của đồ họa 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)
- Phương thức tọa độ chung không còn dùng nữa và đã tạo phương thức tọa độ dựa trên cửa sổ mới. (Iee284)
- Bổ sung Modifier.toolingGraphicsLayer để thêm công cụ 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ì lệnh có thể thay đổi. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden được đổi tên thành invisibleToUser và được đánh dấu là @ExperimentalComposeUiApi. AccessibilityRangeInfo đã được đổi tên thành ProgressBarRangeInfo. stateDescriptionRange đã được đổi tên thành progressBarRangeInfo. AccessibilityScrollState đã được đổi tên thành ScrollAxisRange. horizontalAccessibilityScrollState đã được đổi tên thành horizontalScrollAxisRange. verticalAccessibilityScrollState đã được đổi tên thành verticalScrollAxisRange. (Id3148)
- Đã xóa PointerInputData và PointerInputChange đã sửa đổi để 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 SkMa Matrix và Matrix4 trong nội bộ. (I432e6)
- Đã xóa các phương thức thử nghiệm monotonicFrameAnimationClockOf (Ib753f, b/170708374)
- Di chuyển String.fintPrecedingBreak và String.fingFollowBreak tới InternalTextApi. (I657c4)
- androidx.comose.ui.util.isSurrogatePair đã được xóa khỏi API công khai. (Ia9494)
- Đã đổi tên TransformedText.transformedText thành TransformedText.text
- TransformText không còn là một loại dữ liệu (Ie672a)
- Đã xóa
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
- onCommit, onDispose và onActive không được dùng nữa, thay vào đó là các API SideEffect và DisposableEffect (If760e)
Thay đổi đối với các hàm cho phông chữ/Phông chữ/Kiểu chữ
- Thêm các hàm trạng thái ban đầu bắt đầu bằng chữ cái viết hoa
- Các chức năng ban đầu không còn được dùng với chữ cái đầu tiên viết thường
- Các hàm ban đầu mới sẽ trả về Phông chữ thay vì các loại con
- Ẩn các hàm tạo của lớp con để chỉ có thể tạo dựng qua các hàm ban đầu.
- Đã đổi tên Font.asFontFamily thành Font.toFontFamily (I42aa7)
Đã giới thiệu
ComposeContentTestRule
, phần mở rộngComposeTestRule
và định nghĩasetContent
, đã bị xóa khỏiComposeTestRule
. Thêm phương thức trạng thái ban đầucreateEmptyComposeRule()
. Phương thức này trả vềComposeTestRule
và không chạy Hoạt động cho bạn. Sử dụng tuỳ chọn này khi bạn muốn chạy Hoạt động trong quá trình thử nghiệm, ví dụ: sử dụngActivityScenario.launch
(I9d782, b/174472899)animateAsState hiện là animateFooAsState, nơi mà Foo trở thành loại của biến được ảnh động hoá, ví dự như Float, Dp, Offset, v.v. (Ie7e25)
Đã thêm thông số mô tả nội dung vào Hình ảnh và Biểu tượng. Nó được dùng để cung cấp thông tin mô tả cho các dịch vụ hỗ trợ tiếp cận (I2ac4c)
Hãy xóa displaySize như bạn nên tránh điều này. Thông thường, bạn nên sử dụng kích thước onRoot() hoặc ít nhất 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 công cụ sửa đổi. (I36b78, b/177562900)
API emit() và tất cả các trường hợp tải quá tải đề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 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.
- Xoá
initial
khỏi thông số hàm khởi tạo EditorBuffer. (I326d5)
- Xoá
invalidate and compositionReference() hiện không được dùng nữa và thay vào đó là currentRecomposeScope và rememberCompositionReference tương ứng. (I583a8)
AnnotatedString được thay đổi để mở rộng từ kotlin.CharSequence. Do đó, độ dài và trình tự phụ hiện là các hàm bản sao và các hàm tiện ích bị xoá. (Iaf429)
RememberObserver thay thế CompositionLifecycleObserver và CompositionLifecycleObserver hiện đã ngừng hoạt động.
RememberObserver
là sự thay thế choCompositionLifecycleObserver
bằng 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 nội dung soạn thảo, 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 phần 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 bản saoRememberObserver
được trả về từ lệnh gọi lại chuyển đếnremember
nhưng không được nhớ ở trạng thái hợp thành 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 quan hệ hợp thành trước khi hoàn tất hoặc hợp thành bị huỷ vì trạng thái là đang tạo một quan hệ hợp thành không còn hiệu lực hoặc không còn cần đến nữa. Nếu bản sao củaRememberObserver
tuân theo một mục đề xuất tham chiếu ở trên là theo dõi một tài nguyên bên ngoài, cảonForgotten
vàonAbandoned
, thì mỗi tài nguyên cho biết rằng 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)
ScrollableColumn/Row không còn dùng được nữa. 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 công cụ sửa đổi trực tiếp như sau: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Phương thức trạng thái ban đầu 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 thử nghiệm (I532b6)
Đã đổi tên TextInputService.onStateUpdated là updateState (Id4853)
Tính năng chuyển đổi TransitionDefinition-based hiện không được dùng nữa (I0ac57)
TextUnitType.Inherit đã bị xóa. Thay vào đó, hãy sử dụng TextUnitType.Unspecified. (I9ff64)
Phiên bản 1.0.0-alpha10
Ngày 13 tháng Một, 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 thành giai đoạn của "á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ó thể ảnh hưởng đến mã ứng dụng vì các nút không còn hoạt động từ API nội bộ và thử nghiệm cho đến khi các 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
SideEffect
có thể so sánh để 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 API
- Đã thêm Modifier.focusOrder() có thể dùng để chỉ định thứ tự truyền tải tiêu điểm tùy chỉnh (I90cf5, b/175899543, b/170155556, b/170155429)
- Đã xóa focusObserver không còn được dùng nữa hãy dùng onFocusChanged thay thế.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à loại dữ liệu
- Đổi tên hàm EditOperation.process thành applyTo
- Đổi tên InputEventListener thành InputEventCallback
- (I0a366)
- Đã xóa 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 sẽ có thể định cấu hình việc tạo Trình soạn lại cho Giao diện người dùng đang trong quá trình thử nghiệm (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ú thích api thử nghiệm tương tự (Ia4502, b/171464963) - Đã đổi tên Color.useOrElse() thành Color.takeOrElse() (Ifdcf5)
- Đã xóa 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)
- Được thêm vào được chỉ định, là Chưa chỉ định và sử dụng OrElse cho các lớp nội tuyến 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ế Chế độ xem dựa trên Compose, loại bỏ thành phần của chúng để tạo lại sau này. Thêm API để cài đặt và khám phá các thành phần kết hợp lại trong phạm vi cửa sổ và CompositionReferences để tạo thành phần con.
Thêm ViewCompositionStrategy để định cấu hình chiến lược loại bỏ thành phần của [Abstract]ComposeView; hành vi mặc định được loại bỏ trên tách cửa sổ. (I860ab)
Xoá api công khai Any.identityHashCode() (I025d7)
Đã xóa 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)
Modifier.focus() và Modifier.focusRequester() không còn được dùng nữa. Thay vào đó, hãy sử dụng 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 cho SelectionManager. (I6ff30, b/173215242)
Đã giới thiệu thuộc tính Outline.rans để 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ẽ hiển thị Luồng trạng thái hiện tại của chiến dịch, cho phép theo dõi hoạt động và hoạt động 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, vì 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 thông số cho trình SemanticsModifier có thể nhấp, chọn và chuyển đổi. Thay đổi Modifier.progressSemantics sao cho Thanh trượt cũng có thể sử dụng được. (I216cd)
- API
Animatable
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 Mười hai, 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 API
- KeyEvent.Alt không còn được dùng nữa hiện đã bị xóa. Sử dụng KeyEvent.isAlt Pressed thay thế. (Idd695)
- Modifier.keyInputFilter và Modifier.previewKeyInputFilter không còn được dùng nữa. Thay vào đó, hãy dùng Modifier.onKeyEvent và Modifier.onPreviewKeyEvent (Idbf1b, b/175156384)
- Modifier.focusObserver không còn được dùng nữa. Sử dụng Modifier.onFocusChanged hoặc Modifier.onFocusEvent thay thế (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 khai báo về việc giải mã để tạo các bản sao FocuSRequester (I35d84, b/174817008)
- accessibilityLabel đã đổi tên thành contentDescription. accessibilityValue đã đổi tên thành stateDescription. (I250f2)
- Đã xóa các sự kiện tùy 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ênthành 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)
- AndroidOwner thực hiện nội bộ (Ibcad0, b/170296980)
- Đã xóa chú thích ExperimentPointerInput (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)
- subcomposeInto(LayoutNode) được đặt nội bộ (Id724a)
Giao diện
Applier
đã thay đổi để đơn giản hóa việc 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 một phương thức mới là
insertBottomUp()
.Một trình bổ trợ sẽ chèn các nút vào cây mà bạn đang chỉnh sửa bằng cách sử dụng
insertTopDown()
hoặcinsertBottomUp()
, tuỳ thuộc vào chế độ 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 quảng cáo chèn để triển khai từ dưới lên nên cần sao chép sang tất cả các bước bổ sung cần xây dựng từ dưới lên để đạt được hiệu suất. Với thay đổi này,Applier
sẽ ghi đèinsertBottomUp()
để tạo từ dưới lên cây 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 AndroidDialogProperty. Các tùy 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 được vẽ mờ ảo từ các định dạng tài sản được tạo điểm ảnh (như PNG) hoặc VectorDrawables. Người tiêu 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 để sử dụng trong các thành phần kết hợp Hình ảnh hoặc công cụ sửa đổi trình vẽ. (I2c703, b/173818471)
Thêm Modifier.clearAndSetSemantics để xóa 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 để sử dụng với DrawScope. (Iee043, b/173832789)
Giới thiệu API đồ họa PathEffect để cung cấp các mẫu khác nhau cho hình dạng vừa vẽ. Việc ngừng sử dụng NativePathEffect thay thế là việc triển khai dự kiến/thực tế 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 Espresso. Bạn có thể đăng ký và hủy đăng ký thông qua ComposeTestRule (I433f3)
Đã xóa gói (hủy) đăng ký chung của GlobalIdlingResource và (hủy) đăng ký đồng hồ chúng 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. Bây giờ, chúng là nội bộ của mô-đun của Compose.
CompositionData và CompositionGroup được thêm vào làm hàm thay thế cho API ui-tooling dùng để trích xuất thông tin về sự hợp thành. Các định dạng này là công khai nhưng không nhằm sử dụng bên ngoài API công cụ ui vì chúng cung cấp thông tin thô mà API công cụ diễn giải giao diện người dùng (I31a9c)
Tái cấu trúc ShaderBrush để tạo một phiên bản chương trình tạo 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 độ dốc 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 hợp thành 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 độ dốc theo các phương thức ban đầu trên đối tượng hàm Độ dốc. (I511fc, b/173066799)
Không dùng LazyColumnFor, LazyRowFor, LazyColumnForIndexed và LazyRowForIndexed nữa. Thay vào đó sử dụng LazyColumn và LazyRow (I5b48c)
BuildCompat.isAtLeastR không dùng nữa (Idb37e)
Đã thêm hàm trạng thái ban đầu buildAnnotatedString để tạo một AnnotatedString. Ngừng sử dụng hàm trình tạo annotatedString. (Idfe0b)
Đã xóa 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 Mười hai, 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 API
- Thêm hành động ngữ nghĩa Loại bỏ (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)
- Các phương pháp mới placeable.placeWithLayers() và placeable.placePlaceWithLayers() đã được thêm, cho phép bố cục tùy chỉnh và công cụ sửa đổi bố cục đặt con để giới thiệu một lớp đồ họa cho bản vẽ. Để có thể tối ưu hóa bản vẽ lại, vì vậy, trước tiên khi cần di chuyển một con, chúng tôi không phải vẽ lại nội dung của nó, thứ hai, chúng tôi có thể áp dụng các phép biến đổi vẽ cho một con (Ibd8f6 ,b/170296989 ,b/171493718 ,b/173030831)
<T>
đã bị xóa khỏi khai báo SubcamoseLayout. 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
- Đã tạo thời gian hoạt động và trường vị trí của PointerInputData. (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 sử dụng Material có thể sử dụng AmbientTextSelectionColors theo cách thủ công để tuỳ chỉnh màu sắc sử 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à một WindowFocusObserve 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 lint cho việc đặt tên và vị trí thông số lambda của cấu trúc có thể 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 tạo vệt sangcontent
, theo hướng dẫn và 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 quá tải
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 hiện đang nội bộ để chuẩn bị di chuyển logic sang phương thức placeable.placeWithLayers() của LayoutsModifier (I15e9f, b/173030831) - Ngừng sử dụng các Ambients đượ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 Ambients và Compose API khác. (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 khóa 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 bí danh loại của VectorAssetBuilder để liên kết về khả năng tương thích với ImageVector.Builder. (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 tùy 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). Sử dụng các giá trị nạp chồng với độ dời nội bộ (I4c5e7)
- Các API không còn được dùng trước đây đã bị xóa: Modifier.onPositioned đã bị xóa, hãy sử dụng Modifier.ongloballyPositioned. Modifier.onDraw đã bị xóa, hãy sử dụng Modifier.onDrawBehind. Modifier.plus đã bị xóa, hãy sử dụng Modifier.then. Color.Unset đã bị hóa, hãy sử dụng Color.Unspecified. Đã xóa 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)
id
đã được đổi tên thànhlayoutId
choLayoutIdParentData
.Measurable.id
được đổi tên thànhMeasurable.layoutId
. (Iadbcb, b/172449643)- Trình phát hiện cử chỉ nhấn đ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)
- Giới thiệu SweepGradientShader và SweepGradientBrush API. (Ia22c1)
- Quản lý thời gian trong thử nghiệm (TestAnimationClock và cách sử dụng) hiện đ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ó thêm nền bổ trợ. Hãy dùng câu lệnh này để thêm nội dung có thể đặt tiêu điểm vào một thành phần, kèm theo ngữ nghĩa chính xác và hỗ trợ tiếp cận. (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 ủy 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 tùy chỉnh (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd hiện không dùng nữa. 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
- đã xóa ngoại lệ bị xóa đối với 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
- Thông số căn chỉnh của Hộp đã được đổi tên thành contentAlignment. (I2c957)
- Các công cụ sửa đổi offsetPx đã được đổi tên thành offset. Công cụ này hiện đang sử dụng các thông số lambda thay vì Trạng thái. (Ic3021, b/173594846)
- Đã thêm thông số resetInput vào TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Thêm tìm lỗi mã nguồn cho các thông số của Phím bổ trợ trong các hàm có thể 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 thông 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 tùy chọn để cho phép AppMotionwatch được điều khiển bằng MonotonicFrameClock (I1403b, b/173402197)
- Đã thêm trình bao bọc kiểu chữ 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 để kiểm tra nhằm đảm bảo rằng các chức năng ban đầu của Modifier đã được xác định là phần mở rộng trên Phím bổ trợ, vì vậy, bạn có thể liên kết thành công với nhau. (I07981)
- Xóa 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 Ngữ cảnh nhúng; các phần phụ thuộc lên lịch bắt buộc được lấy từ performanceCoroutineContext. FrameManager không còn được dùng nữa; việc tích hợp nền tảng này sẽ khởi chạy quá trình xử lý ảnh chụp nhanh toàn cầu 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 Mười một, 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
đã phát hành. Phiên bản 1.0.0-alpha07 chứa những cam kết này.
Thay đổi API
- Đã giới thiệu 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 để
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 onDrawBehind API trong ContentDrawScope để phù hợp quy ước đặt tên với Modifier.drawBehind. (I4fc3a, b/171955269)
- Thêm tùy 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)
- Đã xóa chú thích 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)
- Đã xóa độ 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)
- Đã xóa 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 phương thức trả về của phương thức lerp trên các thông số 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 TestMonotonicFrameFrame để thử nghiệm mã dựa trên MonotonicFrameFrame của Compose để chờ sự kiện khung sáng tác sử dụng kotlinx-coroutines-test's runBlockTest (I4402f)
- Đã xóa GestureScope.localToGloba (I15299, b/171462785)
- Đã thêm trình tìm kiếm
onAllNodesWithSubstring
(I81dd7, b/171462889) - Mô-đun androidx.ui.test không dùng nữa. 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)
- foundation.Text không được dùng nữa và thay thế bằng material.Text. Đối với một API văn bản cơ bản, không lựa chọn 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)
- provideDefault đã được thêm thay thế để cung cấp các môi trường xung quanh và có thể được dùng để chỉ định các giá trị môi trường sẽ chỉ được đặt khi không có giá trị môi trường nào được cung cấp. (Id6635, b/171024925)
- BaseTextField không còn được dùng nữa. 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)- LaunchedTask được đổi tên thành LaunchedEffect để nhất quánI với các API SideEffect và DisposableEffect. LaunchedEffect không có các thông số chủ đề để khuyến khích các phương pháp hay nhất. (Ifd3d4)
- Các tài nguyên được giới thiệu tổng hợp 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 Tùy chọn IME tự động sửa bàn phím (I57b8d)
- androidx.ui.test đã di chuyển sang androidx.compose.ui.test (I9ffdb)
- Đã xóa 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 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 Mười, 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 API
- Trình soạn lại hiện là CompositionReference và là mẹ sáng tác hợp lệ. Hiện tại, bạn bắt buộc phải sử dụng tính năng Trình soạn lại rõ ràng ở ít địa điểm hơn. (I4036f)
- Ngừng sử dụng VectorPainter thay vì rememberVectorPainter để chỉ ra rõ hơn rằng API có thể kết hợp sử dụng nội bộ 'remember' để duy trì dữ liệu trên các nội dung kết hợp. (Ifda43)
- Đã cập nhật API Modifier.DrawWithCache để hiển thị ContentDrawScope dưới dạng phạm vi của người 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
- Xóa các phương thức không dùng nữa trên DrawScope (I56f5e)
- Thay đổi có thể gây lỗi: xóa 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 tọa độ x và y của bảng tổng hợp.
- (Iffcbb, b/170434992)
Sửa lỗi
- Kiểm tra API tìm lỗi mã nguồn cho missingGetterMatchingBuilder được bật 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 API Bán kính thành CornerRadius để thể hiện rõ hơn cách sử dụng API này trong khắp 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ợ các ngôn ngữ khác nhau cho
AnnotatedString.capitalize
vàAnnotatedString.decapitalize
(I4aa7f)
Phiên bản 1.0.0-alpha05
Ngày 14 tháng Mười, 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 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 công cụ sửa đổi đầu vào (Ia77d2)
- Đã thêm các hành động hỗ trợ tiếp cận Sao chép/Dán/Cắt (I6db4f)
- Đã xóa hàm tạo công khai cho AndroidOwner (Iacaef)
- Cửa sổ bật lên và hộp thoại hiện kế thừa FLAG_SECURE từ Cửa sổ gốc. Ngoài ra, chúng tôi cũng thêm tùy 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 để làm cho 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à xóa 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 họa. (Ie7e97)
Tạo onGloballyPositioned thành một hàm nội tuyến (I15830)
OnPositionedModifier được đổi tên thành OnGloballyPositionedModifier và onPositioned() được đổi tên thành onGloballyPositioned(). (I587e8, b/169083903)
Đã thêm thuộc tính hasPendingMeasureOrLayou 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)
Đã xóa
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
- Đã xóa Size.getFlipped
- Đã xóa Size.rem
- Đã xóa Size.truncDiv (Ief44d, b/169790720)
Là một phần của tiêu chuẩn hoá các giá trị đặt gác cho các lớp cùng dòng, hãy đổi tên Color.Unset to Color.Unspecified để nhất quán với các lớp cùng dòng khác (I97611, b/169797763)
Đã giới thiệu TextOverflow.None. Khi trình đơn mục bổ sung là 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)
Thông số phạm vi trong AnnotatedString.Builder.addStringAnnotation được đổi tên thành thẻ để đảm bảo tính nhất quán cho API. (I7c8cb)
Sửa lỗi
- Hiệu suất cuộn của LazyColumn/Row được cải thiện 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. Phương thức hasInvalidations() mới đã được thêm vào cho loại Thành phần. có phương thức hasPendingChanges() từ Trình soạn lại đã được đổi tên thành hasInvalidations() (Ib2f32, b/168293643, b/167972292, b/165028371)
- Đã cập nhật các thông số Size.Unspecified là 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)
- Thứ tự của các lệnh gọi place() trong Layout tùy chỉnh hiện 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 trình bổ trợ 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 tọa độ 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 Mười, 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 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 hành động ngữ nghĩa viết nhấp chuột kinh độ (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 nội tuyến để 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 tùy chỉnh. (Icc1ae, b/168295623)
thêm AccessibilityScrollState vào các thuộc tính ngữ nghĩa. (Ifeda9)
Đã giới thiệu 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 tùy 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 thông số Offset duy nhất thể hiện 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 trình tạo công khai cho lớp Bán kính nội dòng sẽ không được gọi trực tiếp mà thay vào đó các đối tượng Bán kính cần được khởi tạo thông qua trình tạo hàm
- Xoá các API RoundRect để 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 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)
- foundation.Box không còn được dùng nữa. 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 Box mới là các thành phần con cháu xếp chồng lên nhau khi có nhiều thành phần con cháu. Điều này khác với Box trước có hành vi tương tự như Column. (I94893, b/167680279)
- Ngừng sử dụng các tham số trang trí Box. Nếu bạn muốn trang trí/khoảng đệm trên hộp, hãy sử dụng Công cụ sửa đổi (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Cập nhật nhiều API Đồ hoạ
- Cập nhật API DrawScope bằng các phương thức chuyển đổi phạm vi để cho biết 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)
- Xóa SelectionContainer từ Trên cùng để vô hiệu hóa 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 Chín, 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 API
- Xóa các hành động ngữ nghĩa tiến/lùi. Đã thêm các bước trong AccessibilityRangeInfo. (Ia47b0)
- Đã xóa
onInvalidate()
khỏiOwner
--OwnedLayer
sẽ xử lý hiệu lực. (Ica72b, b/162061312) Đã xóa 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, xóa 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)
- DpConstraints và các API sử dụng hàm giới hạn này đã ngừng hoạt động. (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 để căn chỉnh hoặc căn chỉnh trong API bố cục. (I2421a, b/164077038)
- Bổ sung onNode và các phương thức chung khác trên ComposeTestRules 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 Chín, 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 API
- 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. (If654e, b/166106882)
- Thêm tùy chọn hỗ trợ cho các thông số loại trên đường dẫn đồ họa 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)
Đã khắc phục vấn đề trong đó hàm tạo 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.
Đã xóa 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)
Quy ước gọi cho các hàm tương ứng đã thay đổi. Đây là một thay đổi có thể gây lỗi nhị phân. Tất cả các thư viện phải được biên dịch lại để hoạt động với phiên bản trình biên dịch biên dịch này.
Thay đổi này không tạo ra sự 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ị xóa đồng bộ. (I58f25)
Phiên bản 1.0.0-alpha01
Ngày 26 tháng Tám, 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
đã phát hành. Phiên bản 1.0.0-alpha01 chứa nhữngcam kết này.
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 API
emitView
không được dùng nữa. Hãy sử dụngAndroidView
nếu có thể để phát Chế độ xem bên trong ứng dụng 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ừ khi đâ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)FocusState2
không được dùng nữa và được thay thế bằngFocusState
(Ia8b79, b/160822876, b/160923332)- Các phần quá tải trong AndroidView không dùng nữa đã bị xóa. (I946b9, b/163802393)
- Bây giờ, hệ thống có thể khai báo một hoặc nhiều bộ thiết lập của bộ thiết bị gốc do một bộ phát sóng có thể bỏ qua và kết hợp lại một cách độc lập. (Ibbd13)
Các loại 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 thành phần.
Đã thêm cờ mutableStateOf cho VectorPainter để vẽ lại có điều kiện nếu nội dung của thay đổi vectơ.
Bản sao VectorComponent đã được tái cấu trúc là một phần của VectorPainter khi được sử dụng lại trong các sáng tá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)
Đã xóa
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 loại nội tuyến (Iaec70)
Đã thêm thông số sửa đổi vào vùng chứa lựa chọn (I4aada, b/161487952)
Đã xóa FocusModifier không dùng nữa (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Đã thêm
mergePolicy
lambda vàoSemanticsPropertyKey
. Nó có thể dùng để xác định chính sách tùy 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 cháu. (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 hiện là loại nội tuyến (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)
Chúng tôi đã 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)
Đã xóa 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ể được dùng để nhận ký tự unicode do tổ hợp khóa và trạng thái khóa meta chỉ định (If3tvOS)
Đã làm cho sự kiện tùy 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)
Đã xóa 2 PointerEventPasses không còn cần thiết nữa. (I3dd9d)
Bạn có thể thêm màu thông 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)
- Modifier.drawBorder không còn được dùng nữa. Thay vào đó, hãy dùng Modifier.border. Loại dữ liệu đường viền đã được thay thế bằng Borderorder (I4257d, b/158160576)
Đã xóa các lệnh gọi FrameManager đã ngừng hoạt động.
API soạn thư nội bộ đã được thay đổi để giảm số lượng giá trị đầu vào để theo dõi các đố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. Modifier.drawBackground đã bị xoá. Sử dụng Modifier.background (I73b0d, b/163019183)
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 đã được khắc phục. Hiện tại, bạn đã cho phép khóa 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)
Thành phần kết hợp
state { ... }
hiện đã ngừng sử dụng, và thay vào đó là các lệnh gọi 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ố khái niệm để quản lý trạng thái, đồng thời khớp với mẫuby mutableStateOf()
của uỷ quyền thuộc tính loại. (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 tạo tương tự thành RRect và đã ngừng sử dụng các hàm tạo RRect (I5d325)
Phiên bản 0.1.0-dev16
Ngày 5 tháng Tá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 API
- OnChildPositioned đã ngừng hoạt động. Thay vào đó, hãy sử dụng OnPositioned trên thành phần con. (I87f95, b/162109766)
- setViewContent đã ngừng sử dụng. setContent nên được dùng để thay thế. (I7e497, b/160335130)
- Thêm API AndroidViewBinding để làm tăng cường và soạn 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ợ khóa phần cứng Alt (I9036b)
- FocusManager hiện không được dùng nữa. 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)
- Đã xóa 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)
- Đã xóa phím bổ trợ 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 sử 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 đồ họa vectơ (Ie16c9, b/158188351)
- Đã thêm Modifier.layout() cho phép tạo một công cụ sửa đổi bố cục tùy 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)
- Modifier.plus đã được ngưng sử dụng. Thay vào đó, hãy 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 đang thực hiện chức năng 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 soạn 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 thành phần 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)
- Đã xóa 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, nó 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 phải tự động đo lường lại/sắp xếp lại bố cục, nhưng chúng tôi sử dụng tính năng này bên trong LazyLazyItems trong khi cuộn. (I5f331, b/160791058)
- Xóa getLineEllipsisOffset/getLineEllipsisCount. Thay vào đó hãy dùng getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Thêm một số Dấu/Chú thích để 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 giao diện API nhất quán
- Đổi tên IntOffset.Origin thành IntOffset.Zero để phù hợp với API Offset
- Đã di chuyển phương thức nativeCanvas ra khỏi giao diện Canvas để hỗ trợ người dùng tạo các bản sao 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 vì 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 Hình ảnh để tránh sử dụng Hộp 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 thành phần 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
- Các phương thức hàm khởi tạo đồng hành Rect đã ngừng hoạt động và được thay thế bằng các hàm tạo
- Cập nhật lớp Brush và hàm khởi tạo 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 huỷ cấu trúc, đổi tên UnspecifiedSize thành Không xác định và đã xoá các phương thức không 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, tùy thuộc vào cấp độ API. Giới thiệu 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 thông số itemContent của danh sách Lazy. Thành phần này cung cấp các công cụ 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 cửa sổ xem 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)
- Đã xóa
SemanticsNodeInteraction.performPartialGesture
. Sử dụngSemanticsNodeInteraction.performGesture
thay thế. (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) - Tài liệu
FilledTextField
đã được đổi tên thànhTextField
và tính năng cơ bản củaTextField
đã được đổi tên thànhBaseTextField
để dễ dàng khám phá và sử dụng API mong muốn đơn giản nhất (Ia6242, b/155482676) - Modifier.drawBackground đã được đổi tên 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 hiển thị ở trên trong phần Khai báo phần phụ thuộc.
Thay đổi API
- Ngừng sử dụng FocusModifier, thay vào đó là Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState và FocusDetailedState đã ngừng sử dụng, thay vào đó là FocusState2 (I46919, b/160822875, b/160922136)
- Thêm giá trị điều chỉnh để quan sát sự thay đổi trạng thái của tiêu đ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ị 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 thế 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ú thích api thử nghiệm cho tất cả các API liên quan đến Tiêu điểm (I53b24, b/160903352)
- Đã thêm FocusState2, sẽ thay thế FocusDetailsState (I0a3ba, b/160822595)
- Đã thêm ExperimentalFocus, đây là chú thích @OptIn cho API tập trung. (I1544b, b/160820961)
- Một loại đơn vị IntBounds đã được thêm vào, đại diện cho các giới hạn pixel nguyên từ bố cục. Đã cập nhật API của PopupPositionProvider. (I0d8d0, b/159596546)
- Appier hiện yêu cầu phương thức clear() để xử lý các sáng tác (Ibe697)
- KeyEvent không còn được dùng nữa và được thay thế bằng KeyEvent2 (I68730)
- Một lá cờ useUnmergedTree mới không bắt buộc đượ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
Phương thức sử dụng đối tượng size.copy đã ngừng sử dụng thay thế bằng phương thức sao chép phiên bản (Ife290, b/159905651)
Cửa sổ bật lên, Hộp thoại và Trình đơn hiện kế thừa MaterialTheme theo ngữ cảnh (Ia3665, b/156527485)
TextDirection được đổi tên thành ResolvedTextDirection (I3ff38)
Đã xoá thông 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)
Xử lý lại sự lựa chọn để sử dụng lại. (I420e0)
Đã xóa 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 biên dịch trình biên dịch sẽ không chặn các lệnh gọi tới hàm 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 thông số sửa đổi. (I48a88, b/158746303)
Semantics() không còn được dùng nữa. Hãy sử dụng Modifier.semantics() thay thế. (I72407, b/158841414)
Thêm chế độ kết hợp viewModel() cho phép tạo hoặc nhận đã tạo ViewModel tương tự như cách hoạt động trong chế độ Activity hoặc Fragment (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 các lớp dùng để biểu thị thông tin kích thước, hãy chuẩn hoá cách sử dụng lớp Kích thước thay vì pxSize. Điều này mang lại lợi ích của một lớp nội tuyến nhằm tận dụng giá trị long để gói 2 giá trị float đại diện cho chiều rộng và chiều cao được biểu thị dưới dạng floats. (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 nội tuyến nhằm tận dụng giá trị long để gói 2 giá trị float đại diện cho độ lệch x và y được biểu thị dưới dạng floats. (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 các loại Dp và loại dữ liệu gốc cho các thông 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 các loại Dp và loại dữ liệu gốc cho các thông số pixel (Id3434)
Đã thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại Dp và loại dữ liệu gốc cho các thông số pixel (I97a5a)
TestTag hiện không được dùng nữa. Thay vào đó, hãy sử dụng Modifier.testTag. (If5110, b/157173105)
Tùy chọn mặc định, không hoạt động, việc triển khai ParentDataModifier#ModifyParentData đã bị xóa. Đ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ị xóa. Thay vào đó hãy sử dụng Contentscale. (Ifbc5b)
Thay thế việc sử dụng lớp Px trong nhiều loại 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 gốc cho các tham số pixel (I19d02)
Thêm thành phần DropdownMenu trong tài liệu giao diện người dùng, một cách triển khai menu Material Design. (I9bb3d)
Đã xoá LayoutTag() không dùng nữa, thay vào đó hãy sử dụng Modifier.tag(). Xoá Modifier.matchParent() không dùng nữa, thay vào đó, hãy 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 các loại Dp và loại dữ liệu gốc cho các thông 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 Density và cung cấp loại con LayoutDirection Đã xóa DrawScope trong ContentDrawScope Painter và PainterModifier đã được cập nhật để không còn duy trì thuộc tính RTL vì DrawScope làm việc này mà không cung cấp nó một cách thủ công (I1798 )
DoubleTapGestureFilter giờ đây phân biệt với SingleTapGestureFilter trên cây. (If92b1)
Đã cập nhật API Căn chỉnh 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)
Phím bổ trợ DrawLayers api đã được thay đổi: outlineShape được đổi tên thành hình dạng và có giá trị mặc định RectangleShape và hiện không rỗng; đã đổi tên clipToOutline thành clip; đã xóa clipToBounds giống như clip == cùng với RectangleShape (I7ef11, b/155075735)
Cập nhật các API của Compose cấp độ cao hơn để hiển thị CanvasScope thay cho Canvas. Việc này giúp người tiêu dùng không cần phải duy trì các đối tượng Paint của riêng mình. Đối với khách hàng vẫn yêu cầu quyền truy cập vào một Canvas, họ có thể sử 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. (I80afd)
API hàm lambda tạo vệt WithConstraints đã được thay đổi. Giờ đây, thay vì hai thông số, giao diện này có phạm vi trình tiếp nhận. Cùng với các giới hạn và layoutDirection, giao diện cung cấp các thuộc tính minWidth, maxWidth, minHeight và maxHeight dưới dạng Dp (I91b9a, b/149979702)
Đổi tên LayoutModifier2 thành LayoutModifier. (Id29f3)
Đã xoá giao diện LayoutsModifier không còn sử dụng. (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 Bố cục và thành phần con cháu 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ư mục con trong cùng một bố cục mẹ. thuộc tính độ cao trên DrawLayerModifier được đổi tên thành shadowElevation và không kiểm soát thứ tự bản vẽ nữa. Thứ tự thông số cho chỉ số DrawShadow thay đổi: độ cao hiện tại là độ cao đầu tiên và hình dạng là hình dạng thứ hai với giá trị mặc định của RectangleShape. (I20150, b/152417501)
Đã xóa onSizeChange và onPositionChange trong Chủ sở hữu. (I5c718)
Đã thêm Constraints2, một bản sao của những Ràng buộc này chỉ hỗ trợ giá trị ràng buộc Int thay vì IntPx. IntPx sẽ bị xóa 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)
Đã thực hiện Căn chỉnh tức thì 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ị Đã do thay vì Có thể đặt. (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.Cente đạ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 họa 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á tất cả thông 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 công cụ sửa đổi bố cục; đã ngừng sử dụng LayoutModifier (If32ac)
Đã thay thế Phím bổ trợ cùng với toán tử có các hàm mở rộng về trạng thái ban đầu (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 thông 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ó thể 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 để làm cho providedAlignmentLines là một Tập hợp thay vì một Bản đồ. Đồng thời có câu lệnh LayoutCoordinates triển khai toán tử get() thay thế để truy xuất giá trị. Điều này giúp các công cụ sửa đổi dễ dàng sửa đổi một hoặc nhiều giá trị của tập hợp mà không tạo bộ sưu tập mới cho từng công cụ 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 sử 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 sử dụng số nguyên và không sử dụng giá trị dấu phẩy động. (I9367b)
Các cải tiến đối với nền tảng Giới hạn API (I0fd15)
Đã tạo API CanvasScope bao gồm một đối tượng Canvas để hiển thị nền tảng 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 thập dữ liệu 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ẽ.
- Đã bổ sung CanvasScopeSample cũng như cập nhật ứng dụng minh hoạ để bao gồm bản minh hoạ đồ hoạ khai báo (Ifd86d)
Đã xóa 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 hóa để 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ả Màu có thể nhận giá trị rỗng trong API bằng các Màu không nhận giá trị rỗng và sử dụng Color.Unset thay cho giá trị rỗng (Iabaa7)
Giới thiệu thông 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 Canvas.rotate và Canvas.scale tiện ích để sử dụng tọa độ tổng hợp không bắt buộc cho các lượt biến đổi. Các tùy 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 Pixel Map để 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 việc soạn thư 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 API VectorPainter để 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. Các thành phần kết hợp trước đây của DrawVector không còn được sử dụng nữa và thay vào đó là VectorPainter.
Đã đổi tên API Image(Painter) thành PaintBox(Painter) Đã tạo thành phần kết hợp vectơ hoạt động như thành phần kết hợp Hình ảnh, ngoại trừ VectorAsset thay vì ImageAsset (I9af9a, b/149030271)
Đã đổi tên Hình ảnh thành ImageAsset để phân biệt rõ hơn sự khác biệt giữa dữ liệu Hình ảnh và thành phần kết hợp Hình ảnh sắp tới dùng để tham gia vào bố cục và vẽ nội dung. _Body:Đã tạo phương thức mở rộng trên android.graphics.Bitmap, Bitmap.asImageAsset(), để tạo một phiên bản của ImageAsset hữu ích cho việc kết hợp hoạt động phát triển ứng dụng Android truyền thống với khung Compose (Id5bbd)
Đã thêm TextDirection.Content (I48f36)
Đã thêm toán tử cộng TextDecoration.plus (I0ad1a)
Force
sẽ bị xóa 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.getStringAnnotation trả về tất cả các chú thích trong dải ô. (I1fa00)
Đã thay đổ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)
Bây giờ, bạn có thể ẩn/hiển thị bàn phím phần mềm bằng cách sử dụng SoftwareKeyboardController được cung cấp theo lệnh gọi onTextInputStarted (I8dc44, b/151860051)
Đã thêm toán tử cộng cho Kiểu (Văn bản/Đoạn/Span) ủy 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)
Đã xóa 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 lỗi 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à thông 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)
- VerticalScroller và HoriziontalScroller không còn được dùng nữa. Sử dụng ScrollableColumn và ScrollableRow để tạo trải nghiệm tích hợp với hoạt động và thông số 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)- Một số API thử nghiệm được đổi tên để 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)
- Xóa loại cùng dòng của chương trình Đổ bóng gói NativeShader loại dự kiến Đổ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)
PainterModifiei được mô phỏng lại không còn cung cấp tỷ lệ dựa trên các ràng buộc nhất định và thông 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 vẽ mà chúng đang vẽ.
Đã khắc phục vấn đề mà bản đồ bộ nhớ đệm của VectorPainter có kích thước ở kích thước mặc định thay vì kích thước vẽ nhất định.
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 hoạt ảnh (Ie34c5)
Chú thích @Untracked không còn được dùng nữa. Thay thế bằng @ComposableContract(tracked=false) (Id211e)
androidx.ui.foundation.TextFieldValue và androidx.ui.input.EditorValue không còn được dùng nữa. Các thành phần kết hợp TextField, FilledTextField và CoreTextField sử dụng loại đó cũng không còn được dùng nữa. Vui lòng sử dụng androidx.ui.input.TextFieldValue thay thế (I4066d, b/155211005)
Khắc phục lỗi trong đó việc nhập con trỏ sẽ gây ra sự cố nếu PointerInputFilter bị loại bỏ thông qua phần con trong quá trình loại bỏ. Vấn đề này hiện đã được khắc phục. (I1f48b, b/157998762)
Khắc phục vấn đề về sự cố gửi đi của con trỏ sẽ gây ra sự cố nếu PointerInputFilter bị loại bỏ thông qua phần con trong quá trình loại bỏ. Vấn đề này hiện đã được khắc phục. (Iab398, b/157998762)
Loại Bán kính được tái cấu trúc là một loại nội dòng. Xoá các phương thức tạo quảng cáo đồng hành có cấu trúc hàm tạo cùng với thông số mặc định để có bán kính cùng với trục y khớp với bán kính của thông số bán kính trục x bắt buộc.
Đã cập nhật DrawScope.drawRoundRect để sử dụng một thông số Bán kính duy nhất thay vì 2 giá trị nổi 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 Trình soạn lại này không còn là một đoạn trừu tượng hữu ích nữa. Hầu hết quá trình kết hợp lại nên xảy ra như là kết quả của các phép 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 kết hợp lại phạm vi hiện tại. (Ifc992)Thay thế việc sử dụng lớp Px trong nhiều lớp của Compose như một phần của nỗ lực tái cấu trúc lớn chỉ dựa vào các loại Dp và loại gốc cho các thông số pixel (Iede0b)
Thay đổi chiến lược tạo mã của trình biên dịch của Compose. Trước khi có thay đổi, trình biên dịch soạn thư sẽ chuyển đổi lệnh gọi thành các 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).
Điều này có nghĩa 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ì ở phần gọi trang.
Đâ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 soạn không phải cập nhật bất kỳ mã nào do sự thay đổi này.
Để hỗ trợ công việc này, chữ ký JVM của tất cả các hàm có khả năng kết hợp đã thay đổi. Hàm Composable chấp nhận một tham số được chuyển đổi thành hàm chấp nhận 3 tham số, các tham số bổ sung là Composer, một số nguyên 'key'. số nguyên bitmask dùng để truyền siêu dữ liệu qua các lệnh gọi.
Compose hiện cũng sẽ biến đổi các đối số mặc định thành hàm có khả năng kết hợp. Ad Manager có thể thực hiện việc này mà không cung cấp thêm quá trình tổng hợp mặc định của hàm, vì vậy 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 nơi mà trước đây không như vậy
- Các biểu thức tổng hợp trong biểu thức đối số mặc định hiện đã được đăng ký và xử lý chính xác
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 thông 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. Do đó, khi so sánh vào thời gian chạy, bạn sẽ nhận được ít dữ liệu 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. Thông số được xác định là “tĩnh” tại thời điểm biên dịch không còn được so sánh hoặc lưu trữ trong thời gian chạy nữa. Điều này làm giảm số lượng phép so sánh và giảm kích thước bảng vùng. 3. Cấu trúc luồng kiểm soát của phần nội dung đượ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. Thông số gửi và nhận không được sử dụng cho các hàm không được bao gồm trong việc xác định khả năng có thể bỏ qua của hàm nếu chúng không được sử dụng trong phần 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à việc sử dụng tính năng soạn thư thường sẽ không bị ảnh hưởng: 1. Composer::startExpr đã bị xoá 2. Composer::endExpr đã bị xoá 3. Composer::call đã ngừng hoạt động 4. Các quá tải không phải varargs của
key
đã bị xoá. Sử dụng phiên bảnvararg
trở đi. 5. Chú thích Pivotal không còn được dùng nữa. Hãy sử dụngkey
để thay thế. 6. ScopeUpdateScope::updateScope đã được thay đổi thành Function3 thay vì Function1 7. restartableFunction và restartableFunctionN đã được cập nhật để bao gồm các thông số thời gian biên dịch bổ sung (I60756, b/143464846)Đã xoá các phím bổ trợ LayoutAlign không dùng nữa. (I10877)
Đã xóa 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ỏ quá tải (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 để được xác định theo LayoutsDirection. tức là nếu LayoutsHướng là RTL, mặc định TextDirection sẽ là RTL. Trước đây, đó là 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 thông 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 thông 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 thông 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)