Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(Xem tài liệu tham khảo API cho tất cả các gói phát triển ứng dụng)
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 13 tháng 11 năm 2024 | 1.7.5 | - | - | 1.8.0-alpha06 |
Cấu trúc
Compose là sự kết hợp của 7 mã nhận dạng Nhóm Maven (Maven Group Id) trong androidx
. Mỗi Nhóm chứa một tập con chức năng mục tiêu và mỗi tập con có một tập hợp ghi chú phát hành riêng.
Bảng này giải thích các nhóm và đưa ra đường liên kết đến từng tập hợp ghi chú phát hành.
Nhóm | Mô tả |
---|---|
compose.animation | Tạo ảnh động trong các ứng dụng Jetpack Compose để làm phong phú trải nghiệm người dùng. |
compose.compiler | Biến đổi các hàm @Composable và hỗ trợ hoạt động tối ưu hoá bằng trình biên dịch bổ trợ Kotlin. |
compose.foundation | Viết ứng dụng Jetpack Compose bằng các khối dựng có sẵn, cũng như mở rộng nền tảng để xây dựng các thành phần của hệ thống thiết kế của riêng bạn. |
compose.material | Xây dựng các giao diện người dùng Jetpack Compose bằng các thành phần Material Design có sẵn. Đây là điểm truy cập cấp cao hơn của Compose, được thiết kế nhằm cung cấp các thành phần theo như mô tả trên trang web www.material.io. |
compose.material3 | Xây dựng giao diện người dùng Jetpack Compose bằng các thành phần Material Design 3, phiên bản cải tiến tiếp theo của Material Design. Material 3 có khả năng tuỳ chỉnh giao diện cập nhật, cũng như các thành phần và tính năng cá nhân hoá Material You, chẳng hạn như màu động. Công cụ này được thiết kế để phù hợp với phong cách đồ hoạ và giao diện người dùng hệ thống mới trên Android 12. |
compose.runtime | Các khối dựng cơ bản cho mô hình lập trình và tính năng quản lý trạng thái của Compose, đồng thời là thời gian chạy cốt lõi để trình biên dịch bổ trợ Compose nhắm đến. |
compose.ui | Các thành phần cơ bản của giao diện người dùng Compose cần thiết để tương tác với thiết bị, bao gồm cả bố cục, bản vẽ và phương thức nhập. |
Khai báo phần phụ thuộc
Để thêm một phần phụ thuộc trên Compose, bạn phải thêm kho lưu trữ Maven của Google vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Để biết thêm thông tin về các phần phụ thuộc, hãy xem bài viết Thêm phần phụ thuộc vào bản dựng.
Ý kiến phản hồi
Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.
Xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.
Phiên bản 1.8
Phiên bản 1.8.0-alpha06
Ngày 13 tháng 11 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.8.0-alpha06
. Phiên bản 1.8.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm đối tượng sửa đổi
stylusHoverIcon
. (Iff20a, b/331289114) - Ngừng sử dụng
confirmValueChange
củaAnchoredDraggableState
. Thay vì phủ quyết các thay đổi về trạng thái, các neo không được phép không được nằm trong tập hợp neo đang hoạt động và bạn nên sử dụngOverscrollEffect
để cho biết không có hành động được yêu cầu. (Ia717f) - Thay đổi trình quản lý Tự động điền thành một giao diện. (I84914, b/376080755)
- Thêm API
OverscrollEffect#withoutDrawing
vàOverscrollEffect#withoutEventHandling
– các API này tạo một thực thể được gói của hiệu ứng cuộn xuống dưới cùng được cung cấp không vẽ / xử lý các sự kiện tương ứng, cho phép hiển thị hiệu ứng cuộn xuống dưới cùng trong một thành phần riêng biệt với thành phần đang gửi sự kiện. Ví dụ: tắt tính năng vẽ cuộn xuống dưới trong danh sách tải lười, sau đó vẽ cuộn xuống dưới riêng biệt ở trên cùng / nơi khác. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Thêm tính năng hỗ trợ tự động điền trong thanh công cụ văn bản. (Ie6a4c)
- Ngừng sử dụng
OverscrollConfiguration
vàLocalOverscrollConfiguration
, đồng thời thêmrememberPlatformOverscrollFactory
để tạo một thực thể của / tuỳ chỉnh các tham số của việc triển khai cuộn xuống dưới cùng mặc định. Để tắt tính năng cuộn quá mức, hãy sử dụngLocalOverscrollFactory provides null
thay vìLocalOverscrollConfiguration provides null
. Để thay đổi màu sắc / khoảng đệm của hiệu ứng phát sáng, hãy sử dụngLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
thay vìLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Thay đổi thuộc tính
effectModifier
trênOverscrollEffect
thànhnode: DelegatableNode
, nhất quán với các API khác. (Ic0b46, b/255554340) - Xoá API
GlobalAssertions
thử nghiệm. Mục đích sử dụng của lớp này là để chạy các quy trình kiểm tra hỗ trợ tiếp cận, hãy xemenableAccessibilityChecks()
cho mục đích đó. (I59322)
Phiên bản 1.8.0-alpha05
Ngày 30 tháng 10 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.8.0-alpha05
. Phiên bản 1.8.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Hỗ trợ tự động định cỡ văn bản. Truyền một thực thể
AutoSize
(ví dụ:AutoSize.StepBased
) đến thành phần kết hợp văn bản yêu thích của bạn (nhưBasicText
) và xem kích thước văn bản thích ứng với không gian có sẵn! (Ice7e0, b/139320827) - Thêm API
OverscrollFactory
vàLocalOverscrollFactory
để cho phép định cấu hình tính năng cuộn quá mức trong một hệ phân cấp. Theo mặc định, giá trị được cung cấp thông quaLocalOverscrollFactory
sẽ được dùng để tạoOverscrollEffect
. Để tạo và ghi nhớ hiệu ứng từ nhà máy hiện được cung cấp, hãy sử dụngrememberOverscrollEffect()
. (I51ca4, b/255554340)
Thay đổi về API
- Giới thiệu
CompositionLocal
có thể dùng để sửa đổi sắc độ của điểm nổi bật khi điền thành công của tính năng Tự động điền. (I32092) - Xoá
ScrollableDefaults.overscrollEffect
– thay vào đó, bạn nên sử dụngrememberOverscrollEffect
. Thao tác này sẽ tạo một thực thể của quá trình triển khai cuộn xuống hiện tại được cung cấp bằngLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516) - Giới thiệu giao diện
AutofillManager
mới có thể dùng để tinh chỉnh hành trình Tự động điền của người dùng và cờisSemanticAutofillEnabled
để bật phiên bản Tự động điền mới này. (I9d484) - Xoá
CombinedClickableNode
. API thử nghiệm này tạm thời được hiển thị để bỏ chặn công việc về hiệu suất, nhưng hiện không còn cần thiết nữa. Thay vào đó, bạn nên trực tiếp sử dụngModifier.combinedClickable
như với các API đối tượng sửa đổi khác. (I4b658) - Thêm các phương thức nạp chồng vào
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
vàVerticalPager
với khả năng hỗ trợ chỉ địnhOverscrollEffect
tuỳ chỉnh.OverscrollEffect
được cung cấp sẽ nhận được các sự kiện và được hiển thị trong giới hạn của các thành phần này. Xin lưu ý rằng việc vẽ cùng mộtOverscrollEffect
hai lần không được hỗ trợ – vì vậy, bạn không thể vẽ cùng mộtOverscrollEffect
được cung cấp cho một trong các thành phần này riêng biệt bằngModifier.overscroll
. Trường hợp sử dụng vẽ cuộn ngoài giới hạn của các thành phần này sẽ được giải quyết riêng trong tương lai. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Phiên bản 1.8.0-alpha04
Ngày 16 tháng 10 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.8.0-alpha04
. Phiên bản 1.8.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm lệnh gọi lại
DelegatableNode#onDensityChange
vàDelegatableNode#onLayoutDirectionChange
để cho phép cập nhật trạng thái nút khi các lệnh gọi này thay đổi. (I04f3e, b/340662451) - Hiện tại, Paragraph và
ParagraphIntrinsics
sẽ lấy danh sách tất cả chú giải được áp dụng choAnnotatedString
, trước đây chỉ có danh sáchSpanStyles
. (I12f80) - Giới thiệu
PointerInputModifierNode#touchBoundsExpansion
, có thể dùng để phóng to giới hạn chạm của một đối tượng sửa đổi đầu vào con trỏ. (Iccf02, b/335339283)
Sửa lỗi
- Khắc phục lỗi ngưỡng vị trí được chuyển đến
AnchoredDraggableDefaults.flingBehavior
không được xem xét chính xác trong một số trường hợp. (Ifdf0d, b/367660226) - Giới thiệu bản sửa lỗi cho các thành phần có thể cuộn lồng nhau bị xoá khỏi cây nút trong khi thao tác hất đang diễn ra. Giờ đây, các nút này sẽ huỷ thao tác hất và gửi chính xác sự kiện
onPostFling
với vận tốc còn lại. Chúng tôi cũng sẽ giới thiệu cờNewNestedScrollFlingDispatchingEnabled
để kiểm soát hành vi trong trường hợp hồi quy. Cờ này sẽ bị xoá trước khi phát hành phiên bản thử nghiệm. (I05c37, b/371168883) - Khắc phục lỗi
OverscrollEffects
được truyền đếnModifier.anchoredDraggable
sẽ nhận được delta 2D thay vì 1D. (Ie52c0)
Phiên bản 1.8.0-alpha03
Ngày 2 tháng 10 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.8.0-alpha03
. Phiên bản 1.8.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Cập nhật phiên bản Kotlin lên 1.9 (I1a14c)
- Ra mắt cờ
DraggableAddDownEventFixEnabled
(I848d5) - Giới thiệu một Vai trò ngữ nghĩa mới có tên là Băng chuyền để mô phỏng hành vi của danh sách trong Pagers cho các dịch vụ hỗ trợ tiếp cận. (Id354b, b/354109776, b/239672673)
- Xoá đối tượng sửa đổi
graphicsLayer
ngầm ẩn khỏi thành phần kết hợpBasicText
. Thêm cờComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
thử nghiệm để có thể quay lại hành vi cũ. (Ie478d) - Thêm
Modifier.recalculateWindowInsets()
để cho phép các thành phần con trong hệ phân cấp sử dụnginsetsPadding
ngay cả khi các thành phần mẹ căn chỉnh các thành phần con đó mà không cầnconsumeWindowInsets()
. (I7f9e4)
Sửa lỗi
- Triển khai tính năng nhận cử chỉ trong
detectDragGestures
, các đối tượng có thể kéo và cuộn. Giờ đây, nếu một thành phần con có thể kéo bỏ qua một cử chỉ, thì thành phần mẹ có cơ hội nhận lại cử chỉ đó. Điều này cho phép xử lý cử chỉ một cách liên tục và tích hợp hơn. (Ic88fe) - Cập nhật hành vi huỷ thao tác hất trong các thành phần có thể cuộn. Giờ đây, nếu một thành phần có thể cuộn hất và chạm vào giới hạn, thành phần đó sẽ truyền chính xác vận tốc hất sang thành phần có thể cuộn tiếp theo trong chuỗi thay vì tiếp tục đẩy hất. (I9326a)
Phiên bản 1.8.0-alpha02
Ngày 18 tháng 9 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.8.0-alpha02
. Phiên bản 1.8.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
TextOverflow.StartEllipsis
vàTextOverflow.MiddleEllipsis
hiện đã có sẵn, cho phép đặt dấu ba chấm ở đầu hoặc giữa dòng văn bản một dòng (I38913, b/185418980)
Phiên bản 1.8.0-alpha01
Ngày 4 tháng 9 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.8.0-alpha01
. Phiên bản 1.8.0-alpha01 bao gồm các thay đổi sau.
Phiên bản 1.7
Phiên bản 1.7.5
Ngày 30 tháng 10 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.5
. Phiên bản 1.7.5 bao gồm các thay đổi sau.
Sửa lỗi
- Đảm bảo rằng các mục được ghim không được kết hợp phụ hai lần trong vùng khoảng đệm nội dung. (Ic6224)
Phiên bản 1.7.4
Ngày 16 tháng 10 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.4
. Phiên bản 1.7.4 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi hiếm gặp gây ra sự cố trong các trường văn bản. (I475c6, b/313010266)
- Xoá
ReusableContentHost
ở gốc của các mục bố cục Lazy. Đây có thể là nguyên nhân gốc rễ gây ra sự cố "biện pháp được gọi trên một nút đã vô hiệu hoá". (Id6e60)
Phiên bản 1.7.3
Ngày 2 tháng 10 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.3
. Phiên bản 1.7.3 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố rò rỉ bộ nhớ với
BasicText
khi minLines được đặt thành một giá trị không phải mặc định.
Phiên bản 1.7.2
Ngày 18 tháng 9 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.2
. Phiên bản 1.7.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề với đối tượng có thể kéo bị thiếu sự kiện nhấn xuống, khiến thao tác hất trông chậm hơn bình thường.
Phiên bản 1.7.1
Ngày 10 tháng 9 năm 2024
- Không có thay đổi nào đối với cấu phần phần mềm Android. Xoá cấu phần phần mềm
-desktop
và thêm cấu phần phần mềm-jvmStubs
và-linuxx64Stubs
. Không có mục tiêu nào trong số này được dùng, chúng là phần giữ chỗ để hỗ trợ các nỗ lực của Jetbrains Compose.
Phiên bản 1.7.0
Ngày 4 tháng 9 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0
. Phiên bản 1.7.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.6.0
- Hiệu suất của
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
vàModifier.draggable
đã được cải thiện đáng kể. Trong nỗ lực này, ngoài các thay đổi nội bộ, chúng tôi cũng đã thực hiện các thay đổi sau đây đối với API- Thêm một API chỉ báo mới,
IndicationNodeFactory
. Điều này giúp triển khai chỉ báo hiệu quả hơn so với APIrememberUpdatedInstance
trước đó (hiện không còn được dùng nữa). Để biết thông tin di chuyển, hãy xem developer.android.com. clickable
/combinedClickable
/selectable
/toggleable
hiện chấp nhận tham sốMutableInteractionSource
có thể nhận giá trị rỗng. Nếu giá trị rỗng và Chỉ báo được cung cấp làIndicationNodeFactory
, thì Chỉ báo chỉ có thể được tạo từng phần khi cần, giúp cải thiện hiệu suất. Nếu không di chuyển lên trên và sử dụngMutableInteractionSource
, bạn nên truyền giá trị rỗng thay vì truyềnremember { MutableInteractionSource() }
.- Ngừng sử dụng
Indication#rememberUpdatedInstance
. Phương thức này gây ra mức phạt hiệu suất cao và không thể tránh khỏi, đồng thời ngăn chặn các hoạt động tối ưu hoá khác. Thay vào đó, bạn nên sử dụng APIIndicationNodeFactory
mới.
- Thêm một API chỉ báo mới,
BasicTextField
sử dụngTextFieldState
hiện đã ổn định và bạn nên bắt đầu di chuyển tất cả các vị trí gọi từBasicTextField(value, onValueChange)
sangBasicTextField(TextFieldState)
.- Ngừng sử dụng
ClickableText
. Để thêm đường liên kết có thể nhấp vào văn bản, hãy sử dụngBasicText
với chú thíchLinkAnnotation
mới trongAnnotatedString
.LinkAnnotation
cho phép tạo kiểu tuỳ chỉnh dựa trên trạng thái của đường liên kết (ví dụ: được lấy tiêu điểm, được di chuột qua). - Giới thiệu
ContextualFlowRow
vàEnhanced FlowRow/Column
vớiMaxLines
vàOverflow
. Chúng tôi rất vui mừng được thông báo về các điểm cải tiến đối vớiFlowRow
vàFlowColumn
thử nghiệm, hiện có tính năng hỗ trợmaxLines
và tràn cùng với sự ra mắt củaContextualFlowRow
vàContextualFlowColumn
. Bản cập nhật này được thiết kế để cung cấp các thành phần tối ưu về hiệu suất, trong đóContextualFlow*
phù hợp với một số lượng lớn mục sử dụng cấu hình maxLines nhỏ và các nút xem thêm +N động, cònFlowRow
vàFlowColumn
phù hợp với một số lượng nhỏ mục, dưới 100 mục. Quan trọng: Để duy trì hành vi hiện có trongFlowRow
hoặcFlowColumn
, trong đó tất cả các mục được kết hợp bất kể chúng có vừa với trục chéo tối đa hay không, hãy đặt tràn thànhFlowRowOverflow.Visible
hoặcFlowColumnOverflow.Visible
trong quá trình khởi chạy. Khám pháContextualFlowRowSample
vàFlowRowSample
để xem ví dụ về cách sử dụng các tính năng mới này. (Ib9135, b/293577082) - Hỗ trợ ảnh động xuất hiện và biến mất của mục đã được thêm vào
LazyColumn
vàLazyRow
. Trước đây, bạn có thể thêm công cụ sửa đổiModifier.animateItemPlacement()
để hỗ trợ ảnh động vị trí (sắp xếp lại). Chúng tôi đã ngừng sử dụng công cụ sửa đổi này và giới thiệu một công cụ sửa đổi không thử nghiệm mới có tên làModifier.animateItem()
. Công cụ này cho phép bạn hỗ trợ cả ba loại ảnh động: xuất hiện (mờ dần), biến mất (mờ dần) và sắp xếp lại. (I2d7f7, b/150812265) - Triển khai tính năng hỗ trợ thử nghiệm cho ảnh chụp màn hình dài trong vùng chứa cuộn Compose bằng API Android chính thức (
ScrollCaptureCallback
). - Các nguồn
NestedScroll
Kéo và hất đang được thay thế bằngUserInput
vàSideEffect
để phù hợp với định nghĩa mở rộng của các nguồn này, hiện bao gồm cả ảnh động (Hiệu ứng phụ) và Bánh xe chuột và Bàn phím (UserInput
). - Giờ đây, bạn có thể đánh dấu các yêu cầu tìm nạp trước
LazyLayout
là khẩn cấp, nghĩa là chúng tôi dự kiến sẽ cần mục này trong khung hình tiếp theo và muốn bỏ qua ngân sách khung hình để đảm bảo thực hiện thêm nhiều công việc trước (Id513f) - Hỗ trợ tính năng viết tay bằng bút cảm ứng trên các thiết bị chạy Android U trở lên. (I002e4)
- Nhiều API đã được nâng cấp lên phiên bản ổn định
- Trình phân trang, tính năng chụp nhanh, phần lồng ghép cửa sổ
Phiên bản 1.7.0-rc01
Ngày 21 tháng 8 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-rc01
. Phiên bản 1.7.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố hồi quy xảy ra khi bất kỳ phần tử nào được lấy tiêu điểm bên trong phần tử mẹ có thể lấy tiêu điểm (hoặc có thể nhấp vào) và bị vô hiệu hoá. (b/317561689)
Phiên bản 1.7.0-beta07
Ngày 7 tháng 8 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta07
. Phiên bản 1.7.0-beta07 bao gồm các thay đổi sau.
Sửa lỗi
- Các hàm
SemanticsNodeInteraction
liên quan đến hoạt động nhập văn bảnperformTextReplacement
,performTextInput
vàperformTextClearance
hiện sẽ gửi lỗi xác nhận khi được gọi trênTextFields
chỉ có thể đọc. (I4ae8f) - Khắc phục lỗi hình ảnh trong siêu liên kết. (I23311)
- Khắc phục lỗi đối tượng sửa đổi
contentReceiver
không hoạt động với một số IME. - Tạo tốc độ: Ngăn truyền giá trị NaN trong giao diện người dùng Compose và Foundation.
Phiên bản 1.7.0-beta06
Ngày 24 tháng 7 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta06
. Phiên bản 1.7.0-beta06 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta05
Ngày 10 tháng 7 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta05
. Phiên bản 1.7.0-beta05 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi xử lý các giá trị Nan trong
SnapFlingBehavior
và Pager.
Phiên bản 1.7.0-beta04
Ngày 26 tháng 6 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta04
. Phiên bản 1.7.0-beta04 bao gồm các thay đổi sau.
Sửa lỗi
- Tránh sự cố khi đo lường các dòng văn bản rất lớn (ví dụ: 10 nghìn ký tự) (8157ab)
- Khắc phục lỗi đo lường văn bản rất lớn gây ra sự cố trong
BasicTextField
mới (6b7575) - Huỷ bỏ thay đổi về hành vi trong hoạt động đo lường Hàng/Cột làm gián đoạn việc sử dụng Văn bản trong một số trường hợp (69e8ba)
Phiên bản 1.7.0-beta03
Ngày 12 tháng 6 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta03
. Phiên bản 1.7.0-beta03 bao gồm các thay đổi sau.
Phiên bản 1.7.0-beta02
Ngày 29 tháng 5 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta02
. Phiên bản 1.7.0-beta02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm một API thử nghiệm để định cấu hình hành vi tải trước của
LazyGrids
tương tự như API thử nghiệm hiện có choLazyLists
. Trong đó có tính năng hỗ trợ tải trước các mục trongLazyGrids
lồng nhau. Tương tự nhưLazyListPrefetchStrategy
, chế độ triển khai mặc định là tìm nạp trước 2 mục lồng nhau đầu tiên của mỗi lưới, nhưng bạn có thể định cấu hình chế độ này bằng APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
vàLazyListPrefetchStrategy#onNestedPrefetch
mới. (I591c4) - Đổi tên
SemanticsProperties.Editable
thànhIsEditable
và thay đổiSemanticsPropertyReceiver.editable
thành valisEditable
. Thuộc tính này hiện là boolean và luôn được chỉ định bằng các trường văn bản. (I8acd8) - Di chuyển các giá trị mặc định
basicMarquee
vào đối tượngMarqueeDefaults
. (I12ff6) - Đổi tên tham số
basicMarquee
delayMillis
thànhrepeatDelayMillis
. (I12ff6) - Cập nhật API để tạo kiểu cho đường liên kết: di chuyển
TextLinkStyles
sangTextStyle
và xoáTextDefaults
khỏi material (I5477b)
Sửa lỗi
- Đổi tên
LayoutCoordinates.introducesFrameOfReference
thànhLayoutCoordinates.introducesMotionFrameOfReference
để phản ánh rõ hơn mục đích của lớp này. Đổi tên hàm liên quan để tính toán toạ độ dựa trên cờ đó. (I3a330) - Xoá "Mặc định" khỏi các thuộc tính
MarqueeDefaults
. (I1d8a0) - Xoá "Marquee" khỏi các thuộc tính
MarqueeDefaults
. (Iad4f4) - Xoá
TextLinkStyles
khỏi lớpTextStyle
. Thay vào đó,TextLinkStyles
là một phần của hàm khởi tạoLinkAnntation
và phương thứcAnnotatedString.fromHtml
(I90b2b) - Khắc phục lỗi Pager sẽ chụp nhanh khi hất về phía một giới hạn trong khi đã ổn định ở giới hạn đó. (I9f373, b/339171222)
- BTF2 hiện có các cử chỉ lựa chọn chuột chính xác. (Ibe8c6)
Đóng góp bên ngoài
- Gửi lại nội dung "Tạo loại nội dung tính toán thời gian soạn thư/đo lường dựa trên tính năng tải trước để cải thiện độ chính xác" (Iea622)
- Tạo loại nội dung tính toán thời gian soạn/đo lường dựa trên tính năng tải trước để cải thiện độ chính xác (Ibccb1)
- Cung cấp đối tượng sửa đổi
WindowInsetsPadding
từ nhóm tài nguyên chung (I070b2)
Phiên bản 1.7.0-beta01
Ngày 14 tháng 5 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-beta01
. Phiên bản 1.7.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm lại thuộc tính
KeyboardOptions.shouldShowKeyboardOnFocus
dưới dạng ẩn không dùng nữa để tương thích với tệp nhị phân. (I15cfe) Modifier.anchoredDraggable
hiện đảo ngược delta kéo theo mặc định cho các thành phần có hướng Ngang khi được sử dụng trong bố cục RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
đổi tên thànhhasEqualAnnotations
(I685c0)- Cập nhật API để nhận các đường liên kết theo chủ đề Material trong văn bản. Cụ thể, xoá các phương thức khỏi
TextDefaults
để tạoLinkAnnotations
theo chủ đề và phân tích cú pháp HTML bằng các đường liên kết theo chủ đề. Thay vào đó, hãy thêm một lớpTextLinkStyles
cho phép tạo kiểu cho các đường liên kết dưới dạng tham số cho thành phần kết hợp Văn bản. (I31b93) - Thay thế
onDragStarted
vàonDragStopped
bằng lệnh gọi lại không tạm ngưng. (I59de8)
Sửa lỗi
- Khắc phục lỗi Pager gặp sự cố khi
contentPadding
lớn hơn các quy tắc ràng buộc sắp tới. Giờ đây, Pager sẽ ép buộc các giá trị âm được trả về từPageSize
thành 0. (Iba5d8, b/314008560)
Phiên bản 1.7.0-alpha08
Ngày 1 tháng 5 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha08
. Phiên bản 1.7.0-alpha08 bao gồm các thay đổi sau.
Tính năng mới
- Thêm trình đơn ngữ cảnh nhấp chuột phải vào
BasicTextField
vàSelectionContainer
với các mục cho các thao tác cắt, sao chép, dán và chọn tất cả. (If8c93, Ia2b49, I6f268)
Thay đổi về API
- Giờ đây, bạn có thể đánh dấu các yêu cầu tìm nạp trước
LazyLayout
là khẩn cấp, nghĩa là chúng tôi dự kiến sẽ cần mục này trong khung hình tiếp theo và muốn bỏ qua ngân sách khung hình để đảm bảo thực hiện thêm nhiều công việc trước (Id513f) - Đổi tên
isPositionedByParentWithDirectManipulation
thànhintroducesFrameOfReference
. Xin lưu ý rằng thuộc tính này hiện có hiệu ứng ngược lại, nghĩa là theo mặc định, hầu hếtLayoutCoordinates
đều giới thiệu một khung tham chiếu và chỉ khi được đặt dưới chế độ thao tác trực tiếp thì thuộc tính này mới có giá trị là false. Để truy vấn vị trí chỉ với những vị trí giới thiệu khung tham chiếu, hãy sử dụngpositionInLocalFrameOfReference(...)
. HoặcpositionInLocalLookaheadFrameOfReference
từLookaheadScope
. (Ifc5f7) - Đổi tên
onClicked
thànhonClick
bên trongLinkInteractionListener
(Iaa35c) - Thay đổi lambda hành động cho
getScrollViewportLength
theo ý kiến phản hồi của hội đồng API. (Ibc74a) - Đổi tên các API uỷ quyền viết tay bằng bút cảm ứng. (Ica45f, b/327271923)
- Đổi tên
TextInclusionStrategy.isInside
thànhisIncluded
. Đặt loại dữ liệu trả vềParagraph/MultiParagraph#getRangeForRect()
không thể nhận giá trị rỗng. (I51f26)
Sửa lỗi
- Thêm "Chọn tất cả" vào tất cả trình đơn theo bối cảnh văn bản trong
SelectionContainer
. (Ib750e, b/240143283) - Khắc phục lỗi chụp ảnh màn hình dài cho các vùng chứa cuộn bằng
reverseScrolling=true
. (I7c59c) - Khắc phục lỗi
currentValue
củaAnchoredDraggableState
sẽ thay đổi khi gần đến giới hạn của trạng thái. (Iea30b, b/333846848)
Đóng góp bên ngoài
- Đổi tên
PrefetchExecutor
->PrefetchScheduler
để phản ánh rõ hơn trách nhiệm của lớp này. (Ib9154) - Thêm tính năng hỗ trợ tải trước các mục trong
LazyLists
lồng nhau (ví dụ:LazyColumn
hiển thịLazyRows
lồng nhau). Thay đổi này dự kiến sẽ làm giảm tình trạng giật khung hình trong khi cuộn cho cácLazyLists
này. Chế độ triển khai mặc định là tìm nạp trước 2 mục lồng nhau đầu tiên, tuy nhiên, hành vi này có thể được kiểm soát bằng APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
vàLazyListPrefetchStrategy#onNestedPrefetch
mới. (I51952)
Phiên bản 1.7.0-alpha07
Ngày 17 tháng 4 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha07
. Phiên bản 1.7.0-alpha07 bao gồm các thay đổi sau.
Tính năng mới
- Thêm một đối tượng
TextDefaults
chứa các phương thức để tạoLinkAnnotation
và phân tích cú pháp chuỗi được gắn thẻ HTML áp dụngMaterialTheme
cho các đường liên kết. (I98532, b/139312671) - Hỗ trợ ảnh động xuất hiện và biến mất của mục đã được thêm vào
LazyVerticalGrid
vàLazyHorizontalGrid
. Trước đây, bạn có thể thêm công cụ sửa đổiModifier.animateItemPlacement()
để hỗ trợ ảnh động vị trí (sắp xếp lại). Chúng tôi đã ngừng sử dụng công cụ sửa đổi này và giới thiệu một công cụ sửa đổi không thử nghiệm mới có tên làModifier.animateItem()
. Công cụ này cho phép bạn hỗ trợ cả ba loại ảnh động: xuất hiện (mờ dần), biến mất (mờ dần) và sắp xếp lại. (Ib7d12, b/330510929) - Hỗ trợ ảnh động xuất hiện và biến mất của mục đã được thêm vào
LazyVerticalStaggeredGrid
vàLazyHorizontalStaggeredGrid
. Trước đây, bạn có thể thêm công cụ sửa đổiModifier.animateItemPlacement()
để hỗ trợ ảnh động vị trí (sắp xếp lại). Chúng tôi đã ngừng sử dụng công cụ sửa đổi này và giới thiệu một công cụ sửa đổi không thử nghiệm mới có tên làModifier.animateItem()
. Công cụ này cho phép bạn hỗ trợ cả ba loại ảnh động: xuất hiện (mờ dần), biến mất (mờ dần) và sắp xếp lại. (I69bc9, b/330511290)
Thay đổi về API
- Thêm
ContextMenuColors
vàProvidableCompositionLocal
LocalContextMenuTheme
được liên kết. Bạn có thể sửa đổi màu của trình đơn theo bối cảnh trên các trường văn bản và văn bản có thể chọn bằng cách cung cấp thành phần cục bộ. (Ifa154) - Các đường liên kết văn bản có tuỳ chọn định kiểu trạng thái nhấn ngoài kiểu thông thường, di chuột qua và lấy tiêu điểm. (I5f864, b/139312671)
- Giới thiệu
ViewConfiguration.HandwritingGestureLineMargin
cho cử chỉ viết tay. Hỗ trợ cử chỉ viết tay choBasicTextField
. (Ie6e13, b/325660505) - Xoá
DelegatableNode.scrollIntoView
cho bản phát hành 1.7 vì chúng tôi không có thời gian để hoàn tất việc ổn định phần còn lại của giao diện API liên quan. Hàm này sẽ được giới thiệu lại trong phiên bản 1.8 (I6cf61, b/333421581, b/332900232) - Khi truy vấn toạ độ Bố cục, giờ đây, bạn có thể sử dụng đối số
excludeDirectManipulationOffset
để loại trừ độ dời do Bố cục mẹ đặt ra khi đặt các thành phần con bằngPlaceable.PlacementScope.withDirectManipulationPlacement
. Tương tự, một Bố cục thường xuyên thay đổi vị trí của các thành phần con có thể đặt các thành phần con đó bằngwithDirectManipulationPlacement
(chẳng hạn như Cuộn, được triển khai theo mặc định). Điều này giúp ảnh động dựa trênapproachLayout
trực quan hơn, giờ đây có cơ hội phân biệt độ dời cần tạo ảnh động và độ dời cần áp dụng trực tiếp khi quyết định tạo ảnh động theo phương pháp của họ. (I60ec7) - Giới thiệu
requestScrollToItem
choLazyStaggeredGrid
. Đối với mỗi lượt truyền đo lường, giờ đây, ứng dụng có thể chọn không duy trì chỉ mục dựa trên khoá bằng cách gọirequestScrollToItem
. Việc này không làm thay đổi hành vi hiện có theo bất kỳ cách nào trừ phirequestScrollToItem
được gọi. (I63983) - Giới thiệu
requestScrollToPage
trong Pager. Đối với mỗi lượt truyền đo lường, giờ đây, ứng dụng có thể chọn không duy trì chỉ mục dựa trên khoá bằng cách gọirequestScrollToPage
. Việc này không làm thay đổi hành vi hiện có theo bất kỳ cách nào trừ phirequestScrollToPage
được gọi. (Ic4213) - Ra mắt
requestScrollToItem
choLazyGrids
. Đối với mỗi lượt truyền đo lường, giờ đây, ứng dụng có thể chọn không duy trì chỉ mục dựa trên khoá bằng cách gọirequestScrollToItem
. Việc này không làm thay đổi hành vi hiện có theo bất kỳ cách nào trừ phirequestScrollToItem
được gọi. (I0a7a0) ClickableText
đã được đánh dấu là không dùng nữa. Để thêm đường liên kết vào văn bản, hãy tạo mộtAnnotatedString
cóLinkAnnotation
tương ứng với đường liên kết của bạn và truyềnAnnotatedString
này đến thành phần kết hợpText
(I34d4b, b/323346994)- Ngừng sử dụng
UrlAnnotation
, hãy dùngLinkAnnotation.Url
. Nếu bạn đang sử dụng giao diện Material, hãy sử dụng đối tượngTextDefaults
để tạo chú thích có giao diện Material được áp dụng cho đối tượng đó (I8d180, b/323346545) String.parseAsHtml
được đổi tên thànhAnnotatedString.Companion.fromHtml
(I43dcd)- Thêm các đối số tạo kiểu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) và trình nghe tương tác liên kết vào phương thứcparseAsHtml
. Khi phân tích cú pháp chuỗi được gắn thẻ HTML bằng thẻ<a>
, phương thức này sẽ tạo mộtLinkAnnotation.Url
cho mỗi thẻ như vậy và truyền các đối tượng định kiểu và trình nghe tương tác liên kết đến từng chú thích. (I7c977) LinkAnnotation
hiện sẽ lấy các đối số tạo kiểu dựa trên trạng thái vàLinkInteractionListener
. Thêm chú thích này vàoAnnotatedString
để nhận siêu liên kết. Bằng cách truyềnfocusedState
và/hoặchoveredState
, bạn có thể xác định cấu hình hình ảnh cho các đường liên kết khi chúng được lấy tiêu điểm và/hoặc di chuột qua. (I81ce4, b/139312671)- Cờ tính năng cho ảnh chụp màn hình dài đã bị xoá. (I28648, b/329128246)
LazyColumn
hiện sẽ hiển thị chính xác tiêu đề cố định trong ảnh chụp màn hình dài. (I8d239, b/329296635)- Khắc phục phần lớn các API thử nghiệm còn lại được giới thiệu cùng với
BasicTextField
mới. (I714e2) - Thêm tham số
textObfuscationCharacter
vàoBasicSecureTextField
để kiểm soát ký tự cần sử dụng trong khi làm rối mã nguồn. (I0588b) - Các nguồn
NestedScroll
Kéo và hất đang được thay thế bằngUserInput
vàSideEffect
để phù hợp với định nghĩa mở rộng của các nguồn này, hiện bao gồm cả ảnh động (Hiệu ứng phụ) và Bánh xe chuột và Bàn phím (UserInput
). (I40579) - Giới thiệu
LocalBringIntoViewSpec
, một hành vi cuộn tiêu điểm phụ thuộc vào nền tảng được áp dụng tại lớp đối tượng sửa đổi Scrollable (Cuộn được). (I27aa5, b/317453911) - Đã xoá
TextFieldCharSequence
.TextFieldBuffer.originalValues
được thay thế bằngTextFieldBuffer.originalText
vàTextFieldBuffer.originalSelection
. (I2c7d6) ImeOptions.hintLocales
không còn có thể nhận giá trị rỗng. Nếu bạn muốn truyền một danh sách Ngôn ngữ trống, vui lòng sử dụngLocaleList.Empty
. (Ic5bc4)- Đổi tên
getOffsetFractionForPage
thànhgetOffsetDistanceInPages
. (Ia05e2)
Sửa lỗi
- Khi
InputTransformations
được kết hợp vớinext
,KeyboardOptions
của chúng hiện được hợp nhất đúng cách theo các tuỳ chọn riêng lẻ bằng phương thứcKeyboardOptions.merge
mới. (Ie5304, b/295951492) targetValue
củaAnchoredDraggableState
hiện không xem xét các ngưỡng vị trí nữa. Giờ đây, nó có ngưỡng ngầm định là 50%, nghĩa làtargetValue
thay đổi ở điểm giữa giữa hai neo. (I82c2c)
Đóng góp bên ngoài
- Đổi tên 2 API cuộn (I56a75)
Phiên bản 1.7.0-alpha06
Ngày 3 tháng 4 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha06
. Phiên bản 1.7.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Hỗ trợ ảnh động xuất hiện và biến mất của mục đã được thêm vào
LazyColumn
vàLazyRow
. Trước đây, bạn có thể thêm công cụ sửa đổiModifier.animateItemPlacement()
để hỗ trợ ảnh động vị trí (sắp xếp lại). Chúng tôi đã ngừng sử dụng công cụ sửa đổi này và giới thiệu một công cụ sửa đổi không thử nghiệm mới có tên làModifier.animateItem()
. Công cụ này cho phép bạn hỗ trợ cả ba loại ảnh động: xuất hiện (mờ dần), biến mất (mờ dần) và sắp xếp lại. (I2d7f7, b/150812265) - Giờ đây, ứng dụng của
LazyColumn/LazyRow
có thể chọn không duy trì chỉ mục dựa trên khoá cho lượt truyền đo lường sắp tới bằng cách gọiLazyListState.requestToScroll
không tạm ngưng. (I98036, b/209652366) - Thêm phương thức
parseAsHtml
cho chuỗi được tạo kiểu: phương thức này cho phép chuyển đổi một chuỗi được đánh dấu bằng thẻ HTML thànhAnnotatedString
. Xin lưu ý rằng không phải thẻ nào cũng được hỗ trợ, ví dụ: bạn chưa thể hiển thị danh sách dấu đầu dòng. (I84d3d) - Triển khai tính năng hỗ trợ thử nghiệm cho ảnh chụp màn hình dài trong vùng chứa cuộn Compose bằng API Android chính thức (
ScrollCaptureCallback
). Tính năng này đang trong giai đoạn thử nghiệm và hiện có thể không xử lý chính xác tất cả các trường hợp. Vì lý do đó, tính năng này hiện bị tắt theo mặc định. Để chọn sử dụng, hãy đặt cờComposeFeatureFlag_LongScreenshotsEnabled
thành true. Cờ này sẽ bị xoá trước phiên bản beta 1.7. (I2b055, b/329296471) - Giới thiệu API
GraphicsLayer
mới để cung cấp thêm tính linh hoạt trong việc đặt và kết xuất các thực thểGraphicsLayer
, đồng thời hỗ trợ các tính năng kết xuất nội tại mà không cần phối hợp với các hoạt động triển khai Thành phần kết hợp để chỉ định các thực thể đối tượng sửa đổiGraphicsLayer
.
Thay đổi về API
- Tất cả tham số
KeyboardOptions
hiện có giá trị không xác định theo mặc định. Thêm phương thứcKeyboardOptions.merge
. - Đổi tên
KeyboardOptions.autoCorrect
thànhautoCorrectEnabled
và đặt là có giá trị rỗng, trong đó giá trị rỗng cho biết không có giá trị nào được chỉ định. (Ia8ba0, b/295951492) - Đổi tên
outOfBoundsPageCount
thànhbeyondViewportPageCount
. (I129c6) - Thay đổi
fun ClipEntry.getMetadata()
thànhval ClipEntry.clipMetadata
. (I50155) - Đã xoá
TextFieldState.valueAsFlow()
. Ưu tiên sử dụngsnapshotFlow { state.text }
hoặcsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - Sắp xếp lại các tham số
InputTransformation.transformInput
. XoáoriginalValue: TextFieldCharSequence
. Thay vào đó,TextFieldBuffer
hiện mang giá trị này với cùng tên. Đồng thời, xoá thông sốvalueWithChanges: TextFieldBuffer
.TextFieldBuffer
hiện là phạm vi trình nhận trên hàm. (I919cc) - Biến thể
BasicTextField(state)
vàBasicSecureTextField
hiện sử dụngKeyboardActionHandler
thay vìKeyboardActions
để xử lý các thao tác do bàn phím phần mềm thực hiện. (I58dda) - API uỷ quyền viết tay bằng bút cảm ứng để hỗ trợ viết tay bằng bút cảm ứng trên các trường nhập văn bản "giả". (I9c09c, b/327271923)
- Đổi tên
KeyboardOptions.shouldShowKeyboardOnFocus
thànhshowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Xoá tham số
hintMediaTypes
khỏiModifier.contentReceiver
. Nhà phát triển nên kiểm tra loại nội dung nghe nhìn củaTransferableContent
đã nhận được vì loại này có thể không tương thích vớihintMediaTypes
đã định cấu hình. (I82f99) - Sắp xếp lại các tham số của
BasicSecureTextField
. Xoá các tham sốkeyboardType
vàimeAction
để chuyển sang lớpKeyboardOptions
đầy đủ, đồng thời giữ nguyên các giá trị mặc định phù hợp vớiBasicSecureTextField
. Đồng thời, xoá thông sốscrollState
. (Ibbfa9) - Loại của
TextFieldState.text
được thay đổi từTextFieldCharSequence
thànhCharSequence
. Do đó, thêmTextFieldState.selection: TextRange
vàTextFieldState.composition: TextRange?
để đọc trực tiếp các giá trị lựa chọn và thành phần hiện tại từ đối tượng trạng thái. - Đã xoá
TextFieldState.forEachTextValue
. (Idb2a2) - Xoá các hàm
ClipboardManager.getClipMetadata
vàClipboardManager.hasClip
. Vui lòng sử dụngclipEntry.getMetadata()
để đọc siêu dữ liệu của mục clip hiện tại. Ngoài ra, hãy kiểm tra kết quả củaClipboardManager.getClip
xem kết quả có rỗng hay không để biết liệu Bảng nhớ tạm có một đoạn văn bản hiện tại hay không. (I50498) ClipboardManager.setClip
hiện chấp nhận giá trị rỗng để có thể xoá Bảng nhớ tạm. (I7d2e9)ReceiveContentListener
được chuyển đổi thành giao diện hàm. Ngoài ra, phương thức nạp chồngModifier.receiveContent
nhận lambda cũng bị xoá vìReceiveContentListener
hiện là giao diện hàm.Modifier.receiveContent
đổi tên thànhModifier.contentReceiver
. (I1e6af)- Đổi tên
TransferableContent.consumeEach
thànhTransferableContent.consume
. (I1e462) rememberTextFieldState
đã chuyển sang API ổn định. (I37999)
Sửa lỗi
- Khắc phục lỗi biến thể
BasicTextField(state)
không hoạt động với bàn phím CJK(dựa trên thành phần). (I54425) - Khắc phục lỗi
Modifier.dragAndDropTarget()
có thể tham chiếu đến dữ liệu cũ trong một số trường hợp nhất định khi sử dụng lạiModifier.Node
. (I05bb1) - Huỷ bỏ một thay đổi gần đây đối với hợp đồng, trong đó các lệnh gọi
AnchoredDraggableState#anchoredDrag
sẽ chụp nhanh ở cuối thao tácanchoredDrag
. (I95715)
Phiên bản 1.7.0-alpha05
Ngày 20 tháng 3 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha05
. Phiên bản 1.7.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá thành phần
LocalTextLinkStyle
thử nghiệm cục bộ để tạo kiểu siêu liên kết. (Iebfa7) - Xoá chế độ ghi đè thử nghiệm của
BasicText
bằng đối sốonLinkClicked
. Chúng tôi sẽ cung cấp một API thay thế để hỗ trợ đường siêu liên kết trong tương lai. (I107d5) - Xoá các phương thức và thuộc tính liên quan đến Mã điểm trong
TextFieldState
vàTextFieldBuffer
. Đồng thời, xoá hậu tốinChars
khỏi các API còn lại liên quan đến lựa chọn và thành phần. (Ief7ce) currentValue
củaAnchoredDraggable
hiện sẽ cập nhật khi đi qua một điểm neo. Sử dụngsettledValue
để nhận ngữ nghĩacurrentValue
trước đó, chỉ cập nhật khi đặt tại một neo. Tiến trình hiện được hiển thị dưới dạng một hàm (yêu cầu điểm bắt đầu và điểm kết thúc) thay vì một thuộc tính. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
được chuyển sang phiên bản ổn định. (I9582b)- Ra mắt
InterceptPlatformTextInput
để giúp viết các bài kiểm thử liên quan đến IME cấp thấp và các trường hợp sử dụng IME cấp thấp khác. Ngừng sử dụngPlatformTextInputTestOverride
. (I862ed, b/322680547) - Chia
restrictedConstraints()
thành hai phương thức:fitPrioritizingWidth()
vàfitPrioritizingHeight()
(I6d7fd)
Đóng góp bên ngoài
- Thêm 2 API mới
isLastScrollForward
/isLastScrollBackward
để kiểm tra hướng cuộn cho thao tác cuộn mới nhất, trả về giá trị false nếu chưa có thao tác cuộn nào. (I63a0e)
Phiên bản 1.7.0-alpha04
Ngày 6 tháng 3 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha04
. Phiên bản 1.7.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Hỗ trợ tính năng viết tay bằng bút cảm ứng trên các thiết bị chạy Android U trở lên. (I002e4)
- Thêm
hintLocales
vàoKeyboardOptions
để cung cấp choTextFields
khả năng gợi ý IME bằng các ngôn ngữ cụ thể để đặt trước ngôn ngữ ưu tiên. (Id18c2) - Xoá các phương thức nạp chồng
BasicTextField2
vàBasicSecureTextField
thử nghiệm đã lấy tham sốvalue: String
vàonValueChange: () -> String
. (I568b4) - Thêm một hàm
applySemantics
không bắt buộc vàoInputTransformation
để ảnh hưởng đến ngữ nghĩa củaBasicTextField2
mà hàm này được áp dụng. (I74a2f, b/170648072) - Trong CL này, chúng ta sẽ thêm thao tác ngữ nghĩa
GetScrollViewportLength
để có thể chuyển thông tin về các thành phần đang cuộn trong Compose đến hệ thống a11y. CL này cũng áp dụng cách sử dụng thuộc tính nói trên trong Danh sách có thể cuộn của Foundation. (Ic5fa2) BasicTextField2
đổi tên thànhBasicTextField
. (Ie5713)FocusRequester.createRefs
hiện đã ổn định (I4d92c, b/261436820)- Giới thiệu
DelegatableNode.scrollIntoView()
để cho phép các nút đối tượng sửa đổi tạo trực tiếp các yêu cầuscrollIntoView
. (I2b3b7, b/299939840) - Giới thiệu
DelegatableNode.requireView()
để cho phép các nút đối tượng sửa đổi lấyView
Android hiện tại mà không cần đọc thành phần cục bộ. (I40768) - Giới thiệu thông tin bố cục theo ngữ cảnh trong Phạm vi hàng của luồng theo ngữ cảnh và Phạm vi cột của luồng theo ngữ cảnh, bao gồm chỉ mục dòng, vị trí và các quy tắc ràng buộc về chiều rộng và chiều cao tối đa để giữ nguyên vị trí đã chỉ định. Các mục vượt quá chiều rộng/chiều cao tối đa có thể chuyển sang dòng tiếp theo hoặc bị bỏ qua dựa trên chế độ cài đặt tràn. (Id13f8, b/292114798)
Sửa lỗi
- Khắc phục lỗi trong một số điều kiện nhất định, việc bật/tắt các thuộc tính
enabled
hoặcreadOnly
củaTextField
sẽ gây ra sự cố. (Iae17b)
Phiên bản 1.7.0-alpha03
Ngày 21 tháng 2 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha03
. Phiên bản 1.7.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Giới thiệu
DelegatableNode.requireLayoutCoordinates()
để lấyLayoutCoordinates
hiện tại củaModifier.Node
mà không cần ghi đèonPlaced
và tự lưu trữ toạ độ trong một thuộc tính. (Ia8657) - Giới thiệu
DelegatableNode.currentLayoutCoordinates
để lấyLayoutCoordinates
hiện tại củaModifier.Node
mà không cần ghi đèonPlaced
và tự lưu trữ toạ độ trong một thuộc tính. (Iaebaa) - Các tính năng tối ưu hoá hiệu suất trong
DraggableAnchors
doAnchoredDraggable
sử dụng. (I89cff) BasicTextField2
và các API có liên quan trong góiandroidx.compose.foundation.text2
được chuyển sangandroidx.compose.foundation.text
. (I9f635)BasicTextField2
không còn chấp nhận tham sốCodepointTransformation
. Sử dụngBasicSecureTextField
hoặcOutputTransformation
. (Id34ff)- Thêm phương thức để chỉ so sánh chú thích của hai
AnnotatedStrings
. (I32659) - Giới thiệu
ContextualFlowRow
vàFlowRow
/Column
nâng cao vớiMaxLines
vàOverflow
. Chúng tôi rất vui mừng được thông báo về các điểm cải tiến đối vớiFlowRow
vàFlowColumn
thử nghiệm, hiện có tính năng hỗ trợmaxLines
và tràn cùng với sự ra mắt củaContextualFlowRow
vàContextualFlowColumn
. Bản cập nhật này được thiết kế để cung cấp các thành phần tối ưu về hiệu suất, trong đóContextualFlow*
phù hợp với một số lượng lớn mục sử dụng cấu hìnhmaxLines
nhỏ và các nút xem thêm +N động, cònFlowRow
vàFlowColumn
phù hợp với một số lượng nhỏ mục, dưới 100 mục. Quan trọng: Để duy trì hành vi hiện có trongFlowRow
hoặcFlowColumn
, trong đó tất cả các mục được kết hợp bất kể chúng có vừa với trục chéo tối đa hay không, hãy đặtoverflow
thànhFlowRowOverflow.Visible
hoặcFlowColumnOverflow.Visible
trong quá trình khởi chạy. Khám pháContextualFlowRowSample
vàFlowRowSample
để xem ví dụ về cách sử dụng các tính năng mới này. (Ib9135, b/293577082)
Sửa lỗi
- Ảnh động con trỏ không còn yêu cầu khung giữa trạng thái bật và tắt. (Ia2253)
- Các hàm khởi tạo sao chép không dùng nữa của
KeyboardOptions
hiện sẽ sao chép chính xác tất cả các thuộc tính. (If12de)
Phiên bản 1.7.0-alpha02
Ngày 7 tháng 2 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha02
. Phiên bản 1.7.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
HorizontalPager
,VerticalPager
vàPagerState
được nâng cấp lên phiên bản ổn định. (I67660, b/316966909)- Thêm thành phần
LocalTextLinkStyle
cục bộ cho phép thay đổi kiểu của các đường liên kết trong Văn bản trên ứng dụng. Nếu đang sử dụng giao diện của riêng mình trong ứng dụng, bạn nên đặt thành phần này cục bộ theo giao diện của mình. Khi sử dụng giao diện Material, màu của đường liên kết theo mặc định sẽ được đặt thành màu chính của Material. (I7eb10) - Ra mắt đối tượng sửa đổi
receiveContent
để cung cấp cho nhà phát triển một cách nhận nội dung đa dạng thức trong Jetpack Compose. receiveContent
tích hợp vớiBasicTextField2
để chấp nhận nội dung đa dạng thức do bàn phím phần mềm cung cấp hoặc thông qua thao tác dán vào Bảng nhớ tạm. (I81b72)- Trong thay đổi này, chúng tôi sẽ thay thế
SnapFlingBehavior
bằngTargetedFlingBehavior
trong trình phân trang để mở khoá các trường hợp sử dụng khác và mang lại sự linh hoạt hơn. (I762ea) - Trong thay đổi này, chúng tôi sẽ phát hành phiên bản ổn định của API chụp nhanh. Chúng tôi cũng đang dọn dẹp một số mã kiểm thử và thêm các mẫu khác vào tính năng Chụp nhanh. (Id8da9)
- Giới thiệu
TargetedFlingBehavior
, mộtFlingBehavior
cho phép truyền thông tin về trạng thái của ảnh động đang diễn ra và độ dời cuộn mục tiêu của ảnh động đó. (I6a207)
Sửa lỗi
BasicTextField2
hiện giữ con trỏ trong chế độ xem trong khi nhập khi con trỏ đã được cuộn ra khỏi chế độ xem hoặc sẽ di chuyển ra khỏi chế độ xem do hoạt động nhập. (Ieb856, b/237190748)
Đóng góp bên ngoài
- Thêm một API thử nghiệm để định cấu hình hành vi tải trước của LazyLists. (I022a4)
Phiên bản 1.7.0-alpha01
Ngày 24 tháng 1 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.7.0-alpha01
. Phiên bản 1.7.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Thêm
Indication API
mới,IndicationNodeFactory
. Điều này giúp việc triển khaiIndication
hiệu quả hơn so với APIrememberUpdatedInstance
trước đó (hiện không còn được dùng nữa). Để biết thông tin di chuyển, hãy xem developer.android.com. clickable / combinedClickable / selectable / toggleable
hiện chấp nhận tham sốMutableInteractionSource
có thể nhận giá trị rỗng. Nếu giá trị rỗng vàIndication
được cung cấp làIndicationNodeFactory
, thìIndication
chỉ có thể được tạo từng phần khi cần, giúp cải thiện hiệu suất. Nếu không di chuyển lên trên và sử dụngMutableInteractionSource
, bạn nên truyền giá trị rỗng.
Thay đổi về API
- Giới thiệu
DecayAnimation
trongAnchoredDraggable
, thay đổi này sẽ thêm tham sốdecayAnimationSpec
vàoAnchoredDraggable
cho phép sử dụng ảnh động giảm dần khi đặt vào một trong các neo. Thay đổi này cũng bao gồm việc đổi tênanimationSpec
hiện có thànhsnapAnimationSpec
để giúp hiểu rõ trường hợp sử dụng của từng thông số kỹ thuật. - Bạn có thể sử dụng
BasicTextField2
để thử nghiệm. Tính năng của lớp này phải tương đương vớiBasicTextField
và hành vi phải sẵn sàng cho bản phát hành chính thức. Tuy nhiên, API này vẫn đang trong giai đoạn thử nghiệm. Trước khi ổn định, lớp này sẽ được đổi tên thànhBasicTextField
và chuyển vào cùng một gói. - Giới thiệu bản nháp đầu tiên của API
OutputTransformation
choBasicTextField2
. API này thay thế hầu hết các trường hợp sử dụng củaVisualTransformation
trongBasicTextField
cũ. Tuy nhiên, API này chưa hoàn chỉnh và một số tính năng sẽ không hoạt động đúng cách. Chúng tôi rất mong nhận được ý kiến phản hồi của bạn về khả năng hữu dụng của API cho các trường hợp sử dụng của bạn. (aosp/2708848) - Ra mắt
LinkAnnotation
cho phép thêm đường liên kết và nội dung có thể nhấp vào văn bản. Tính năng đường liên kết chưa hoàn thiện và chúng tôi sẽ có thêm các thay đổi về API. - Ra mắt đối tượng sửa đổi
receiveContent
để cung cấp cho nhà phát triển một cách nhận nội dung đa dạng thức trong Jetpack Compose. receiveContent
tích hợp vớiBasicTextField2
để chấp nhận nội dung đa dạng thức do bàn phím phần mềm cung cấp hoặc thông qua thao tác dán từ Bảng nhớ tạm.KeyboardOptions.shouldShowKeyboardOnFocus
cho phép bạn tắt hành vi mặc định củaBasicTextField
khi yêu cầu bàn phím phần mềm khi có tiêu điểm.TextInputService
vàLocalTextInputService
hiện không dùng nữa. Thay vào đó, hãy sử dụngPlatformTextInputModifierNode
để tích hợp trực tiếp với các API IME của nền tảng. (aosp/2862698)- Ngừng sử dụng
Indication#rememberUpdatedInstance
. Phương thức này gây ra mức phạt hiệu suất cao và không thể tránh khỏi, đồng thời ngăn chặn các hoạt động tối ưu hoá khác. Thay vào đó, bạn nên sử dụng APIIndicationNodeFactory
mới.
Sửa lỗi
BasicTextField
hiện sẽ xác thực trước một số ít ánh xạ độ dời khiVisualTransformation
được truyền. Điều này giúp phát hiện các lỗi lập trình phổ biến dẫn đến các trường hợp ngoại lệ không thể khôi phục trong các lần đo lường hoặc vẽ sau này. Bằng cách gửi trong quá trình soạn thư, các nhà phát triển có nhiều khả năng sẽ thấy những lỗi này trong quá trình phát triển, giúp tránh sự cố trong bản phát hành chính thức. (I0fd42)VisualTransformation
sẽ không gửi nếu bạn trả về một chỉ mục không hợp lệ cho một chỉ mục không hợp lệ (b/316401857 )
Phiên bản 1.6
Phiên bản 1.6.8
Ngày 12 tháng 6 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.8
. Phiên bản 1.6.8 bao gồm các thay đổi sau.
Phiên bản 1.6.7
Ngày 1 tháng 5 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.7
. Phiên bản 1.6.7 bao gồm các thay đổi sau.
Phiên bản 1.6.6
Ngày 17 tháng 4 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.6
. Phiên bản 1.6.6 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi trong một số điều kiện nhất định, việc bật/tắt các thuộc tính
enabled
hoặcreadOnly
củaTextField
sẽ gây ra sự cố. (Iae17b)
Phiên bản 1.6.5
Ngày 3 tháng 4 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.5
. Phiên bản 1.6.5 bao gồm các thay đổi sau.
Sửa lỗi
- Thêm nhật ký gỡ lỗi vào các lỗi khó tái hiện trong Hàng/Cột: (b/300280216 và b/297974033)
Phiên bản 1.6.4
Ngày 20 tháng 3 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.4
. Phiên bản 1.6.4 bao gồm các thay đổi sau.
Sửa lỗi
- Cử chỉ chọn nhấn và giữ rồi kéo ra khỏi giới hạn bố cục của văn bản trong khung đầu tiên của thao tác kéo sẽ không còn gặp sự cố nữa. (Icdf90, b/325307463)
Phiên bản 1.6.3
Ngày 6 tháng 3 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.3
. Phiên bản 1.6.3 bao gồm các thay đổi sau.
Phiên bản 1.6.2
Ngày 21 tháng 2 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.2
. Phiên bản 1.6.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi
AnimateContentSize
không đặt lại đúng cách. (I07051) - Khắc phục vấn đề
intrinsicHeight
của văn bản sẽ bị lưu vào bộ nhớ đệm quá mức trong một số trường hợp. (3cd398, b/217910352)
Phiên bản 1.6.1
Ngày 7 tháng 2 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.1
. Phiên bản 1.6.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục biện pháp đo lường lưới theo kiểu so le khi cuộn quá giới hạn. (bffc39)
- Thêm tính năng kiểm tra bố cục có kích thước lớn. (e74af5)
- Sửa vị trí của các mục có kích thước 0 ở đầu lưới so le. (785f94)
- Gọi lệnh gọi lại onRelease theo thứ tự giống như onForgotten. (31ce3b)
Phiên bản 1.6.0
Ngày 24 tháng 1 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.0
. Phiên bản 1.6.0 bao gồm các thay đổi sau.
Các thay đổi quan trọng kể từ phiên bản 1.5.0
- Công cụ sửa đổi mới
Modifier.anchoredDraggable
giúp bạn có thể kéo và tạo ảnh động giữa các tập hợp neo được xác định trước. Công cụ sửa đổi này dùng để thay thế choModifier.swipeable
. Tìm hiểu cách sử dụng và di chuyển từModifier.swipeable
trong hướng dẫn di chuyển. - Thêm chức năng kéo và thả giữa các ứng dụng và thành phần. Tham khảo
DragAndDropTarget
,Modifier.dragAndDropSource
và các API khác để bắt đầu Modifier.draggable2D
là đối tượng sửa đổi mới cho phép hỗ trợ tính năng kéo 2D dễ dàng. Xem phần Mẫu.- Thêm
AndroidExternalSurface
vàAndroidEmbeddedExternalSurface
để dễ dàng thêm các thành phần do giao diện điều khiển trong Compose - Nhiều thay đổi và điểm cải tiến về API trong
Pager
vàsnapFlingBehaviour
- Nhiều API tiêu điểm, văn bản và phần lồng ghép đã được chuyển sang API ổn định
Phiên bản 1.6.0-rc01
Ngày 10 tháng 1 năm 2024
Phát hành androidx.compose.foundation:foundation-*:1.6.0-rc01
. Phiên bản 1.6.0-rc01 bao gồm các thay đổi sau.
Thay đổi về API
- Xoá hàm khởi tạo tiện ích
DragAndDropTarget()
. Tạo một thực thể mới bằngobject: DragAndDropTarget {}
. (I32318)
Phiên bản 1.6.0-beta03
Ngày 13 tháng 12 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-beta03
. Phiên bản 1.6.0-beta03 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố ảnh hưởng đến văn bản rất lớn được đo lường bằng các điều kiện ràng buộc vô hạn. (I1a7df, b/312294386)
PlatformImeOptions
hiện là một lớp cụ thể thay vì một giao diện. (If40a4)
Phiên bản 1.6.0-beta02
Ngày 29 tháng 11 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-beta02
. Phiên bản 1.6.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi
canScroll
không được cập nhật sau khi cuộn chỉ bố cục lại. (I60a86) - Sửa lỗi cho
Modifier.animateItemPlacement()
vàLookaheadScope
sau khi cuộn một chút. (I3a2b7)
Phiên bản 1.6.0-beta01
Ngày 15 tháng 11 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-beta01
. Phiên bản 1.6.0-beta01 bao gồm các thay đổi sau.
Thay đổi về API
- Đối tượng sửa đổi
DragAndDropTarget
hiện lấyDragAndDropTarget
nhận một cách rõ ràng và có một lambda để chọn tham gia phiên kéo và thả. Hiện có hai hàm nhà máy choDragAndDropModifierNode
. Một để nhận dữ liệu chuyển và một để chuyển dữ liệu (I69481) - Cập nhật
maximumFlingVelocity
để biểu thị dưới dạng Float. Cập nhật tài liệu để làm rõ hơn về tính năng hợp nhấtmaximumFlingVelocity
. (I8adc7) onDragAndDropStart
trong nhà máyDragAndDropModifierNode
đã được đổi tên thànhacceptDragAndDropTransfer
.acceptsDragAndDropTransfer
đã được thêm vàodragAndDropTarget
Modifier
để chấp nhận từ một phiên kéo và thả. Biểu thức lambda này trả về mộtDragAndDropTarget
khả thi nếu bạn quan tâm đến phiên kéo và thả. Các lambda khác để xử lý sự kiện kéo đã được thay thế bằng lambda này.thêm một hàm nhà máy
DragAndDropTarget
để nhận từ các phiên kéo và thả (Iebf3a)Việc hiển thị
startDragImmediately
trongAnchoredDraggable
sẽ giúp bạn kiểm soát việc phát hiện cử chỉ kéo khi sử dụng. Bạn nên đặt thuộc tính này khi tiện ích đang tạo ảnh động đến một neo mục tiêu. Xem phần Mẫu. (Ie6d13, b/285139987)API chú giải công cụ của Foundation hiện là
@ExperimentalFoundationApi
(I30b0b)Xoá
DragAndDropInfo
vì loạiDragAndDropModifierNode.drag
hiện lấy các tham số chotransferData
, kích thước trang trí và hàm lambdaDrawScope
trang trí kéoDragAndDropTarget
có các phương thức cho các sự kiện kéo và thả cụ thể thay vì là một phương thức trừu tượng duy nhấtonDragAndDropEvent
trong hàm nhà máy choDragAndDropModifierNode
đã được đổi tên thànhonDragAndDropStart
để thông báo rõ ràng hơn rằngDragAndDropTarget
được cung cấp chỉ hợp lệ cho một phiên kéo và thả nhất địnhXoá
DragAndDropEventType
(I645b1)Đổi tên
PlatformTextInputModifierNode.runTextInputSession
thànhestablishTextInputSession
. (I03cd0)Thay thế
OriginalText
bằngTextSubstitution
. (Ifa5a8)Đổi tên
PlatformTextInputModifierNode.textInputSession
thànhrunTextInputSession
. (Ie9c6b)Các thành phần con của
SubcomposeLayout
(và các bố cục nhưLazyColumn
dựa trên thành phần con đó) được giữ lại để sử dụng lại trong tương lai được coi là đã bị vô hiệu hoá. API kiểm thửassertIsDeactivated()
mới được giới thiệu để kiểm thử các nút như vậy. Theo mặc định, các API kiểm thử còn lại sẽ lọc ra các nút đã huỷ kích hoạt. (I2ef84, b/187188981)Đổi tên tham số
clippingEnabled
củaModifier.magnifier
thànhclip
.Tham số
magnifierCenter
củaModifier.magnifier
được đặt thành rỗng để giữ nguyên hành vi mặc định. (I6aa66)Các API
SwipeToReveal
của Material (dành cho Thẻ và Khối) hiện dựa vào API dựa trên khe (như Compose đề xuất) thay vì các thực thể dựa trên lớp dữ liệu để tạo các khe đó. Đây là một thay đổi có thể gây lỗi. Vui lòng xem mã minh hoạ và mã mẫu để biết ví dụ về cách sử dụng API mới. (Ia8943)
Sửa lỗi
- Triển khai hàm bằng và mã băm cho
PageSize.Fixed
. (Ie3ede, b/300134276) - Khắc phục lỗi khiến bố cục
BasicText
không thu nhỏ khiminWidth
thay đổi vàminWidth
nhỏ hơn các quy tắc ràng buộc đo lường ban đầumaxWidth
(Idb19c) - Thêm tính năng hỗ trợ trình kết xuất cho hiệu ứng Chuyển màu quét trong
ArcLine
. (I4d5bb) - Khắc phục vấn đề về khả năng tương thích nhị phân với thay đổi về Phần lồng ghép cửa sổ (Iee695)
- Xoá lớp lõi Material cho Khối/Nút Material3 vì các điểm chuẩn vi mô cho thấy hiệu suất tốt hơn khi không có lớp này. (I55555)
Phiên bản 1.6.0-alpha08
Ngày 18 tháng 10 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha08
. Phiên bản 1.6.0-alpha08 bao gồm các thay đổi sau.
Tính năng mới
Modifier.draggable2D
là đối tượng sửa đổi mới cho phép hỗ trợ tính năng kéo 2D dễ dàng. Xem Mẫu (Id95f5, b/214412658)
Thay đổi về API
Modifier.dragAndDrawSource
đã đổi tên lambdaonDrawDragShadow
thànhdrawDragDecoration
vàDragAndDropInfo
đã đổi tên tham số kích thước thànhdragDecorationSize
. (Id0e30, b/303904810)- Đổi tên tham số
decorationBox
củaBasicTextField2
thànhdecorator
. Loại của giao diện này cũng được thay đổi thành giao diện thú vị tương đươngTextFieldDecorator
. (I23c1c)
Sửa lỗi
- Cải thiện tài liệu về
BasicTextField
liên quan đến các yêu cầu củaonValueChange
. (I90fc9, b/160257648)
Phiên bản 1.6.0-alpha07
Ngày 4 tháng 10 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha07
. Phiên bản 1.6.0-alpha07 bao gồm các thay đổi sau.
Thay đổi về API
- Giới thiệu
PlatformTextInputMethodTestOverride
để viết mã kiểm thử cho trình chỉnh sửa văn bản tuỳ chỉnh. (Id159b) - Đổi tên
GraphicsSurface
thànhAndroidExternalSurface
(I11680) - Thêm cờ tạm thời
DisableNonLinearFontScalingInCompose
để tắt tính năng điều chỉnh tỷ lệ phông chữ phi tuyến tính. ĐặtDisableNonLinearFontScalingInCompose = true
trong các bài kiểm thử nếu bạn cần thời gian để dọn dẹp. Cờ này sẽ bị xoá trong Compose 1.6.0-beta01. (Ic9486) - Thêm các bộ sưu tập
ColorList
vàColorSet
để tránh phân bổ. (I744bd) - Thay đổi này sẽ xoá
shortSnapVelocityThreshold
đã được chuyển thành thông tin chi tiết về cách triển khai của các cách triển khaiSnapLayoutInfoProvider
. (I65f6d) - Thêm Đối tượng sửa đổi
dragAndDropSource
để bắt đầu các phiên kéo và thả, cũng như Đối tượng sửa đổidragAndDropTarget
để nhận từ các phiên kéo và thả (Ib7828, b/286038936) - Cập nhật tài liệu và phương thức vị trí
SnapPositionInLayout
. Giới thiệu khoảng đệm nội dung cho phương thức vị trí trongSnapPositionInLayout
. (Id7938, b/300116110) - Thêm
UndoState
vàoTextFieldState
để có thể huỷ/làm lại các thay đổi do người dùng thực hiện. (Icc024)
Sửa lỗi
- Khắc phục lỗi
basicMarquee
không tạo ảnh động sau khi thay đổi tốc độ. (Id2e77, b/297974036)
Phiên bản 1.6.0-alpha06
Ngày 20 tháng 9 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha06
. Phiên bản 1.6.0-alpha06 bao gồm các thay đổi sau.
Tính năng mới
- Trình bao bọc Thành phần kết hợp mới cho
SurfaceView
,TextureView: GraphicsSurface()
vàEmbeddedGraphicsSurface()
. Đây là một API thử nghiệm và có thể thay đổi cũng như sửa đổi. (I9ddb2) Modifier.magnifier()
hiện là một API ổn định. Điều này bao gồm việc xoáMagnifierStyle
để chuyển sang sử dụng các tham số nội tuyến trong chính đối tượng sửa đổi. (I83bec, b/298381260, b/262367109, b/261438887)
Thay đổi về API
- Giới thiệu
updateCurrentPage
vàupdateTargetPage
trongScrollScope
, đây là những phần cuối cùng cần thiết để cho phép tuỳ chỉnh tính năng cuộn ảnh động thông quaPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Xoá mật độ khỏi
SnapFlingBehavior
. Tất cả các phương thức triển khaiSnapLayoutInfoProvider
đều có cách truy cập vào mật độ, phạm vi của trình thu có thể bị xoá, điều này sẽ giúp việc triển khai cảSnapFlingBehavior
vàSnapLayoutInfoProviders
trở nên ít phức tạp hơn. (I153c3) - Nhiều đối tượng sửa đổi hơn được đánh dấu là ổn định. (I56af1, b/298046462)
- Đã xóa
SnapStepSize
khỏiSnapLayoutInfoProvider
. Bạn nên thực hiện phép tính bằng cách sử dụng thông tin Bố cục và cung cấp thông qua phương pháp hoặc độ lệch chụp nhanh. (If320c)
Thay đổi về hành vi
- Compose hiện sử dụng tỷ lệ phông chữ phi tuyến tính để dễ đọc và dễ tiếp cận hơn. Khi tỷ lệ phông chữ > 100% trong phần cài đặt hệ thống, văn bản nhỏ sẽ tăng kích thước như bình thường, nhưng văn bản đã lớn sẽ chỉ tăng một chút. Ngoài ra, chiều cao dòng được xác định trong SP sẽ tự động điều chỉnh để giữ tỷ lệ với chiều cao dự kiến theo tỷ lệ 100%. Hãy xem Các phương pháp hay nhất về việc điều chỉnh tỷ lệ phông chữ để biết thêm thông tin. (I11518)
Sửa lỗi
- Xoá việc sử dụng
rememberSaveable
cho chú giải công cụ. (Icc131, b/299500338)
Phiên bản 1.6.0-alpha05
Ngày 6 tháng 9 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha05
. Phiên bản 1.6.0-alpha05 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm các phương thức nạp chồng cho
BasicSecureTextField
chấp nhận một giá trị không thể thay đổi và một lệnh gọi lại để thay đổi giá trị đó, giống như APIBasicTextField
hiện tại. (Ia4882) - Thêm
Modifier.preferKeepClear()
để đánh dấu là thành phần kết hợp ưu tiên tránh xa cửa sổ nổi trên API 33 trở lên. (Ib51d5, b/297260115) - Tốc độ hất trong các thành phần Chế độ xem như
ScrollView
vàRecyclerView
được giới hạn ởViewConfiguration.ScaledMaximumFlingVelocity
. Compose hiện chứa phiên bảnmaximumFlingVelocity
riêng, hiện áp dụng choDraggable
. (Ibf974) - Xoá các phương thức nạp chồng
Pager
vàPagerState
không dùng nữa. (Iea07e) - Thêm
BasicTooltipBox
vàocompose.foundation
và cập nhậtPlainTooltipBox
vàRichTooltipBox
để sử dụngTooltipBox
với các thành phần kết hợpPlainTooltip
vàRichTooltip
mới. (I79e1d)
Phiên bản 1.6.0-alpha04
Ngày 23 tháng 8 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha04
. Phiên bản 1.6.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm giao diện
ReusableComposition
để quản lý vòng đời và sử dụng lại các lần kết hợp phụ. (I812d1, b/252846775) Modifier.focusGroup
đã được nâng cấp lên API ổn định. (I7ffa3)- Thêm các phương thức nạp chồng cho
BasicTextField2
chấp nhận một giá trị không thể thay đổi và một lệnh gọi lại để thay đổi giá trị đó, giống như APIBasicTextField
hiện tại. (I3f2b8) GridItemSpan::currentLineSpan
hiện là một API ổn định. (Icc29c)- Canvas chấp nhận
contentDescription
hiện là một API ổn định. (Ib3d29) - Giới thiệu
viewportSize
trongScrollState
, một cách để biết kích thướcviewPort
của thành phần sử dụngScrollState
sau khi quá trình đo lường diễn ra. (I8b85a, b/283102682) - Khắc phục vấn đề trong đó tính năng tải trước trong Pager không khớp với hành vi trong Khung hiển thị. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
hiện đã ổn định.- API
Deprecated Modifier.consumedWindowInsets
hiện đã bị xoá. Thay vào đó, hãy sử dụngModifier.consumeWindowInsets
. (Id72bb)
- API
Phiên bản 1.6.0-alpha03
Ngày 9 tháng 8 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha03
. Phiên bản 1.6.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm hàm quá tải của
LazyLayout
, hàm này chấp nhận lambda củaLazyLayoutItemProvider
, chứ không phải đối tượng đơn giản như trước đây. Hàm quá tải trước đây không còn được dùng nữa. (I42a5a) - Thêm tính năng hỗ trợ định cấu hình
privateImeOptions
(Idb772)
Sửa lỗi
- Khắc phục các trường văn bản hiển thị bàn phím và có thể chỉnh sửa khi
readOnly
là true. Ngoài ra, khắc phục lỗi bàn phím không hiển thị khireadOnly
được thay đổi từ true thành false trong khi được lấy tiêu điểm. (I34a19, b/246909589)
Phiên bản 1.6.0-alpha02
Ngày 26 tháng 7 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha02
. Phiên bản 1.6.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Giới thiệu
PagerLayoutInfo
với thông tin được thu thập sau khi một biện pháp đo lường được truyền trongPager
. Đồng thời, chúng tôi cũng giới thiệuPageInfo
, thông tin về một Trang được đo lường trongPager
. (Iad003, b/283098900) - Các chú thích bổ sung để chỉ định dữ liệu đầu vào được phép cho các thành phần kết hợp (I51109)
- Thêm
SemanticsNodeInteraction.requestFocus
để yêu cầu tiêu điểm trong kiểm thử theo cách thuận tiện và dễ tìm hơn. (Ie8722) - Thiết kế lại hoàn toàn API
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
vàLocalSoftwareKeyboardController
không còn thử nghiệm nữa.LocalSoftwareKeyboardController
hiện cũng là mộtCompositionLocal
thích hợp. (I4c364)Modifier.transformable
hiện cung cấp delta kéo trong tham sốcanPan
để giúp xác định hướng kéo để cho phép hoặc không cho phép thao tác này. (I692aa, b/266829800)- Cập nhật đối tượng sửa đổi
consumeWindowInsets
để mở rộng siêu lớpAbstractComposeView
(Iacd74, b/269479941)
Phiên bản 1.6.0-alpha01
Ngày 21 tháng 6 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.6.0-alpha01
. Phiên bản 1.6.0-alpha01 bao gồm các thay đổi sau.
Tính năng mới
- Ra mắt API
AnchoredDraggable
mới trong Foundation. Bạn có thể dùng tính năng này để tạo các thành phần có thể kéo giữa các trạng thái riêng biệt, chẳng hạn như các trang dưới cùng của phương thức. API này thay thế APISwipeable
của Material. (I4a2ed)
Thay đổi về API
- Hỗ trợ
InputConnection#requestCursorUpdates
(I0c69b) - Ra mắt
scrollAnimationSpec
để cho phép tuỳ chỉnh thông số kỹ thuật của ảnh động. Cập nhậtBringIntoViewCalculator
thànhBringIntoViewScroller
. (Idb741) - Thêm loại
ResourceResolutionException
để gói các đối tượng có thể gửi được gửi khi cố gắng tải các thành phần bitmap có nội dung mô tả đường dẫn thành phần không tải được. (I19f44, b/230166331, b/278424788) - Thêm các thuộc tính và hành động ngữ nghĩa để hỗ trợ dịch văn bản. (I4a6bc)
- Ra mắt API
BringIntoViewCalculator
có thể dùng để tuỳ chỉnh cách các thành phần nhưScrollable
phản hồi các yêu cầubringIntoView
. Thay đổi phương thức nạp chồng của thành phần có thể cuộn để tuỳ ý chấp nhận một thực thể củaBringIntoViewCalculator
. (Iaf5af)
Sửa lỗi
- Thêm một quy trình kiểm tra tìm lỗi mã nguồn để cảnh báo nếu bạn đang tạo
MutableInteractionSource
trong thành phần mà không nhớ thành phần đó, tương tự như quy trình kiểm tra tìm lỗi mã nguồn để tạo trạng thái có thể thay đổi /Animatable
. (I5daae) - Thêm tính năng hỗ trợ lựa chọn bằng chuột. Lựa chọn dựa trên thao tác chạm sẽ mở rộng theo từ và thu hẹp theo ký tự. (Ic0c6c, b/180639271)
- Thêm giao diện
FocusTargetModifierNode
có thể dùng để tạoFocusTarget
tuỳ chỉnh. (I9790e)
Phiên bản 1.5
Phiên bản 1.5.4
Ngày 18 tháng 10 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.4
. Phiên bản 1.5.4 bao gồm các thay đổi sau.
Phiên bản 1.5.3
Ngày 4 tháng 10 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.3
. Phiên bản này không có thay đổi nào.
Phiên bản 1.5.2
Ngày 27 tháng 9 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.2
. Phiên bản 1.5.2 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục lỗi trong văn bản dẫn đến sự cố trong một số trường hợp nhất định khi ngữ nghĩa không hợp lệ.
Phiên bản 1.5.1
Ngày 6 tháng 9 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.1
. Phiên bản 1.5.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục các trường văn bản hiển thị bàn phím và có thể chỉnh sửa khi
readOnly
là true. Ngoài ra, khắc phục lỗi bàn phím không hiển thị khireadOnly
được thay đổi từ true thành false trong khi được lấy tiêu điểm. (I34a19, b/246909589)
Phiên bản 1.5.0
Ngày 9 tháng 8 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.0
. Phiên bản 1.5.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.4.0
- Nhiều đối tượng sửa đổi cơ bản, bao gồm
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, đối tượng sửa đổi bố cục và nhiều đối tượng khác đã được di chuyển sang APIModifier.Node
, giúp giảm hao tổn trên thành phần ban đầu. - Cải thiện độ ổn định của Pager. Khắc phục nhiều lỗi.
- Các tham số
pageCount
hiện nằm trongPagerState
thay vì chính Pager
Phiên bản 1.5.0-rc01
Ngày 26 tháng 7 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.0-rc01
. Phiên bản 1.5.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
Bạn có thể sử dụng tính năng kiểm tra không bắt buộc để đề xuất di chuyển các lệnh gọi
mutableStateOf()
sang các loại chuyên biệt tương ứng cho các đối tượng gốc. Mã nhận dạng tìm lỗi mã nguồn của ứng dụng này làAutoboxingStateCreation
. Trước đây, quy trình kiểm tra này được bật theo mặc định cho tất cả dự án. Để xem cảnh báo này trong trình chỉnh sửa của Android Studio và kết quả tìm lỗi mã nguồn của dự án, hãy thay đổi mức độ nghiêm trọng của cảnh báo từ thông tin thành cảnh báo (hoặc cao hơn) bằng cách khai báowarning "AutoboxingStateCreation"
bên trong cấu hìnhbuild.gradle
hoặcbuild.gradle.kts
của mô-đun như minh hoạ (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Phiên bản 1.5.0-beta03
Ngày 28 tháng 6 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.0-beta03
. Phiên bản 1.5.0-beta03 bao gồm các thay đổi sau.
Phiên bản 1.5.0-beta02
Ngày 7 tháng 6 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.0-beta02
. Phiên bản 1.5.0-beta02 bao gồm các thay đổi sau.
Phiên bản 1.5.0-beta01
Ngày 24 tháng 5 năm 2023
Phát hành androidx.compose.foundation:foundation-*:1.5.0-beta01
. Phiên bản beta 1.5.0 bao gồm các thay đổi sau.
Thay đổi về API
- Triển khai
PlatformDataProvider
để cung cấp nhịp tim và số bước hằng ngày. Giao diệnSensorGateway
bị xoá khỏi API công khai. (I55b84)
Sửa lỗi
- Giảm mức phân bổ trong quá trình đo lường danh sách/lưới/v.v. tải lười (Iaf9e2)
- Giảm mức phân bổ khi áp dụng ảnh chụp nhanh (I65c09)
- Xoá các lượt phân bổ khỏi ảnh động có hiệu ứng lò xo (Ie9431)
- Xoá hoạt động phân bổ khỏi
TextLayout
(I0fd11) - Xoá nhiều lượt phân bổ trong tính năng theo dõi tốc độ con trỏ (I26bae)
Phiên bản 1.5.0-alpha04
Ngày 10 tháng 5 năm 2023
Phát hành androidx.compose.foundation:foundation:1.5.0-alpha04
và androidx.compose.foundation:foundation-layout:1.5.0-alpha04
. Phiên bản 1.5.0-alpha04 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm
TextStyle.merge(...)
được tối ưu hoá với danh sách tham số đầy đủ. (Iad234, b/246961787) - Giới thiệu
SnapLayoutInfoProvider
có thể dùng vớiLazyGridState
. (I92134, b/269237141, b/260914964) - Thêm
Modifier.animateItemPlacement()
thử nghiệm cho phạm vi mục lưới theo kiểu xếp kề lazy. Bạn có thể áp dụng hiệu ứng này cho các mục để thực hiện ảnh động thay đổi vị trí/sắp xếp lại tự động. (I4b62d, b/257034719) - Chuyển
GridCells.FixedSize
lên bản ổn định.FixedSize
xác địnhLazyGrid
trong đó mỗi ô có kích thước chính xác trên trục chéo, với không gian còn lại được phân bổ theo cách sắp xếp trục chéo. (I8542f) - Giới thiệu phạm vi bộ thu
PagerScope
cho Pager và một hàm tiện ích để tính toán một độ dời trang nhất định. (If2577) - Giới thiệu
snapPositionalThreshold
khi tạo hành vi hất để chụp nhanh. Sử dụng tham số này để chỉ định ngưỡng vị trí cho tính năng chụp nhanh trong Pager. (If8f7f) - Thay thế
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
bằngcalculateSnappingOffset
. Trong phương thức mới này, chúng ta chỉ cần yêu cầu độ dời tiếp theo để chụp nhanh. Bạn nên thực hiện việc tính toán các giới hạn ở cấp triển khai vì điều này có thể khác nhau tuỳ thuộc vào cách bạn cần chụp nhanh. (I923a4) - Các API
LazyStaggeredGrid
đã được nâng cấp lên phiên bản ổn định. (I633a5) - Xoá
pageCount
khỏiHorizontal/VerticalPager
. Bạn phải cung cấp thông tin này khi tạo trạng thái. Cập nhậtPagerState
vàrememberPagerState
để chấp nhậnpageCount
. (Ieb52d, b/266965072) - Xoá
pageCount
khỏiHorizontal/VerticalPager
. Bạn phải cung cấp thông tin này khi tạo trạng thái. Cập nhậtPagerState
vàrememberPagerState
để chấp nhậnpageCount
. (Ifa3cb, b/266965072) - Giới thiệu
shortSnapVelocityThreshold
trongSnapFlingBehavior
của Pager. (I7379e, b/275579012) - Thêm
FlowRowScope
vàFlowColumnScope
. (I54fe2)
Sửa lỗi
- Các lệnh gọi để lấy ngữ nghĩa trên Văn bản khi các quy tắc ràng buộc có
minWidth
vàminHeight
không còn gặp sự cố nữa. (Ibd072) - Khắc phục lỗi hồi quy trong đó bàn phím không hiển thị cho các trường văn bản bên trong hộp thoại không do thành phần kết hợp
Dialog
tạo. (I82551, b/262140644)
Phiên bản 1.5.0-alpha03
Ngày 19 tháng 4 năm 2023
Phát hành androidx.compose.foundation:foundation:1.5.0-alpha03
và androidx.compose.foundation:foundation-layout:1.5.0-alpha03
. Phiên bản 1.5.0-alpha03 bao gồm các thay đổi sau.
Bản phát hành này cho phép ngăn xếp kết xuất văn bản mới cho Compose. Ngăn xếp mới được tối ưu hoá hiệu suất và bạn sẽ không thấy thay đổi nào rõ ràng.
Nếu thấy văn bản hiển thị có thay đổi, bạn có thể gỡ lỗi bằng cách đặt NewTextRendering1_5 = false
để xác nhận sự khác biệt về hành vi. Việc đặt giá trị này sẽ buộc phải kết hợp lại. Vui lòng báo cáo mọi sự khác biệt về hành vi dưới dạng lỗi.
Cờ gỡ lỗi sẽ bị xoá trước khi phát hành phiên bản 1.5 beta01.(Iada23, b/246960758)
Thay đổi về API
- Đặt
FlowColumn/FlowRow
cùng dòng. (Idab37)
Phiên bản 1.5.0-alpha02
Ngày 5 tháng 4 năm 2023
Phát hành androidx.compose.foundation:foundation:1.5.0-alpha02
và androidx.compose.foundation:foundation-layout:1.5.0-alpha02
. Phiên bản 1.5.0-alpha02 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm tính năng hỗ trợ cho các ô có kích thước cố định trong
LazyGrid
và sắp xếp các ô đó theo cách sắp xếp trục chéo. (I83ed9, b/235121277, b/267942510) - Thêm tính năng hỗ trợ cho các làn có kích thước cố định trong
LazyStaggeredGrid
và sắp xếp các làn đó theo cách sắp xếp trục chéo. (I7d519) - Giờ đây, bạn có thể mở
UrlAnnotation
trongAnnotatedString
thông qua các dịch vụ hỗ trợ tiếp cận nhưTalkBack
. (If4d82, b/253292081) - Thêm hành động ngữ nghĩa
InsertTextAtCursor
cho các trường văn bản. (I11ed5) - Các hành động kiểm thử liên quan đến văn bản (ví dụ:
performTextInput
) hiện sẽ yêu cầu tiêu điểm trực tiếp bằng cách sử dụng hành động ngữ nghĩa thay vì nhấp vào trường. (I6ed05) - Thêm tính năng hỗ trợ khoảng cách/sắp xếp theo trục chéo bằng cách sử dụng
verticalArrangement
trongFlowRow
vàhorizontalArrangement
trongFlowColumn
. Chúng ta cũng xoáverticalAlignment
vàhorizontalAlignment
cấp cao nhất trongFlowRow/FlowColumn
. Thay vào đó, nhà phát triển có thể sử dụngModifier.align
. Điều này giúp giảm sự nhầm lẫn giữa quy ước đặt tên củaverticalAlignment
vàverticalArrangement
. (I87b60, b/268365538)
Phiên bản 1.5.0-alpha01
Ngày 22 tháng 3 năm 2023
Phát hành androidx.compose.foundation:foundation:1.5.0-alpha01
và androidx.compose.foundation:foundation-layout:1.5.0-alpha01
. Phiên bản 1.5.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Văn bản và
BasicText
được tái cấu trúc để sử dụng hệ thống đối tượng sửa đổi mới. Điều này giúp cải thiện đáng kể hiệu suất trong nhiều trường hợp. Bạn sẽ không thấy có thay đổi nào. (If1d17, b/246961435) - Thêm hành động ngữ nghĩa
PerformImeAction
để gọi hành động IME trên các nút trình chỉnh sửa văn bản. (Ic606f, b/269633506)
Sửa lỗi
- Cập nhật nội bộ của
Modifier.hoverable
. Công cụ sửa đổihoverable
sẽ chỉ xuất hiện trong trình kiểm tra nếu được bật. (I82103)
Phiên bản 1.4
Phiên bản 1.4.3
Ngày 3 tháng 5 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.3
và androidx.compose.foundation:foundation-layout:1.4.3
mà không có thay đổi nào (chỉ tăng phiên bản).
Phiên bản 1.4.2
Ngày 19 tháng 4 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.2
và androidx.compose.foundation:foundation-layout:1.4.2
. Phiên bản 1.4.2 bao gồm các thay đổi sau.
Phiên bản 1.4.1
Ngày 5 tháng 4 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.1
và androidx.compose.foundation:foundation-layout:1.4.1
. Phiên bản 1.4.1 bao gồm các thay đổi sau.
Phiên bản 1.4.0
Ngày 22 tháng 3 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.0
và androidx.compose.foundation:foundation-layout:1.4.0
. Phiên bản 1.4.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.3.0
- Thêm tính năng tích hợp khả năng tương thích với biểu tượng cảm xúc vào
Text
vàTextField
, cũng như Đoạn văn bản cấp thấp hơn. Tính năng này được bật theo mặc định khi bạn định cấu hình EmojiCompat. - Bạn có thể định cấu hình
EmojiCompat
trên một Văn bản cụ thể bằng cách sử dụngPlatformParagraphStyle
. - Thêm tuỳ chọn hỗ trợ khoảng dòng đầy đủ vào
LazyStaggeredGrid
(I28252) - Thêm
onHover
thử nghiệm vàoClickableText
(I6938f) - Ra mắt các phương thức nạp chồng thử nghiệm mới cho hàm
runComposeUiTest
và các hàmcreate*ComposeRule
chấp nhận tham sốCoroutineContext
. Ngữ cảnh này sẽ được dùng cho thành phần kiểm thử cũng như mọi lệnh gọiLaunchedEffect
vàrememberCoroutineScope()
trong thành phần đó. (I10614, b/265177763) FlowRow
vàFlowColumn
giờ đây có sẵn dưới dạng@ExperimentalFoundationApi
, tăng tính linh hoạt cho bố cục thành phần dựa trên hàng và cột, giúp phân tách thành một dòng mới nếu không có đủ không gian trên trục chính. (I3a7b2)Modifier.basicMarquee()
được cung cấp ở dạng thử nghiệm để hiển thị nội dung với hiệu ứng marquee cuộn. (I2df44, b/139321650)
Phiên bản 1.4.0-rc01
Ngày 8 tháng 3 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.0-rc01
và androidx.compose.foundation:foundation-layout:1.4.0-rc01
. Phiên bản 1.4.0-rc01 bao gồm các thay đổi sau.
Thay đổi về API
- Ra mắt API
PlatformTextInputAdapter
cấp thấp mới để xây dựng các phương thức triển khai nhập văn bản tuỳ chỉnh giao tiếp trực tiếp với API nền tảng. (I58df4) - Thêm tính năng hỗ trợ bố cục đảo ngược vào
LazyStaggeredGrid
. (I3ef4a)
Sửa lỗi
- Thao tác ngữ nghĩa
SetText
củaBasicTextField
hiện sẽ cập nhật vùng đệm văn bản bằng cách sử dụng cùng một đường dẫn mã như các bản cập nhật IME và hàm kiểm thử (ví dụ:performTextReplacement
). - Các hàm kiểm thử văn bản
performTextClearance
,performTextReplacement
vàperformTextSelection
hiện sử dụngSemanticsActions
. (I0807d, b/269633168, b/269624358)
Phiên bản 1.4.0-beta02
Ngày 22 tháng 2 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.0-beta02
và androidx.compose.foundation:foundation-layout:1.4.0-beta02
. Phiên bản 1.4.0-beta02 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm lệnh gọi lại
Modifier.Node.onReset()
mới cho phép bạn đặt lại một số trạng thái cục bộ để xử lý đúng cách trường hợpLayout
được sử dụng lại (ví dụ: một mục củaLazyColumn
). SửaFocusTargetModifierNode
để đặt lại đúng cách trạng thái tập trung. (I65495, b/265201972) - Thêm tham số
BlendMode
vào các phương thứcDrawScope.drawText
,Paragraph.paint
vàMultiParagraph.paint
để hỗ trợ nhiều thuật toán kết hợp khi vẽ văn bản trên Canvas. (I57508) - Xoá API
modifierElementOf()
. Vui lòng gia hạn trực tiếp từModifierNodeElement
. (Ie6d21)
Sửa lỗi
- Việc điều chỉnh ô điều khiển lựa chọn không thể chọn một phần ký tự được nữa. (Idedd1)
- Khắc phục sự cố khi nhấn tổ hợp phím Ctrl + Backspace trên
TextField
trống (I0427f, b/244185537)
Phiên bản 1.4.0-beta01
Ngày 8 tháng 2 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.0-beta01
và androidx.compose.foundation:foundation-layout:1.4.0-beta01
. Phiên bản 1.4.0-beta01 bao gồm các thay đổi sau.
Tính năng mới
- Kể từ phiên bản 1.3, thêm tính năng tích hợp khả năng tương thích với biểu tượng cảm xúc vào
Text
vàTextField
, cũng như Đoạn văn bản cấp thấp hơn. Tính năng này được bật theo mặc định khi bạn định cấu hình EmojiCompat. - Bạn có thể định cấu hình
EmojiCompat
trên một Văn bản cụ thể bằng cách sử dụngPlatformParagraphStyle
.
Các thay đổi về API
- Thêm cách triển khai phổ biến của API
PinnableContainer
dùng trong tất cảLazyLayouts
để giữ lại các mục thoát khỏi thành phần kết hợp nhưng vẫn cần hoạt động. (If45a4) - Đổi tên
PinnableContainer.PinnedHandle.unpin()
thànhrelease()
(I4667a)
Đóng góp bên ngoài
- Thêm thuộc tính
mainAxisItemSpacing
vàoLazyListLayoutInfo
,LazyGridLayoutInfo
vàLazyStaggeredGridItemInfo
(I52fad)
Phiên bản 1.4.0-alpha05
Ngày 25 tháng 1 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.0-alpha05
và androidx.compose.foundation:foundation-layout:1.4.0-alpha05
. Phiên bản 1.4.0-alpha05 bao gồm các thay đổi sau.
Tính năng mới
- Thêm tuỳ chọn hỗ trợ khoảng dòng đầy đủ vào
LazyStaggeredGrid
(I28252) - Thêm
onHover
thử nghiệm vàoClickableText
(I6938f) - Ra mắt các phương thức nạp chồng thử nghiệm mới cho hàm
runComposeUiTest
và các hàmcreate*ComposeRule
chấp nhận tham sốCoroutineContext
. Ngữ cảnh này sẽ được dùng cho thành phần kiểm thử cũng như mọi lệnh gọiLaunchedEffect
vàrememberCoroutineScope()
trong thành phần đó. (I10614, b/265177763)
Các thay đổi về API
- Hợp nhất các API trước/sau của
OverscrollEffect
vào các hàmapplyToScroll
vàapplyToFling
kết hợp của "lớp trang trí". Xem các mẫu cập nhật trong tài liệu để biết ví dụ về cách triển khai hiệu ứng cuộn quá mức với hình dạng API mới. (I8a9c4, b/255554340) - Thêm loại/tính chất rỗng khác của các hàm cùng dòng/ẩn, ngừng sử dụng (I24f91)
- Các API
LineBreak
vàHyphens
trongTextStyle
được đưa vào phiên bản chính thức. (Ic1e1d)
Sửa lỗi
- Con trỏ trong các trường văn bản giờ đây sẽ tiếp tục nhấp nháy ngay cả khi ảnh động bị tắt. (I95e70, b/265177763)
Modifier.basicMarquee
hiện tạo ảnh động ngay cả khi ảnh động bị tắt trong phần cài đặt hệ thống. (I23389, b/262298306, b/265177763)
Đóng góp bên ngoài
- Các phương thức
notifyFocusedRect
trongTextInputSession
vàTextInputService
đã được dùng trở lại. (I23a04, b/262648050)
Phiên bản 1.4.0-alpha04
Ngày 11 tháng 1 năm 2023
Phát hành androidx.compose.foundation:foundation:1.4.0-alpha04
và androidx.compose.foundation:foundation-layout:1.4.0-alpha04
. Phiên bản 1.4.0-alpha04 bao gồm các thay đổi sau.
Tính năng mới
FlowRow
vàFlowColumn
giờ đây có sẵn dưới dạng@ExperimentalFoundationApi
, tăng tính linh hoạt cho bố cục thành phần dựa trên hàng và cột, giúp phân tách thành một dòng mới nếu không có đủ không gian trên trục chính. (I3a7b2)Modifier.basicMarquee()
được cung cấp ở dạng thử nghiệm để hiển thị nội dung với hiệu ứng marquee cuộn. (I2df44, b/139321650)
Các thay đổi về API
- Ngừng sử dụng
FocusRequesterModifier
và thay thế bằngFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Hàm khởi tạo
AndroidFont
cóvariationSettings
hiện là một API ổn định và có thể dùng để tạo các loại mới của bộ mô tả phông chữ. (I5adcc, b/261565807) - Giới thiệu
PinnableContainer
api được phân phát theo danh sách lazy thông qua một thành phần cục bộ cho phép ghim mục hiện tại. Điều này có nghĩa là mục đó sẽ không bị huỷ khi người dùng cuộn ra khỏi khung hiển thị. Ví dụ:Modifier.focusable()
sẽ ghim mục hiện được đặt làm tâm điểm thông qua cơ chế này. (Ib8881, b/259274257, b/195049010) - Viết lại cách các thành phần có thể cuộn phản hồi
bringIntoViewRequesters
và các thành phần có thể làm tâm điểm để tạo mô hình hiệu quả hơn về độ phức tạp của các thao tác đó và xử lý nhiều trường hợp hiếm gặp hơn. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Thêm tính chất rỗng của kiểu dữ liệu trả về của các hàm ẩn không dùng nữa (Ibf7b0)
- Thêm
TextMotion
thử nghiệm vàoTextStyle
để xác định Văn bản làStatic(default)
hay Ảnh động. DùngTextMotion.Animated
nếu Văn bản sẽ được điều chỉnh tỷ lệ, chuyển đổi hoặc xoay thông qua chuyển động. (I24dd7) - Thêm
TextFieldFocusModifier
để khắc phục hành vi di chuyển tâm điểm cho nền tảng Android (I00303) - Thay thế đối số
maxSize: IntSize
trongdrawText
bằngsize: Size
để cùng dòng với các hàmDrawScope
khác. Theo mặc định,size
được đặt thànhSize.Unspecified
và điều này sẽ không thay đổi hành vi mặc định trước đó. (Icd27d)
Sửa lỗi
- Điều chỉnh ở cơ chế vật lý chụp nhanh trong
SnapFlingBehaviour
để tạo cảm giác tự nhiên hơn.
Vấn đề đã biết
- Khi cập nhật từ
androidx.compose.foundation:1.4.0-alpha03
lênandroidx.compose.foundation:1.4.0-alpha04
, bạn có thể gặp lỗijava.lang.NoSuchFieldError
. Đây là nơi vấn đề được báo cáo ban đầu. Chúng tôi đã gửi một bản sửa lỗi và bản sửa lỗi này sẽ có trong bản cập nhật Compose tiếp theo. Để giải quyết vấn đề này, hãy cập nhật thư việnandroidx.compose.material
vàandroidx.compose.material3
lên phiên bản mới nhất (1.1.0-alpha04) hoặc hạ cấpandroidx.compose.foundation
xuống 1.4.0-alpha03.
Phiên bản 1.4.0-alpha03
Ngày 7 tháng 12 năm 2022
Phát hành androidx.compose.foundation:foundation:1.4.0-alpha03
và androidx.compose.foundation:foundation-layout:1.4.0-alpha03
. Phiên bản 1.4.0-alpha03 bao gồm các thay đổi sau.
Các thay đổi về API
- Trong các bài kiểm thử giao diện người dùng sử dụng quy tắc Compose, các lệnh tiếp tục trong quá trình gọi lại
withFrameNanos
sẽ không được gửi đi cho đến khi tất cả các lệnh gọi lại khung đã chạy xong. Điều này phù hợp với hành vi của Compose khi chạy bình thường. Tuy nhiên, bài kiểm thử dựa trên hành vi cũ có thể không thành công. Điều này chỉ ảnh hưởng đến mã gọi trực tiếpwithFrameNanos
hoặcwithFrameMillis
và có logic bên ngoài lệnh gọi lại được truyền đến các hàm mà có thể cần được di chuyển bên trong lệnh gọi lại. Xem những thay đổi về hoạt động kiểm thử hiệu ứng chuyển động trong CL này để biết ví dụ. - Thêm tham số
onPerformTraversals: (Long) -> Unit
(không bắt buộc) vào hàm khởi tạoTestMonotonicFrameClock
và hàm nhà máy để chạy mã sau lệnh gọi lạiwithFrameNanos
nhưng trước khi tiếp tục coroutine của phương thức gọi. (Idb413, b/254115946, b/222093277, b/255802670) - Ra mắt Hành động hỗ trợ tiếp cận trên trang:
PageUp
,PageDown
,PageLeft
,PageRight
. Lưu ý rằng những thao tác này chỉ có trong API 29. (Ida4ab) - Ra mắt
HorizontalPager
vàVerticalPager
– một phương thức hiển thị các thành phần kết hợp (composable) theo Trình chuyển trang. Ra mắtPagerState
để kiểm soát Trình chuyển trang cũng như thông tin truy vấn về trạng thái hiện tại của Trình chuyển trang. Ra mắtPageSize
– một phương thức kiểm soát kích thước của trang Trình chuyển trang, có thể dùng để tạo băng chuyền như Trình chuyển trang. Ra mắtPagerSnapDistance
– một phương thức kiểm soát cách tính năng chụp nhanh sẽ hoạt động trong hành vi hất của Trình chuyển trang. (I01120) - Ra mắt tuỳ chọn nạp chồng trong
SnapFlingBehavior.performFling
để biết nơi hành vi hất sẽ xử lý. (I569f6) - Xoá
OverscrollEffect#isEnabled
. Thay vì phải ghi nhớ và đặt cờ này, bạn chỉ cần không gửi sự kiện đến hiệu ứng cuộn quá mức khi không muốn hiệu ứng đó hiển thị (ví dụ: nếuScrollableState#canScrollForward/backward
đều trả về giá trị sai). (I1a4b0, b/255554340, b/255557085) - Thêm
ScrollableState#canScrollForward
vàScrollableState#canScrollBackward
để truy vấn xem mộtScrollableState
có chỗ để cuộn theo một trong hai hướng hay không (cho dù là giá trị tối thiểu/tối đa của phạm vi). Kết quả truy vấn mặc định sẽ là true để tương thích ngược với các phương thức triển khai hiện có củaScrollableState
. Đối tượng sử dụng có thể dùng đoạn mã này để cho người dùng biết rằng vẫn còn chỗ để cuộn, và cũng có thể dùng để tránh gửi delta choScrollableStates
không có khoảng trống để cuộn theo hướng cụ thể, nhằm giảm bớt công việc không cần thiết. (Idf1a0, b/255557085) - Thêm API Đối tượng sửa đổi để truy vấn thông tin cuộn của đối tượng cấp trên. (I2ba9d, b/203141462)
- Dùng trong
Clickable
để trì hoãn đúng cách thao tác tương tác nhấn, khi các cử chỉ có thể trở thành sự kiện cuộn. - Sửa lỗi khiến
Clickables
không trì hoãn đúng cách các hiệu ứng gợn sóng khi được dùng bên trong mộtScrollable ViewGroup
. - Cập nhật các Ngăn và Trang tính để trì hoãn đúng cách thao tác nhấn trong trường hợp các cử chỉ có thể trở thành sự kiện cuộn.
- Cập nhật cách đặt tên
snapStepSize
để nhất quán với các phương thức khác trongSnapLayoutInfoProvider
. (Ife67c) - Thêm
EmojiCompat
vàoCompose
(Ibf6f9, b/139326806) - Đổi tên
consumedWindowInsets()
thànhconsumeWindowInsets()
vàwithConsumedWindowInsets()
thànhonConsumedWindowInsetsChanged()
rồi đặt Đối tượng sửa đổi ở chế độ công khai. (Ie44e1)
Sửa lỗi
- Đã khắc phục sự cố xảy ra với
Modifier.animateItemPlacement()
và lưới Lazy. Sự cố này xảy ra trong một số điều kiện khi số lượng mới của mục ít hơn số lượng trước đó. (I0bcac, b/253195989)
Phiên bản 1.4.0-alpha02
Ngày 9 tháng 11 năm 2022
Phát hành androidx.compose.foundation:foundation:1.4.0-alpha02
và androidx.compose.foundation:foundation-layout:1.4.0-alpha02
. Phiên bản 1.4.0-alpha02 bao gồm các thay đổi sau.
Các thay đổi về API
awaitFirstDown
vàwaitForUpOrCancellation
hiện chấp nhậnPointerEventPass
để linh hoạt hơn. (I7579a, b/212091796)- Huỷ bỏ API
beyondBoundCount
từ các API Lazy* (I12197) - Giới thiệu tham số trong các API Lazy để kết hợp và đặt ngoài các mục trong khung nhìn (I69e89, b/172029355)
- Thêm tham số
minLines
vàoBasicText
vàBasicTextField
. Nhờ đó có thể đặt chiều cao tối thiểu của các thành phần kết hợp này theo số dòng (I24294, b/122476634)
Phiên bản 1.4.0-alpha01
Ngày 24 tháng 10 năm 2022
Phát hành androidx.compose.foundation:foundation:1.4.0-alpha01
và androidx.compose.foundation:foundation-layout:1.4.0-alpha01
. Phiên bản 1.4.0-alpha01 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm một phương thức mới là
awaitEachGesture()
cho trình phát hiện cử chỉ. Phương thức này hoạt động tương tự nhưforEachGesture()
, nhưng các vòng lặp trên cử chỉ hoạt động hoàn toàn trongAwaitPointerEventScope
, do đó, các sự kiện không bị mất giữa các vòng lặp. - Ngừng sử dụng
forEachGesture()
và thay bằngawaitEachGesture()
vì phương thức này khiến sự kiện bị mất giữa các cử chỉ. (Iffc3f, b/251260206) - Thêm
WindowInsets.imeAnimationSourc
e vàWindowInsets.imeAnimationTarget
để xác định tiến trình ảnh động và nhận biết vị trí của IME sau khi ảnh động hoàn tất. (I356f1, b/217770337)
Phiên bản 1.3
Phiên bản 1.3.1
Ngày 9 tháng 11 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.1
và androidx.compose.foundation:foundation-layout:1.3.1
. Phiên bản 1.3.1 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục vấn đề về hiệu suất trong
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
sẽ không đọc toạ độ bố cục trừ khi được đính kèm (aosp/2241316)
Phiên bản 1.3.0
Ngày 24 tháng 10 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0
và androidx.compose.foundation:foundation-layout:1.3.0
. Phiên bản 1.3.0 bao gồm các thay đổi sau.
Những thay đổi quan trọng kể từ phiên bản 1.2.0
- Ra mắt các phiên bản thử nghiệm của
LazyVerticalStaggeredGrid
vàLazyHorizontalStaggeredGrid
. - Đã thêm
SnapFlingBehavior
,rememberSnapFlingBehavior
và các API tương ứng khác dưới dạng thử nghiệm. - Giờ đây,
Modifier.clickable
,Modifier.toggleable
vàModifier.selectable
sẽ có hiệu ứng gợn sóng nếu bạn nhấp vào bàn phím hoặc d-pad trên điều khiển từ xa.
Phiên bản 1.3.0-rc01
Ngày 5 tháng 10 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-rc01
và androidx.compose.foundation:foundation-layout:1.3.0-rc01
. Phiên bản 1.3.0-rc01 bao gồm các thay đổi sau.
Các thay đổi về API
- Giới thiệu
lowVelocityAnimationSpec
được dùng trong bước tiếp cận khi tốc độ hất không đủ nhanh để phân rã. (Iaeb27) - Thêm các Dấu gạch nối API thử nghiệm mới để hỗ trợ tính năng tự động gạch nối trong Văn bản (Iaa869)
Phiên bản 1.3.0-beta03
Ngày 21 tháng 9 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-beta03
và androidx.compose.foundation:foundation-layout:1.3.0-beta03
. Phiên bản 1.3.0-beta03 bao gồm các thay đổi sau.
Thay đổi về API
- Thêm tuỳ chọn để tuỳ chỉnh dấu ngắt dòng trong Văn bản. (I86907)
- Các mã
BringIntoViewResponder
nay có thể nhận được các giới hạn đã cập nhật của một yêu cầu trong khi xử lý yêu cầu đó. (If86a5, b/241591211) - Đưa tính năng hỗ trợ khoảng cách giữa các mục vào
Staggered Grid
thử nghiệm (I10b82) - Đưa tính năng khoảng đệm nội dung vào
Staggered Grid
thử nghiệm (I342ea) - Thay đối số
size:IntSize
bằngconstraints: Constraints
trong phương thứcTextMeasurer.measure
để hỗ trợ các điều kiện bắt buộc tối thiểu về chiều rộng. (I37530, b/242707525) - Thêm
Modifier.withConsumedWindowInsets()
để sử dụngWindowInsets
(tiêu hao) bên ngoàiwindowInsetsPadding
. - Thêm
MutableWindowInsets
cho phép thay đổi dễ dàngWindowInsets
mà không cần kết hợp lại. (I7fd28, b/237019262, b/243119659)
Phiên bản 1.3.0-beta02
Ngày 7 tháng 9 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-beta02
và androidx.compose.foundation:foundation-layout:1.3.0-beta02
. Phiên bản 1.3.0-beta02 bao gồm các thay đổi sau.
Các thay đổi về API
- Phiên bản ban đầu của
StaggeredGrid
thử nghiệm (Ia48be) - Đổi tên
FocusDirection.In
vàFocusDirection.Out
thànhFocusDirection.Enter
vàFocusDirection.Exit
(Ia4262, b/183746982) - Giới thiệu phần bổ sung
rememberSnapFlingBehavior
giúp nhanh chóng bật chế độ chụp nhanh trongLazyLists
. (Ifb48a) - Thay thế nhà máy
snapFlingBehavior
bằng một lớpSnapFlingBehavior
cụ thể. Giới hạn phạm vi của phương thứcSnapLayoutInfoProvider
thành Density (Mật độ) để dễ dàng chuyển đổi Dp<->Px cho người dùng API. (I54a11) - Cập nhật
LazyLayoutMeasureScope.measure
để trả về danh sách các giá trị placeable, làm nổi bật tính bất biến mong muốn của giá trị được trả về. (I48b7c) - Giới thiệu
SnapLayoutInfoProvider
dùngLazyListState
để tạo một thực thể củaSnapLayoutInfoProvider
được dùng để bật chế độ chụp nhanhFlingBehavior
choLazyLists
. (I2dd10)
Sửa lỗi
- Tái cấu trúc
AwaitPointerEventScope#awaitLongPressOrCancellation
để khớp với các hàm đang chờ khác (I646e6)
Phiên bản 1.3.0-beta01
Ngày 24 tháng 8 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-beta01
và androidx.compose.foundation:foundation-layout:1.3.0-beta01
. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.
Các thay đổi về API
- Xoá
pointerPosition
khỏiOverscrollEffect
– các hiệu ứng quan tâm đến vị trí con trỏ có thể sử dụngModifier.pointerInput { }
trongeffectModifier
để nhận vị trí con trỏ hiện tại. (I9f606, b/241239306) - Hiển thị
AwaitPointerEventScope#awaitLongPressOrCancellation
dưới dạng khối dựng bổ sung để phát hiện cử chỉ phức tạp hơn (I04374, b/181577176) - Ra mắt
lazyListSnapLayoutInfoProvider
để bật tính năng chụp nhanh trong Danh sách Lazy. (I3ecdf) - Ra mắt
SnapFlingBehavior
– một cử chỉ hất để chụp nhanh danh sách. Cung cấp một thực thể củaSnapLayoutInfoProvider
chứa thông tin về bố cục chụp nhanh của bạn. (Ie754c)
Phiên bản 1.3.0-alpha03
Ngày 10 tháng 8 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-alpha03
và androidx.compose.foundation:foundation-layout:1.3.0-alpha03
. Phiên bản 1.3.0-alpha03 bao gồm các thay đổi sau.
Thay đổi API
- Phông chữ trong tài nguyên hiện hỗ trợ chế độ cài đặt biến thể phông chữ (API cấp 26 trở lên). (I900dd, b/143703328)
- Hỗ trợ phông chữ có thể thay đổi trong
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Xoá chú giải thử nghiệm khỏi
PlatformTextStyle
vàLineHeightStyle
. (I64bef) - Giờ đây, các trường văn bản sẽ gửi thêm những ngoại lệ chi tiết khi
OffsetMapping
doVisualTransformation
cung cấp trả về các chỉ mục không hợp lệ. (Ie73f9, b/229378536) - Ra mắt các API thử nghiệm để chia sẻ logic của nhà cung cấp mục giữa các bố cục Lazy. (Ic891c)
ScrollableDefaults.reverseDirection()
không còn là thử nghiệm nữa. (Iba646)- Ngừng sử dụng
SemanticsModifier.id
và thay vào đó, chuyển mã ngữ nghĩa sangLayoutInfo.semanticsId
. (Iac808, b/203559524) checkScrollableContainerConstraints()
không còn là thử nghiệm nữa. (I2c290)Modifier.clipScrollableContainer()
không còn là thử nghiệm nữa. (Ia2b44)- Ngừng sử dụng
TextInputService.show|hideSoftwareKeyboard
. Vui lòng sử dụngSoftwareKeyboardController
thay thế trong mã ứng dụng vàTextInputSession
trong mã quản lý IME. (I14e4c, b/183448615)
Phiên bản 1.3.0-alpha02
Ngày 27 tháng 7 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-alpha02
và androidx.compose.foundation:foundation-layout:1.3.0-alpha02
. Phiên bản 1.3.0-alpha02 bao gồm các thay đổi sau.
Thay đổi API
- Thêm hàm mở rộng
drawText
trênDrawScope
để cung cấp cách vẽ văn bản nhiều kiểu trên các thành phần kết hợp và đối tượng sửa đổi hoạt động trênDrawScope
nhưCanvas
vàdrawBehind
. (I16a62, b/190787898)
Sửa lỗi
- Giờ đây, bàn phím mềm sẽ ẩn khi một trường văn bản được lấy làm tâm điểm bị tắt. (I6e3e4, b/237308379)
- 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 (Icea9d, b/216582726, b/223440806, b/227709803) - Giờ đây, khi nội dung cuộn được có một thành phần con tiêu điểm, nội dung cuộn được đó sẽ cuộn đúng cách để giữ cho thành phần con tập trung trong khung hiển thị khi kích thước cuộn giảm, ngay cả khi là kích thước động. (I80867, b/230756508, b/220119990)
- Khắc phục sự cố
TextField
bị xoá và nạp lại khi lựa chọn đang hoạt động. (I1235b, b/208655565, b/214253689)
Phiên bản 1.3.0-alpha01
Ngày 29 tháng 6 năm 2022
Phát hành androidx.compose.foundation:foundation:1.3.0-alpha01
và androidx.compose.foundation:foundation-layout:1.3.0-alpha01
. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.
Thay đổi API
- 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)
Sửa lỗi
- Giờ đây,
BasicTextField
cursorBrush
có thể là ảnh động mà không cần khởi động lại bộ tính giờ con trỏ. (I812e6, b/236383522)
Phiên bản 1.2
Phiên bản 1.2.1
Ngày 10 tháng 8 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.1
và androidx.compose.foundation:foundation-layout:1.2.1
. Phiên bản 1.2.1 bao gồm các thay đổi sau.
Phiên bản 1.2.0
Ngày 27 tháng 7 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0
và androidx.compose.foundation:foundation-layout:1.2.0
. Phiên bản 1.2.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.1.0
LazyVerticalGrid
vàLazyHorizontalGrid
hiện đang ổn định.- Giờ đây, bạn có thể chỉ định một loại nội dung cho các mục trong danh sách Lazy và lưới. Nhờ đó, các thành phần có thể sử dụng lại phần tử một cách hiệu quả hơn.
- Danh sách và lưới Lazy hiện có tham số
userScrollEnabled
cho phép tắt chức năng cuộn thông qua các cử chỉ của người dùng. - Thêm một API thử nghiệm mới có tên là
LazyLayout
. Đây là API chúng tôi sử dụng trên thiết bị để hỗ trợ danh sách Lazy và lưới. - Giới thiệu API
OverscrollEffect
dưới dạng thử nghiệm. Bạn có thể xác định hiệu ứng cuộn quá mức tuỳ chỉnh cũng như thêm một nền tảng tiêu chuẩn vào các vùng chứa có thể cuộn tuỳ chỉnh. - Ra mắt các API có khả năng tương tác cuộn lồng ghép để cho phép khả năng tương tác giữa các khung hiển thị và đối tượng cuộn.
- Thêm cuộn chuột và bàn di chuột vào mọi vùng chứa cuộn.
Phiên bản 1.2.0-rc03
Ngày 29 tháng 6 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-rc03
và androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.2.0-rc02
và androidx.compose.foundation:foundation-layout: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.foundation:foundation:1.2.0-rc01
và androidx.compose.foundation:foundation-layout:1.2.0-rc01
. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.
Thay đổi API
- Ra mắt
OverscrollEffect
thử nghiệm để cho phép các hiệu ứng cuộn quá mức tuỳ chỉnh cùng với các tuỳ chọn nạp chồngModifier.scrollable
chấp nhận hiệu ứng này. - Chuyển
LocalOverScrollConfiguration
thử nghiệm từfoundation.gesture
sang gói nền tảng và đổi tên thànhLocalOverscrollConfiguration
(If19fb, b/204650733) - Các giao diện trong thư viện Compose hiện được xây dựng bằng phương thức giao diện mặc định jdk8 (I5bcf1)
- Giới thiệu một api thử nghiệm
checkScrollableContainerConstraints()
cho phép kiểm tra để đảm bảo chúng ta không lồng các vùng chứa có thể cuộn. Bạn có thể sử dụng khi tạo bố cục lazy có thể cuộn của riêng mình thông quaLazyLayout
. (Id6fab, b/233352497) - Xoá
LazyVerticalGrid
không dùng nữa khỏi góiandroidx.compose.foundation.lazy
. API ổn định mới nằm ởandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Phiên bản 1.2.0-beta03
Ngày 1 tháng 6 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-beta03
và androidx.compose.foundation:foundation-layout: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 thử nghiệm
IntervalList
vàMutableIntervalList
mới. Thuộc tính này cho phép thể hiện một số danh sách các giá trị thông qua nhiều khoảng thời gian. Mã này hữu ích khi bạn muốn xác định dsl của riêng mình tương tự như mã màLazyColumn
sử dụng, nơi bạn có thể xác định các mục trong danh sách thông qua nhiều lệnh gọi mục/các mục. (I2d05e, b/228580728)
Sửa lỗi
- Làm rõ tài liệu về
WindowInsets.ime
để khẳng định rằng các phần lồng ghépime
đã được báo cáo từ API 23 đến nay, nhưng chỉ có dạng ảnh động ở API 30 trở lên. (Ia7fc0, b/230756508) - Thao tác nhấn phím xoá phía trước khi con trỏ ở cuối trường văn bản sẽ không gặp sự cố nữa.
DeleteSurroundingTextCommand
vàDeleteSurroundingTextInCodePointsCommand
hiện yêu cầu các đối số hàm dựng không được âm. (Ica8e6, b/199919707)
Phiên bản 1.2.0-beta02
Ngày 18 tháng 5 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-beta02
và androidx.compose.foundation:foundation-layout:1.2.0-beta02
. Phiên bản 1.2.0-beta02 bao gồm các thay đổi sau.
- Độ phân giải phông chữ có thể tải xuống không làm thay đổi kích thước bố cục của Văn bản, hoặc
TextField
trước đây sẽ không vẽ lại, dẫn đến việc hiển thị phông chữ cũ. Bản sửa lỗi này đảm bảo bố cục văn bản luôn được kích hoạt vẽ lại (b/229727404). (I1d49e, b/229727404)
Phiên bản 1.2.0-beta01
Ngày 11 tháng 5 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-beta01
và androidx.compose.foundation:foundation-layout: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
BeyondBoundsInterval
thử nghiệm có thể sử dụng được bằng cách triển khai tuỳ chỉnh củaLazyList
khi bố cục các mục nằm ngoài giới hạn hiển thị (Ifabfb, b/184670295) LineHeightBehavior
được đổi tên thànhLineHeightStyle
LineVerticalAlignment
được đổi tên thànhLineHeightStyle.Alignment
- Đổi tên
LineHeightTrim
thànhLineHeightStyle.Trim
- Xoá các giá trị hàm khởi tạo mặc định từ
LineHeightStyle
(I582bf, b/181155707) - Thêm giá trị mặc định cho các thành phần không bắt buộc của giao diện
LazyLayoutItemProvider
. (Iba8a0) - Trong API
LazyLayoutItemProvider
, thay vì nhà máy trả về hàm lambda có khả năng kết hợp theo chỉ mục, chúng ta hiện có một mục hàm có khả năng kết hợp đơn giản hơn chấp nhận chỉ mục. (Id2196) - LazyLayoutItemsProvider được đổi tên thành LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
được đổi tên thànhitemCount
(Id409c)- Thêm Brush vào
TextStyle
vàSpanStyle
để đem lại cách vẽ văn bản chuyển màu. (I53869, b/187839528) - Các thuộc tính
trimFirstLineTop
,trimLastLineBottom
củaLineHeightBehavior
đã chuyển thành một giá trị enum duy nhất:LineHeightTrim
.LineHeightTrim
có các giá trị của 4 trạng thái được xác định bằng 2 giá trị boolean:FirstLineTop
,LastLineBottom
, Both (Cả hai) và None (Không có) (Ifc6a5, b/181155707) Đã thêm
LineHeightBehavior
vàoTextStyle
vàParagraphStyle. LineHeightBehavior
kiểm soát việc áp dụng chiều cao dòng cho đầu dòng đầu tiên và cuối dòng cuối cùng. Phần này cũng xác định sự căn chỉnh của dòng trong không gian doTextStyle
(lineHeight
) cung cấp.Ví dụ: có thể lấy hành vi tương tự như CSS đã xác định thông qua
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Các cấu hình
trimFirstLineTop
,trimLastLineBottom
chỉ hoạt động chính xác khiincludeFontPadding
sai. (I97332, b/181155707)Thêm đối tượng sửa đổi
imeNestedScroll()
thử nghiệm để các nhà phát triển có thể kiểm soát IME bằng cách cuộn. (I60759)
Sửa lỗi
- Khắc phục hồi quy, trong đó các trường văn bản sẽ không ẩn bàn phím khi bị xoá khỏi kết hợp trong khi đặt tiêu điểm. (I7a410, b/230536793, b/225541817)
- 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)
BringIntoViewRequester.bringIntoView
hiện tại sẽ luôn tạm hoãn cho đến khi yêu cầu được hoàn tất hoặc bị gián đoạn bởi một yêu cầu mới hơn, không chồng chéo. Các yêu cầu trùng lặp sẽ được đưa vào hàng đợi. (I43e7f, b/216790855)- Giờ đây,
BringIntoViewRequester.bringIntoView
đồng thời gọi các hình chữ nhật trùng lặp hoàn toàn sẽ chỉ đáp ứng yêu cầu của hình chữ nhật lớn hơn. (I34be7, b/216790855, b/184760918) - 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) Modifier.bringIntoViewRequester
không sử dụngonGloballyPositioned
nữa. (I630f5)
Đóng góp bên ngoài
MouseInjectionScope.scroll(delta = someDelta)
hiện sẽ đảo ngược trên Android nếu chúng ta cuộn theo chiều dọc (nếu someDelta dương thì nó sẽ di chuyển xuống dưới) (Ifb697, b/224992993)
Phiên bản 1.2.0-alpha08
Ngày 20 tháng 4 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha08
và androidx.compose.foundation:foundation-layout:1.2.0-alpha08
. Phiên bản 1.2.0-alpha08 bao gồm các thay đổi sau.
Thay đổi API
- 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) - Đ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)- Mức sử dụng một phần (giảm/không có vị trí) trong
PointerInputChange
sẽ không được dùng nữa. Bạn có thể dùngconsume()
để thay đổi hoàn toàn. Bạn có thể sử dụngisConsumed
để xác định xem ai đó đã từng thực hiện thay đổi trước đây hay chưa. - Giờ đây,
PointerInputChange::copy()
luôn tạo một bản sao nông. Điều này có nghĩa là các bản sao củaPointerInputChange
sẽ được sử dụng sau khi một trong các bản sao được sử dụng. Nếu bạn muốn tạo mộtPointerInputChange
không liên kết, hãy dùng hàm khởi tạo. (Ie6be4, b/225669674) - Ra mắt API
LazyLayout
thử nghiệm mới. Thao tác này cho phép bạn tự tạo các thành phần nhưLazyColumn
/LazyVerticalGrid
. Xin lưu ý rằng API này đang ở giai đoạn đầu và có thể thay đổi trong các bản phát hành sau này. (Iba2bc, b/166591700) - Giờ đây,
AndroidFont
sẽ lấytypefaceLoader
làm thông số hàm dựng. (I2c971) - Thuộc tính đồng hành
WindowInsets
hiện cho biết chế độ hiển thị (cho dù có xuất hiện trên màn hình hay không và bất kể có giao cắt với cửa sổ hay không), cũng như kích thước có sẵn khi những thuộc tính đồng hành đó có trên thiết bị, nhưng hiện không hoạt động. (I65182, b/217770337)
Phiên bản 1.2.0-alpha07
Ngày 6 tháng 4 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha07
và androidx.compose.foundation:foundation-layout: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 API
PinnableParent
cho phép bố cục lazy con để ngăn việc sắp xếp các mục hiện có (Ibbdd0, b/184670295) LazyListLayoutInfo
vàLazyGridLayoutInfo
hiện có các trườngbeforeContentPadding
vàafterContentPadding
(I3b628, b/200920410)- Thêm
KeyboardType.Decimal
làm giải pháp thay thế choKeyboard.Number
để thêm riêng dấu phân tách số thập phân trong IME. (Iec4c8, b/209835363) - Thêm bộ mô tả phông chữ mới Font(DeviceFontFamilyName) để tuỳ ý tra cứu phông chữ do hệ thống cài đặt trong chuỗi dự phòng phông chữ. (I30468, b/219754572)
PointerEventType.Scroll
vàPointerEvent.scrollDelta
hiện là các API ổn định (I574c5, b/225669674)- Bạn có thể thay đổi cấu hình khả năng tương thích tạm thời đối với
includeFontPadding
trongTextStyle/ParagraphStyle. includeFontPadding
thông quaTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Đây là tuỳ chọn cấu hình tạm thời để bật tính năng di chuyển và sẽ bị xoá. (If47be, b/171394808) - 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) - Thuộc tính tiện ích
consumeWindowInsets
củaComposeView
cho phép nhà phát triển vô hiệu hoá việc sử dụng Tập hợp Android WindowInsets. Việc này cho phép sử dụngComposeViews
riêng biệt trong hệ phân cấp, áp dụng vớiWindowInsets
mà không gây cản trở cho nhau. (I0ef08, b/220943142)
Phiên bản 1.2.0-alpha06
Ngày 23 tháng 3 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha06
và androidx.compose.foundation:foundation-layout:1.2.0-alpha06
. Phiên bản 1.2.0-alpha06 bao gồm các thay đổi sau.
Thay đổi về API
- Đã thêm hành động ngữ nghĩa
RequestFocus
để yêu cầu tập trung vào mục tiêu có thể đặt tiêu điểm. (I17b71) FocusOrder
hiện đã được hợp nhất vàoFocusProperties
vàfocusProperties()
hiện có tất cả các tính năng củafocusOrder()
. Ngừng sử dụngFocusOrder
vàfocusOrder()
.focusOrder()
chấp nhận mộtfocusRequester
sẽ được thay thế bằng đối tượng sửa đổifocusRequester()
kết hợp vớifocusProperties()
. Điều này cho phép đối tượng sửa đổi phân tách các mối quan ngại mạnh mẽ hơn. (I601b7)- Đã thêm
WindowInsets.asPaddingValues(Density)
để cho phép nhà phát triển thực hiện chuyển đổi mà không cần phải kết hợp. (I94c35) - Cập nhật số liệu phân tích cú pháp các vectơ vẽ được để hỗ trợ tính năng tự động phản chiếu nhằm lật nội dung của
VectorPainter
nếu hướng bố cục hiện tại là RTL. (I79cd9, b/185760237)
Sửa lỗi
- Đối tượng sửa đổi cuộn (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
vàModifier.scrollable()
) hiện sẽ cuộn để duy trì thành phần kết hợp tập trung có thể hiển thị nếu khu vực cuộn được thay đổi kích thước và thành phần kết hợp đã hiển thị trước đó. - Giờ đây, các trường văn bản TextField sẽ được giữ ở phía trên bàn phím khi các trường này được lấy làm tâm điểm và bàn phím hiển thị khi ở nội dung cuộn được tải toàn bộ và chế độ nhập mềm là
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
Phiên bản 1.2.0-alpha05
Ngày 9 tháng 3 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha05
và androidx.compose.foundation:foundation-layout:1.2.0-alpha05
. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.
Các thay đổi về API
LazyVerticalGrid
vàLazyHorizontalGrid
hiện đang ổn định. (I307c0)LazyGridItemInfo.Unknown
đã được thay thế bằngLazyGridItemInfo.UnknownRow
vàLazyGridItemInfo.UnknownColumn
riêng biệt (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
và tất cả API có liên quan đã được di chuyển vào gói con.grid
. Vui lòng cập nhật các mục nhập của bạn từandroidx.compose.foundation.lazy
thànhandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Văn bản:
includeFontPadding
hiện được tắt theo mặc định. Chúng tôi đã xử lý các sự cố cắt từ doincludeFontPadding=false
và hiện tượng cắt từ sẽ không nảy sinh trong các tập lệnh có phông chữ cao. (I31c84, b/171394808) - Giao diện được đo lường giờ biểu thị thuộc tính parentData (I3313f)
- Ra mắt
Modifier.onFocusedBoundsChanged
thử nghiệm để cho phép quan sát giới hạn của nội dung con có thể làm tâm điểm. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Thêm LazyHorizontalGrid. (I61ae7, b/191238807)
- Thêm API
LazyVerticalGrid
mới để xác định kích thước trục chéo (I17723) - Thêm đối tượng sửa đổi FocusGroup (I64bc0, b/213508274, b/184670295)
Sửa lỗi
WindowInsets.toString()
giờ sẽ hiển thị các giá trị chính xác. (I1585d)
Đóng góp bên ngoài
- Cập nhật để sử dụng các coroutine Kotlinx 1.6.0 (I3366d)
Phiên bản 1.2.0-alpha04
Ngày 23 tháng 2 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha04
và androidx.compose.foundation:foundation-layout:1.2.0-alpha04
. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.
Thay đổi API
BringIntoViewResponders
không còn phải truyền yêu cầu cho trình phản hồi mẹ theo cách thủ công mà thay vào đó, cần phải trả về tức thời hình chữ nhật mà các mã đó muốn thành phần mẹ đưa vào khung hiển thị. (I8e66a)- Hỗ trợ tải phông chữ không đồng bộ trong Văn bản (I77057, b/214587005)
LazyVerticalGrid
hiện hỗ trợline breaking
trước các mục có độ dài không khớp với dòng hiện tại. (I05c40, b/207462103)- Đổi tên
excludeFromSystemGestures
thànhsystemGesturesExclusion
(I19526) LazyVerticalGrid
hiện đã hỗ trợ reverseLayout. (I6d7d7, b/215572963, b/211753558)- Thêm phương thức
WindowInsets.only()
để cho phép các nhà phát triển chỉ bao gồm các kích thước từ WindowInsets. (I14c94, b/217768486) Thêm
ComposableTarget
,ComposableTargetMarker
vàComposableOpenTarget
cho phép báo cáo thời gian biên dịch khi gọi một hàm có khả năng kết hợp nhắm đến một trình áp dụng mà 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 bổ trợ trình biên dịch Compose có thể suy ra các chú giải. Do đó, các chú giải này hiếm khi được sử dụng trực tiếp. Có những trường hợp không thể dự đoán được như việc tạo và sử dụng các hàm trừu tượng có khả năng kết hợp, trình áp dụng tuỳ chỉnh (chẳng hạn như phương thức giao diện), các trường hoặc biến toàn cục là các biểu thức lambda có khả năng kết hợp (biến và tham số cục bộ được suy đoán), hoặc khi sử dụng
ComposeNode
hoặc hàm có khả năng kết hợp liên quan.Đối với các trình áp dụng tuỳ chỉnh, những hàm có khả năng kết hợp gọi
ComposeNode
hoặcReusableComposeNode
cần thêm chú giảiCompoableTarget
cho hàm đó và mọi loại tham số lambda có khả năng kết hợp. Tuy nhiên, bạn nên tạo chú giải được chú thích bằngComposableTargetMarker
, sau đó trực tiếp sử dụng chú giải được đánh dấu thay choComposableTarget
. Một chú giải của thành phần kết hợp được đánh dấu bằngComposableTargetMarker
sẽ tương đương vớiComposbleTarget
có tên đủ điều kiện của lớp thuộc tính dưới dạng tham số của trình áp dụng. Để biết ví dụ về cách sử dụngComposableTargetMarker
, vui lòng xemanroidx.compose.ui.UiComposable
. (I38f11)
Sửa lỗi
- Bạn hiện có thể truyền giá trị âm của độ dời thanh cuộn vào
LazyGridState.scrollToItem()
vàLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Hỗ trợ tải phông chữ không đồng bộ cho TextField. (Icc4bf, b/214587005)
Phiên bản 1.2.0-alpha03
Ngày 9 tháng 2 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha03
và androidx.compose.foundation:foundation-layout:1.2.0-alpha03
. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.
Thay đổi về API
- Hiện ngừng sử dụng và sẽ không gọi các phương thức
notifyFocusedRect
trongTextInputSession
vàTextInputService
nữa. Thay thế bằngBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Bật ảnh động cho các mục của lưới lazy bằng Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
hiện đang phổ biến các yêu cầu đến Android View lưu trữ. (Ia7a51)FontFamilyResolver
hiện được cung cấp thông quaLocalFontFamilyResolver.current
- Thêm
createFontFamilyResolver(context)
vàcreateFontFamilyResolver(context, coroutineScope)
để tạo các trình phân giải FontFamily mới cho việc sử dụng bên ngoài Compose. - Đoạn và nhiều Đoạn hiện sử dụng mã
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
hiện chứa trình phân giải dùng cho bố cục này, đã ngừng sử dụngTextLayoutResult.layoutInput.resourceLoader
vì mã này không còn được dùng nữa. (Id5a45, b/174162090)
- Thêm
- Thêm
AndroidFont
, một API cấp độ thấp mới để cung cấp các loại trình mô tả tài nguyên phông chữ mới trên Android. Ví dụ: tải phông chữ từ một lệnh phụ trợ cụ thể cho ứng dụng, tuỳ chọn định vị phông chữ cài đặt sẵn trên thiết bị hoặc tải phông chữ từ một tài nguyên không do nhà máy Font (Phông chữ) hiện tại cung cấp.- Mở rộng API
Font.ResourceLoaded
để hỗ trợ việc tải phông chữ không bắt buộc và không đồng bộ. Các nhà phát triển ứng dụng không nên trực tiếp sử dụng API này. Để thêm các loại phông chữ mới, hãy xem AndroidFont. - Hàm mở rộng
Font.AndroidResourceLoader
cho phép tạo mộtFont.ResourceLoader
khi ở bên ngoài cấu trúc. - Thêm tham số
loadingStrategy
vào các phông chữ dựa trên tài nguyên để cho phép tải không đồng bộ khi phông chữ tài nguyên tham chiếu đến XML của phông chữ có thể tải xuống. (Ie5aea, b/174162090)
- Mở rộng API
- Ngừng sử dụng hàm khởi tạo
Typeface(FontFamily)
. Trước đây, hàm này dùng để tải trước phông chữ và có thể mất đến 10 giây để tải xuống các phông chữ. Với phông chữ có thể tải xuống, lệnh gọi này có thể chặn trong 10 giây. Thay vào đó, hãy sử dụngFontFamilyResolver.preload
- Ngừng sử dụng
fontResource(FontFamily): Typeface
. Trước đây, hàm này dùng để tải trước phông chữ và có thể mất đến 10 giây để tải xuống các phông chữ. Thay vào đó, hãy sử dụngFontFamilyResolver.preload
(If8e7c, b/174162090)
- Ngừng sử dụng
- Hiện bạn có thể chỉ định loại nội dung cho các mục của
LazyVerticalGrid
- các hàm của mục/các mục trênLazyGridScope
hiện chấp nhận thông số đó. Việc cung cấp những thông tin như vậy giúp thành phần mục sử dụng lại logic để làm cho mục trở nên hiệu quả hơn và chỉ sử dụng lại nội dung giữa các mục cùng loại. (I7b355, b/215372836) LazyListLayoutInfo
vàLazyGridLayoutInfo
hiện có các thuộc tính mới:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Giờ đây, bạn có thể chỉ định loại nội dung cho các mục của LazyColumn/LazyRow - các hàm mục/các mục trên LazyListScope hiện chấp nhận thông số đó. Việc cung cấp những thông tin như vậy giúp thành phần mục sử dụng lại logic để làm cho mục trở nên hiệu quả hơn và chỉ sử dụng lại nội dung giữa các mục cùng loại. (I26506)
- Hiện ngừng sử dụng hàm khởi tạo
SubcomposeLayoutState
chấp nhậnmaxSlotsToRetainForReuse
. Thay vào đó, có một hàm khởi tạo mới chấp nhậnSubcomposeSlotReusePolicy
– một giao diện mới cho phép bạn kiểm soát chi tiết hơn về việc cần giữ lại những khe nào để tái sử dụng trong tương lai. (I52c4d) - Thêm Đối tượng sửa đổi cho WindowInsets, cả khoảng đệm và kích thước. Điều này cho phép một số nội dung mở rộng vào vùng lồng ghép và vẫn có nội dung chính nằm ngoài vùng lồng ghép. Ví dụ: bạn có thể sử dụng windowInsetsPadding để lồng ghép vùng nội dung nhằm tránh những vùng có thể bị che phủ toàn bộ hoặc một phần. (Id0395, b/213942085)
Sửa lỗi
- Giờ đây, các trường văn bản TextField sẽ được giữ ở phía trên bàn phím khi các trường này được lấy làm tâm điểm và bàn phím hiển thị khi chế độ nhập mềm là
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Màn hình sử dụng chức năng tạo cục bộ cho
FontFamily.Resolver
- Ngừng sử dụng
FontLoader
dành cho máy tính - Lập trình hướng đối tượng mã
createFontFamilyResolver
mới trên Máy tính (I6bbbb, b/174162090)
- Ngừng sử dụng
- Kiểu nhập bằng bàn phím mềm không còn nhấp nháy khi thay đổi tâm điểm giữa các trường văn bản. (I1bf50, b/187746439)
- Trường văn bản không còn yêu cầu thêm thao tác nhấn lùi nữa khi tay cầm con trỏ đang hiển thị. (Ideb4b, b/205726883)
- Hoạt động phóng to lựa chọn văn bản đã được hoàn thiện để phù hợp với tính năng phóng to nền tảng. (Idd918, b/206833278)
Phiên bản 1.2.0-alpha02
Ngày 26 tháng 1 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha02
và androidx.compose.foundation:foundation-layout:1.2.0-alpha02
. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm
NonRestartableComposable
vào các phương thức đang làm quá tải những phương thức hiện có mà không cần logic phức tạp. Điều này giảm bớt các bước kiểm tra ghi nhớ do trình biên dịch tạo ra (các bước cân bằng) cho mọi tham số lặp lại ở hàm bên trong được gọi. (I90490) - Thêm Đối tượng sửa đổi
excludeFromSystemGesture
để dễ dàng truy cập vàosetSystemGestureExclusionRects
của Android (I46f07)
Sửa lỗi
- Hoạt động phóng to lựa chọn văn bản đã được hoàn thiện để phù hợp với tính năng phóng to nền tảng. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
và các vùng chứa khác sử dụngModifier.scrollable
hiện hỗ trợ việc cuộn trang dùng con lăn chuột. (I2b5e1, b/198214718)
Phiên bản 1.2.0-alpha01
Ngày 12 tháng 1 năm 2022
Phát hành androidx.compose.foundation:foundation:1.2.0-alpha01
và androidx.compose.foundation:foundation-layout:1.2.0-alpha01
. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.
Thay đổi API
- Thêm tham số mới
userScrollEnabled
vàoLazyColumn
,LazyRow
vàLazyVerticalGrid
để cho phép người dùng tắt tạm thời hoặc vĩnh viễn thanh cuộn do người dùng bật thông qua các cử chỉ nhấn hoặc thao tác hỗ trợ tiếp cận. Thao tác có lập trình thông qua các phương thức ở trạng thái này vẫn được cho phép. (I7eae9, b/201150093) - Thêm lệnh gọi lại
onSizeChanged
vào đối tượng sửa đổi tính năng phóng to. (I6879f) - Giờ đây, tiện ích phóng to sẽ hiển thị khi kéo ô điều khiển lựa chọn
trong
SelectionContainer
. (I30b38, b/139320979)
Sửa lỗi
- Sửa lỗi ô điều khiển con trỏ
TextField
không ẩn khi người dùng cuộn ra khỏi chế độ xem. (I14552, b/208883748)
Thông tin cập nhật về phần phụ thuộc
- Hiện phụ thuộc vào Kotlin
1.6.10
.
Phiên bản 1.1
Phiên bản 1.1.1
Ngày 23 tháng 2 năm 2022
Phát hành androidx.compose.foundation:foundation:1.1.1
và androidx.compose.foundation:foundation-layout:1.1.1
. 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.foundation:foundation:1.1.0
và androidx.compose.foundation:foundation-layout:1.1.0
. Phiên bản 1.1.0 bao gồm các thay đổi sau.
Thay đổi quan trọng kể từ phiên bản 1.0.0
- Hỗ trợ ổn định cho hiệu ứng Cuộn quá mức của Android 12
- Những cải tiến đối với kích thước đích chạm
- Lưu ý rằng, đối với phiên bản Compose 1.0, các thành phần Material sẽ mở rộng không gian bố cục để đáp ứng các nguyên tắc hỗ trợ tiếp cận của Material cho kích thước đích chạm. Ví dụ: đích chạm Button (Nút) sẽ mở rộng tới kích thước tối thiểu 48 x 48 dp, ngay cả khi bạn đặt kích thước nhỏ hơn cho Nút. Nhờ vậy, Compose Material được điều chỉnh phù hợp với hành vi tương ứng của các Thành phần Material Design, tạo ra hành vi nhất quán khi kết hợp Khung hiển thị và Compose. Sự thay đổi này cũng đảm bảo rằng khi bạn tạo giao diện người dùng bằng các thành phần Compose Material, những yêu cầu tối thiểu về hỗ trợ tiếp cận đích chạm sẽ được đáp ứng.
- Hỗ trợ ổn định cho Dải điều hướng (Navigation Rail)
- Ổn định một số API thử nghiệm trước đây
- 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
Phát hành androidx.compose.foundation:foundation:1.1.0-rc03
và androidx.compose.foundation:foundation-layout:1.1.0-rc03
. 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
Phát hành androidx.compose.foundation:foundation:1.1.0-rc01
và androidx.compose.foundation:foundation-layout:1.1.0-rc01
. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.
Sửa lỗi
- Bạn hiện có thể truyền giá trị âm của độ dời thanh cuộn vào
LazyListState.scrollToItem()
vàLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Sửa lỗi gây ra sự cố thiếu thao tác cuộn hỗ trợ tiếp cận (I7cbfb)
Phiên bản 1.1.0-beta04
Ngày 1 tháng 12 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-beta04
và androidx.compose.foundation:foundation-layout:1.1.0-beta04
. 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
- Xoá sạch giá trị rỗng trong
androidx.core.view
(I7078a, b/204917439) - Experimental API (API thử nghiệm) đã được thêm vào cho phép sử dụng toàn bộ PointerInputchange hoặc kiểm tra xem nó có được sử dụng hay không. (I2e59d)
- Hiển thị một tiện ích phóng to khi kéo con trỏ hoặc ô điều khiển lựa chọn bên trong các trường văn bản. (I5391e, b/203781358)
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
Phát hành androidx.compose.foundation:foundation:1.1.0-beta03
và androidx.compose.foundation:foundation-layout:1.1.0-beta03
. Phiên bản 1.1.0-beta03 bao gồm các thay đổi sau.
Thay đổi API
- Thêm tuỳ chọn hỗ trợ cho việc trải rộng sang chiều ngang vào LazyVerticalGrid. (I7e2fa, b/176758183)
Thêm khả năng thử nghiệm để tạo ảnh động cho danh sách Lazy theo yêu cầu các vị trí của mục. Có một công cụ sửa đổi mới trong LazyItemScope có tên là
Modifier.animateItemPlacement()
. Ví dụ về cách sử dụng:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Khi bạn cung cấp khoá qua
LazyListScope.item
hoặcLazyListScope.items
, đối tượng sửa đổi này sẽ bật tính năng mục sắp xếp lại thứ tự của ảnh động. Bên cạnh mục sắp xếp lại các mục, tất cả các thay đổi khác về vị trí do các sự kiện như sắp xếp hoặc thay đổi căn chỉnh gây ra, bạn cũng có thể tạo ảnh động. (I59e7b, b/150812265)
- Khi bạn cung cấp khoá qua
Phiên bản 1.1.0-beta02
Ngày 3 tháng 11 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-beta02
và androidx.compose.foundation:foundation-layout:1.1.0-beta02
. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.
Sửa lỗi
- Tính năng gợn sóng và các chỉ báo khác hiện sẽ chỉ bị trễ nếu nằm trong vùng chứa
Modifier.scrollable()
, thay vì luôn bị trì hoãn khi một sự kiện xảy ra. (Ibefe0, b/203141462) - 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 và đưa một mục vào khung hiển thị (Ib918d, b/195353459)
Đó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
Phát hành androidx.compose.foundation:foundation:1.1.0-beta01
và androidx.compose.foundation:foundation-layout:1.1.0-beta01
. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.
Sửa lỗi
- 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 và đưa một mục vào khung hiển thị (Ib918d, b/195353459)
Phiên bản 1.1.0-alpha06
Ngày 13 tháng 10 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-alpha06
và androidx.compose.foundation:foundation-layout:1.1.0-alpha06
. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.
Các thay đổi về API
- Thêm tuỳ chọn nạp chồng không có thành phần con cho Bố cục (Layout) với hiệu quả được cải thiện (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
hiện trả vềSemanticsNodeInteraction
mà hàm được gọi. (I9e5db)- Thêm
performScrollToNode(matcher: SemanticsMatcher)
có thể cuộn một vùng chứa cuộn được vào nội dung phù hợp với trình so khớp nhất định. (Ic1cb8)
Phiên bản 1.1.0-alpha05
Ngày 29 tháng 9 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-alpha05
và androidx.compose.foundation:foundation-layout:1.1.0-alpha05
. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.
Thay đổi API
- Thêm con trỏ nhật ký thử nghiệm vào PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Sửa lỗi
- Khắc phục khả năng hỗ trợ tiếp cận cho nội dung cuộn được (cả tải từng phần và tải toàn bộ) với tính năng cuộn (I6cdb0)
Phiên bản 1.1.0-alpha04
Ngày 15 tháng 9 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-alpha04
và androidx.compose.foundation:foundation-layout:1.1.0-alpha04
. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.
Các thay đổi về API
- Ngừng sử dụng
performGesture
vàGestureScope
, thay thế bằngperformTouchInput
vàTouchInjectionScope
. (Ia5f3f, b/190493367) - Thêm
touchBoundsInRoot
vàoSemanticsNode
có kích thước đích chạm tối thiểu để nhà phát triển có thể đảm bảo rằng đích chạm đáp ứng các tiêu chí tối thiểu về khả năng hỗ trợ tiếp cận. (I2e14b, b/197751214)
Sửa lỗi
- Hỗ trợ hiệu ứng kéo giãn khi cuộn quá mức trên các thiết bị Android 12. (Iccf3c, b/171682480)
Phiên bản 1.1.0-alpha03
Ngày 1 tháng 9 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-alpha03
và androidx.compose.foundation:foundation-layout:1.1.0-alpha03
. Phiên bản 1.1.0-alpha03 bao gồm các thay đổi sau.
Tính năng mới
- Cập nhật
1.1.0-alpha03
của Compose để phụ thuộc vào Kotlin1.5.30
. (I74545)
Thay đổi API
- Thêm hiệu ứng toả sáng cho thanh cuộn. Thêm OverScrollConfiguration API mới thử nghiệm để cho phép định cấu hình hiệu ứng hình ảnh cuộn quá mức. Cung cấp giá trị rỗng để tắt hiệu ứng cuộn quá mức. (I0c304, b/171682480)
- AwaitPointerEventScope hiện có với withTimeout() và withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Thêm phương thức kiểm thử để lấy giới hạn được cắt đoạn. (I6b28e)
- Thêm kích thước đích chạm tối thiểu vào ViewConfiguration để sử dụng trong ngữ nghĩa và phương thức nhập con trỏ, giúp đảm bảo khả năng hỗ trợ tiếp cận. (Ie861c)
Phiên bản 1.1.0-alpha02
Ngày 18 tháng 8 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-alpha02
và androidx.compose.foundation:foundation-layout:1.1.0-alpha02
. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.
Thay đổi API
- Thêm các phiên bản DpSize cho
Modifier.size
vàrequiredSize
(I3fc7e, b/194219828)
Phiên bản 1.1.0-alpha01
Ngày 4 tháng 8 năm 2021
Phát hành androidx.compose.foundation:foundation:1.1.0-alpha01
và androidx.compose.foundation:foundation-layout:1.1.0-alpha01
. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.
Các thay đổi về API
- Cập nhật phương thức
DrawScope#drawImage
sử dụng các nguồn và nguồn đích đến để sử dụng thông số FilterQuality không bắt buộc. Cách này hữu ích cho các hình ảnh pixel dùng để tạo pixel khi phóng to cho các hình ảnh dựa trên pixel. Cập nhật thành phần kết hợp BitmapPainter + Image (BitmapPainter + Hình ảnh) để sử dụng tham số FilterQuality tuỳ chọn (Ie4fb0, b/180311607) - Giờ đây, TextField xoá lựa chọn khi nhấn nút quay lại, khớp với hoạt động của Android EditText. (I3ca16, b/174173645)
- Thêm Ô điều khiển con trỏ. (I07a82, b/173016579)
Sửa lỗi
- Việc cuộn qua các hành động ngữ nghĩa cho danh sách lazy và các thành phần cuộn thông thường hiện là ảnh động (Id9066, b/190742024)
Đóng góp bên ngoài
- Giờ đây,
LazyVerticalGrid
chấp nhận cả thông số sắp xếp theo chiều ngang và chiều dọc. (If9c92)
Phiên bản 1.0
Phiên bản 1.0.5
Ngày 3 tháng 11 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.5
và androidx.compose.foundation:foundation-layout:1.0.5
. Phiên bản 1.0.5 bao gồm các thay đổi sau.
Sửa lỗi
- Khắc phục sự cố theo dõi các thực thể derivedStateOf. (aosp/1792247)
Phiên bản 1.0.4
Ngày 13 tháng 10 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.4
và androidx.compose.foundation:foundation-layout:1.0.4
. 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
Phát hành androidx.compose.foundation:foundation:1.0.3
và androidx.compose.foundation:foundation-layout:1.0.3
. 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.foundation:foundation:1.0.2
và androidx.compose.foundation:foundation-layout: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
Phát hành androidx.compose.foundation:foundation:1.0.1
và androidx.compose.foundation:foundation-layout:1.0.1
. 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
Phát hành androidx.compose.foundation:foundation:1.0.0
và androidx.compose.foundation:foundation-layout:1.0.0
. Phiên bản 1.0.0 bao gồm các thay đổi sau.
Các tính năng chính của phiên bản 1.0.0
Đây là bản phát hành chính thức đầu tiên của ứng dụng Compose. Vui lòng xem blog về Bản phát hành Compose chính thức để biết thêm thông tin chi tiết!
Lỗi đã biết
Nếu đang sử dụng Android Studio Bumblebee Canary 4 hoặc AGP
7.1.0-alpha04
/7.1.0-alpha05
, bạn có thể gặp sự cố sau đây:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Để khắc phục, hãy tạm thời tăng giá trị minSdkVersion lên 24 trở lên trong tệp
build.gradle
. Sự cố này sẽ được khắc phục trong phiên bản tiếp theo của Android Studio Bumblebee và AGP7.1
. (b/194289155)
Phiên bản 1.0.0-rc02
Ngày 14 tháng 7 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-rc02
và androidx.compose.foundation:foundation-layout:1.0.0-rc02
. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.
- Cập nhật tính năng hiển thị đường viền cho các hình dạng chung để giải quyết vấn đề với các đường dẫn được xác định với những kích thước cố định. (aosp/1748871, b/191817116)
Phiên bản 1.0.0-rc01
Ngày 1 tháng 7 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-rc01
và androidx.compose.foundation:foundation-layout:1.0.0-rc01
. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.
Thay đổi API
- Canvas hiện hỗ trợ tham số contentDescription dành cho tính năng hỗ trợ tiếp cận. (Ib547c)
Sửa lỗi
- Button (Nút), Card (Thẻ), Checkbox (Hộp đánh dấu) và
Modifier.clickable(enabled=false)
tổng thể đã tắt sẽ chặn lượt nhấp, không cho chuyển lên thành phần mẹ. (Ic2c3b, b/183908811)
Phiên bản 1.0.0-beta09
Ngày 16 tháng 6 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta09
và androidx.compose.foundation:foundation-layout:1.0.0-beta09
. Phiên bản 1.0.0-beta09 bao gồm các thay đổi sau.
Thay đổi API
- Xoá
ManualFrameClock
. Nếu bạn cần kiểm soát hiệu ứng chuyển động, hãy sử dụngcomposeTestRule.mainClock
. (I3c3e8, b/189951065) - Thay đổi Vai trò enum và LiveRegionMode thành các lớp nội tuyến 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)
- TextOverflow được thay đổi thành lớp cùng dòng. (I433af)
Sửa lỗi
- Giờ đây, khi bạn chỉ định các khoá duy nhất cho các mục LazyColumn/Row, vị trí cuộn sẽ được duy trì dựa trên khoá, điều này có nghĩa là nếu bạn thêm/xoá các mục trước mục hiển thị hiện tại, mục có khoá nhất định sẽ được giữ làm mục hiển thị đầu tiên. (Id263f, b/184257857)
- Các hằng số chính hiện tại là @ExperimentalComposeUiApi. Việc sử dụng mã có thể khai báo các hằng số riêng trước khi ổn định. (Ia5d48)
- Thêm IdlingStrategy vào AndroidComposeTestRule có thể được sử dụng bằng các khung kiểm thử để cài đặt một cơ chế thay thế nhằm chờ hoặc có được tín hiệu. Sử dụng
AndroidComposeTestRule.setIdlingStrategyFactory()
trước khi thử nghiệm bắt đầu cài đặt chiến lược của riêng bạn. (I608fa)
Bổ sung quy tắc hồ sơ
Bản phát hành này bổ sung các quy tắc hồ sơ cho những mô-đun Compose sau (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Quy tắc hồ sơ là gì?
Quy tắc hồ sơ cho thư viện được chỉ định trong tệp văn bản
baseline-prof.txt
nằm trongsrc/main
hoặc thư mục tương đương. Tệp này chỉ định quy tắc trên mỗi dòng, trong đó quy tắc trong trường hợp này là mẫu để khớp với phương thức hoặc lớp trong thư viện. Cú pháp cho các quy tắc này là tập mẹ của định dạng hồ sơ ART mà con người có thể đọc được, được dùng khi sử dụngadb shell profman --dump-classes-and-methods ...
. Các quy tắc này dùng một trong hai biểu mẫu để nhắm mục tiêu vào phương thức hoặc lớp.Quy tắc phương thức sẽ có mẫu sau:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Và quy tắc lớp sẽ có mẫu sau:
<CLASS_DESCRIPTOR>
Ở đây,
<FLAGS>
là một hoặc nhiều ký tự trong số các ký tựH
,S
vàP
để cho biết có cần gắn cờ "Hot", "Startup" hoặc "Post Startup" cho phương thức này hay không.<CLASS_DESCRIPTOR>
là phần mô tả cho lớp chứa phương thức được nhắm mục tiêu. Ví dụ: lớpandroidx.compose.runtime.SlotTable
sẽ có phần mô tả làLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
là chữ ký của phương thức và bao gồm tên, loại thông số và loại dữ liệu trả về của phương thức. Ví dụ: phương thứcfun isPlaced(): Boolean
trênLayoutNode
có chữ kýisPlaced()Z
.Những mẫu này có thể có ký tự đại diện (
**
,*
và?
) để có một quy tắc duy nhất bao gồm nhiều lớp hoặc phương thức.
Những quy tắc này có chức năng gì?
Phương thức có cờ
H
cho biết rằng phương thức này là một phương thức "khởi động nóng" và phải được biên dịch trước.Phương thức có cờ
S
cho biết đây là phương thức được gọi khi khởi động và phải được biên dịch trước khi thực thi để tránh chi phí biên dịch và diễn giải phương thức này tại thời điểm khởi động.Phương thức có cờ
P
cho biết đây là phương thức được gọi sau khi khởi động.Một lớp có trong tệp này cho biết rằng lớp này được dùng trong khi khởi động và cần được phân bổ trước trong vùng nhớ khối xếp để tránh chi phí tải lớp.
Cơ chế này hoạt động như thế nào?
- Thư viện có thể xác định những quy tắc sẽ được đóng gói trong cấu phần phần mềm AAR. Khi một ứng dụng được tạo bao gồm các cấu phần phần mềm này, các quy tắc này được hợp nhất với nhau và các quy tắc hợp nhất được dùng để tạo ra một hồ sơ ART nhị phân nhỏ gọn dành riêng cho ứng dụng. Sau đó, ART có thể tận dụng hồ sơ này khi ứng dụng được cài đặt trên thiết bị để biên dịch trước một tập hợp con cụ thể của ứng dụng nhằm cải thiện hiệu suất của ứng dụng, đặc biệt là lần chạy đầu tiên. Lưu ý rằng việc này sẽ không ảnh hưởng đến các ứng dụng có thể gỡ lỗi.
Phiên bản 1.0.0-beta08
Ngày 2 tháng 6 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta08
và androidx.compose.foundation:foundation-layout:1.0.0-beta08
. 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 nội tuyến. (Ie321b, b/187055290)
- Cách sử dụng enum tái cấu trúc cho các lớp nội tuyến để tránh các vấn đề với các câu lệnh when đầy đủ khi các giá trị enum mới được thêm. (I2b5eb)
- Thêm thời gian chờ nhấn vào nút có thể nhấp hoặc bật/tắt để ngăn hiển thị gợn sóng trong khi cuộn/kéo (Ia2704, b/168524931)
- Thuộc tính ngữ nghĩa của ContentDescription và Text (Văn bản) không còn là giá trị đơn lẻ nữa mà là danh sách. Điều này cho phép hợp nhất chúng nguyên vẹn thay vì thực hiện phép nối. Đồng thời cung cấp các API kiểm thử tốt hơn để tận dụng những thay đổi này (Ica6bf, b/184825850)
- Ngừng sử dụng
Modifier.focusModifier()
và thay thế bằngModifier.focusTarget()
(I6c860) - Loại 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)
- 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.
- PaddingValues hiện là
@Stable
thay vì@Immutable
(I88c50)
Sửa lỗi
- Khắc phục các sự cố khi nhấn và giữ vùng trống trong văn bản không trống. (I33ab5, b/187437299)
- Hiển thị Thanh công cụ sau SelectAll (I495d9, b/185919613)
- Khắc phục lỗi đối với các vùng chứa có thể cuộn cắt thành các thành phần con cháu trên trục chéo. Hệ thống có thể dễ dàng tạo lại nếu bạn có LazyRow với các mục Thẻ. Giờ đây, bóng sẽ không bị cắt đoạn. (Icb635, b/186318448)
- Sửa lỗi các gợn sóng/chỉ báo khác đôi lúc bị kẹt ở một cú nhấp và giữ khi sử dụng Modifier.combinedClickable (I2298c, b/186223077)
- 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) - Thay đổi
Modifier.onGloballyPositioned()
để báo cáo các toạ độ của đối tượng sửa đổi này trong chuỗi đối tượng sửa đổi, chứ không phải là toạ độ bố cục sau khi áp dụng tất cả các đối tượng sửa đổi. Tức là thứ tự của các công cụ sửa đổi hiện đang ảnh hưởng đến những toạ độ sẽ được báo cáo. (Ieb67d, b/177926591)
Phiên bản 1.0.0-beta07
Ngày 18 tháng 5 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta07
và androidx.compose.foundation:foundation-layout:1.0.0-beta07
. Phiên bản 1.0.0-beta07 bao gồm các thay đổi sau.
Thay đổi API
- Ra mắt logic tìm nạp trước mục hiển thị tiếp theo cho LazyColumn/Row (I8a4bc, b/184940225)
- Thêm tính năng cắt ô điều khiển lựa chọn (Iff80d, b/183408447)
Sửa lỗi
- Giờ đây, LazyColumn/Row sẽ giữ trạng thái đang hoạt động (chưa bị loại bỏ) cho tối đa 2 mục hiển thị trước đó, ngay cả khi các mục đã bị cuộn ra ngoài. Điều này cho phép thành phần đó sử dụng lại các cấu trúc phụ đang hoạt động khi chúng ta cần kết hợp một mục mới để cải thiện hiệu suất của tính năng cuộn. (Ie5555)
- Xoá paintBackground. (I38660)
- Vẽ nền lựa chọn bằng DrawScope. (I73c61, b/186674472)
- Lệnh hồi quy beta06 ảnh hưởng đến Hàng/Cột bằng cách sử dụng cách sắp xếp spacedBy cho bố cục có trọng số là thành phần con đã được khắc phục. (Ifaf8c, b/187326588)
Phiên bản 1.0.0-beta06
Ngày 5 tháng 5 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta06
và androidx.compose.foundation:foundation-layout:1.0.0-beta06
. Phiên bản 1.0.0-beta06 bao gồm các thay đổi sau.
Thay đổi về API
- Giải quyết Xung đột bằng Cử chỉ điều hướng (I1145e)
- 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
- Hỗ trợ lưu AnnotatedString vào TextFieldValue.Saver. Thêm addTtsAnnotation và với các hàm số hiệu dụng withAnnotation vào AnnotatedString.Builder (I8cbdc, b/178446304)
- Thêm các giá trị tham số
0.dp
mặc định vàoPaddingValues(horizontal, vertical)
(I05571, b/181336792)
Sửa lỗi
- Các thành phần con cháu Hàng và Cột có
weight(fill = false)
không còn giúp thành phần mẹ lấp đầy toàn bộ không gian của trục chính hiện có. (Ied94d, b/186012444, b/184355105)
Phiên bản 1.0.0-beta05
Ngày 21 tháng 4 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta05
và androidx.compose.foundation:foundation-layout:1.0.0-beta05
. Phiên bản 1.0.0-beta05 bao gồm các thay đổi sau.
Thay đổi API
- Giao diện FlingBehavior hiện được đánh dấu là @Stable. Tất cả các thao tác triển khai phải tuân thủ hợp đồng
@Stable
. (I93354, b/184830577)
Sửa lỗi
- Khắc phục các thao tác cuộn hỗ trợ tiếp cận
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
vàaccessibilityActionScrollDown
. Thay vì cuộn xuống cuối của thanh cuộn, giờ đây, trang này sẽ hiển thị theo một màn hình ở hướng nhất định. (Ieccb0) - Các tệp AndroidManifest của ui-test-manifest và ui-tooling-data hiện tương thích với Android 12 (I6f9de, b/184718994)
Phiên bản 1.0.0-beta04
Ngày 7 tháng 4 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta04
và androidx.compose.foundation:foundation-layout:1.0.0-beta04
. 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 trên
SoftwareKeyboardController thành
hide()
vàshow()
.- Cung cấp giao diện CompositionLocal đầy đủ cho LocalSoftwareKeyboardController, cho phép đặt giao diện (đặc biệt hữu ích trong các hoạt động kiểm thử) (I579a6)
- Giới thiệu
TextOverflow.Visible
. (Ic8f89) - Các phiên bản công khai của
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
đã bị xoá. (I4e83e, b/181869067)
Sửa lỗi
- Sửa lỗi các mục của
LazyColumn
/LazyRow
nằm ở các cạnh được đặt không chính xác sau khi hất nhanh (Ie4d13, b/183877420) Trước khi có thay đổi này, có thể bỏ qua các hàm có khả năng kết hợp cục bộ dựa trên tham số của chúng. Sau khi có sự thay đổi này, các hàm có khả năng kết hợp cục bộ sẽ không bỏ qua. Sự thay đổi này là do các hàm cục bộ thường nắm bắt các tham số từ cấp độ gốc và việc bỏ qua chúng là một nguồn lỗi phổ biến.
Để tóm tắt, hãy xem ví dụ:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Trước khi có sự thay đổi này, hàm có khả năng kết hợp
ShowCount
luôn bỏ qua ngay cả sau khi tham sốcount
được cập nhật. Hiện đã có một số thay đổi. (I5648a)
Phiên bản 1.0.0-beta03
Ngày 24 tháng 3 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta03
và androidx.compose.foundation:foundation-layout:1.0.0-beta03
. Phiên bản 1.0.0-beta03 bao gồm các thay đổi sau.
Thay đổi về API
- Ngừng sử dụng
DefaultMonotonicFrameClock
. Giờ đây, việc gọiwithFrameNanos
hoặcRecomposer.runRecomposeAndApplyChanges
mà không cóMonotonicFrameClock
sẽ gửiIllegalStateException
. (I4eb0d)
Sửa lỗi
FlingBehavior.performFling()
hiện được gọi ngay cả khi tốc độ là 0 (I0b6e5, b/181237123)
Phiên bản 1.0.0-beta02
Ngày 10 tháng 3 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta02
và androidx.compose.foundation:foundation-layout:1.0.0-beta02
. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.
Thay đổi API
- Thêm nhiều thao tác tối ưu hoá nhỏ trong logic đo lường LazyColumn (Ic6889)
- 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)
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)
Phiên bản 1.0.0-beta01
Ngày 24 tháng 2 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-beta01
và androidx.compose.foundation:foundation-layout:1.0.0-beta01
. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.
Đây là bản phát hành đầu tiên của Compose 1.0.0 Beta.
Thay đổi về API
- Thêm lệnh gọi lại onStart vào
detectDragGestures
(I67269, b/179995594) - Các đối tượng sửa đổi kích thước cho hàm nội tại không còn là thử nghiệm. (I15744)
- Xoá câu nhận định dp (I798d2)
- Xoá lệnh gọi lại SoftwareKeyboardController khỏi tất cả các trường văn bản để sớm được thay bằng một API mới. (Iae869, b/168778053)
- MeasureBlocks đã được đổi tên thành MeasurePolicy là một giao diện thú vị. Cập nhật/đơn giản hoá API bố cục để sử dụng MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
được thay thế bằng[Mutable]InteractionSource
- Giao diện chịu trách nhiệm phát / thu thập các sự kiện tương tác.
- Thay vì truyền
interactionState = remember { InteractionState() }
vào các thành phần nhưButton
vàModifier.clickable()
, hãy sử dụnginteractionSource = remember { MutableInteractionSource() }
. - Thay vì
Interaction.Pressed in interactionState
, bạn nên dùng các hàm mở rộng trên InteractionSource, chẳng hạn như InteractionSource.collectIsPressedAsState(). - Đối với các trường hợp sử dụng phức tạp, bạn có thể sử dụng InteractionSource.interactions để quan sát luồng tương tác. Hãy xem tài liệu và ví dụ về InteractionSource để biết thêm thông tin.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Xoá các phương thức LayoutCoordinates không dùng nữa, sử dụng hàm thay vì thuộc tính cho positionInParent và boundsInParent (I580ed, b/169874631, b/175142755)
- Tạo TextInputSession mới cho các phiên nhập từ các thành phần văn bản cấp thấp, chẳng hạn như CoreTextField. (I8817f, b/177662148)
- Giờ đây, Placeable hiển thị measuredSize, đại diện cho kích thước mà bố cục con thực sự đo lường. Kích thước này có thể không tuân theo giới hạn đo lường. (Ib2729, b/172560206, b/172338608)
- Thêm đối tượng sửa đổi selectionGroup cho phép đánh dấu bộ sưu tập Tab hoặc RadioButton cho các mục đích hỗ trợ tiếp cận (Ie5c29)
Thêm LazyListState.animateScrollToItem
Phương thức này cuộn mượt đến một mục cụ thể trong danh sách. (I4bfd7)
ScrollableState.smoothScrollBy() đã được đổi tên thành animateScrollBy() LazyListState.snapToItemIndex() đã được đổi tên thành scrollToItem() ScrollState.smoothScrollTo() đã được đổi tên thành animateScrollTo() (I35ded)
Modifier.zoomable đã được thay thế cho Modifier.transformable của tôi. smoothPanBy, smoothRotationBy đã được thêm dưới dạng một chức năng. (Ifc32b, b/175294473)
Giờ đây, bạn bắt buộc phải sử dụng
defaultFactory
chocompositionLocalOf
vàstaticCompositionLocalOf
thay vì không bắt buộc.Sự thay đổi này sẽ loại bỏ lỗi tiềm ẩn về loại đối với các loại không thể có giá trị rỗng nếu bạn chưa cung cấp nhà máy mặc định ban đầu. Trước đây điều này sẽ cung cấp một tham chiếu rỗng cho loại không thể rỗng.
Đối với các loại giá trị rỗng, bạn nên cung cấp
{ null }
làm nhà máy (factory) mặc định.Bạn không nên sử dụng các thành phần cục bộ có loại không thể rỗng, trừ phi có thể cung cấp giá trị mặc định hợp lý. Nếu không có giá trị mặc định hợp lý, hàm lambda
defaultFactory
sẽ tạo ngoại lệ. Tuy nhiên việc loại bỏ một trường hợp ngoại lệ có nghĩa là người dùng thành phần cục bộ sẽ có phần phụ thuộc ngầm định được cung cấp mà không được hệ thống loại này thực thi. (Ifbd2a)Thay đổi
Indication#createIndication()
thànhIndication#rememberUpdatedIndication(InteractionState)
và xoá thông sốInteractionState
khỏi IndicationInstance#drawIndication()
. IndicationInstance chỉ nên có trách nhiệm vẽ các hiệu ứng hình ảnh và không khởi chạy ảnh động/trạng thái ghi để phản hồi các thay đổi của InteractionState. Thay vào đó, các hoạt ảnh và trạng thái ghi này nên diễn ra trongrememberUpdatedIndication()
. Thông sốindication
trongModifier.indication
cũng đã được thay đổi thành một thông số bắt buộc. (Ic1764, b/152525426)Hành động văn bản hiện 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 được biểu thị bằng Ints (I81298)
Các gói của phương thức smoothScrollBy và scrollBy đã thay đổi thành
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Hiện tại, FlingConfig đã được đổi tên thành FlingBehavior, cho phép bạn tuỳ chỉnh các ảnh động tạm ngưng thay vì các giá trị giảm dần được xác định trước. (I02b86, b/175294473)
Đã đổi tên công cụ sửa đổi kích thước. Modifier.width/height/size được đổi tên thành requiredWidth/requiredHeight/requiredSize Modifier.preferredWidth/preferredHeight/preferredSize được đổi tên thành width/height/size. (I5b414)
defaultMinSizeConstraints được đổi tên thành defaultMinSize. (I4eaae)
Xoá Modifier.tapGestureFilter Sử dụng
Modifier.pointerInput { detectTapGestures(...) }
để thay thế. (I266ed, b/175294473)mức tiêu thụ một phần đã bị xoá khỏi hệ thống nhập con trỏ. Đề xuất cách kết hợp mức tiêu thụ một phần là Modifier.nestedScroll. (Ie9c9b)
Orientation (Hướng) đã được chuyển đến gói nền tảng. Chuyển VelocirtTracker từ ui.gesture sang ui.input.pointer. (Iff4a8, b/175294473)
Xoá AnimationClockObservable và các lớp con. Xoá AnimatedFloat. (Icde52, b/177457083)
drawerState.open() và drawerState.close() hiện là các hàm tạm ngưng. Hãy dùng rememberCoroutineScope() để lấy phạm vi của thành phần kết hợp nhằm gọi chúng (I16f60, b/175294473)
Nhà cung cấp đã được đổi tên thành CompositionLocalProvider
- Hàm khởi tạo Composition (Cấu trúc) không còn chấp nhận một tham số chính và không được dùng nữa.
- Chuyển currentCompositeKeyHash thuộc tính cấp cao nhất của thành phần kết hợp thay vì hàm cấp cao nhất của thành phần kết hợp.
- CompositionData và CompositionGroup được chuyển sang không gian tên androidx.compose.runtime.tooling
- ComposableLambda đã được đặt thành một giao diện thay vì loại cụ thể, và không còn có các thông số loại nữa.
- Đặt ComposableLambdaN thành giao diện thay vì loại cụ thể và không còn có tham số loại.
- Di chuyển hàm snapshotFlow sang không gian tên androidx.compose.runtime
- Phương thức hợp nhất của SnapshotMutationPolicy không còn là thử nghiệm
- Hàm clearRoots
@TestOnly
cấp cao nhất đã bị xoá. Dữ liệu này không còn cần thiết nữa. - Xoá hàm keySourceInfoOf và resetSourceInfo. Các dữ liệu này không còn cần thiết nữa.
- Xoá Composer.collectKeySourceInformation. Dữ liệu này không còn cần thiết nữa.
- Xoá phương thức isJoinedKey, joinedKeyLeft và joinedKeyRight. Các dữ liệu này không còn cần thiết nữa.
- Di chuyển nhiều API cấp cao nhất và sắp xếp lại thành các tệp khác nhau. Do ngữ nghĩa lớp tệp của Kotlin, khả năng tương thích nhị phân sẽ bị phá vỡ chứ không phải khả năng tương thích nguồn. Do đó, đây không phải là vấn đề đối với hầu hết người dùng.
- (I99b7d, b/177245490)
Làm lại Modifier.scrollable. Bây giờ, tính năng sẽ sử dụng giao diện Scrollable thay vì lớp ScrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable hiện chấp nhận DraggableState thay cho một lambda đơn giản. Bạn có thể tạo trạng thái thông qua
rememberDraggableState { delta -> }
để nhận hành vi tương tự trước đây (Ica70f, b/175294473)Thêm các đối tượng sửa đổi requiredWidth(IntrinsicSize) và requiredHeight(IntrinsicSize) vào kích thước bắt buộc để thành các kích thước hàm nội tại. (I0a6b4)
Xoá
emptyContent()
không dùng nữa. Thay vào đó, hãy sử dụng{}
. (Idb33f, b/179432510)Xoá một số API không dùng nữa (Ice5da, b/178633932)
Sửa lỗi
- Thêm API CompositionLocal LocalSoftwareKeyboardController mới để thay thế giao diện SoftwareKeyboardController trước đó trên TextField. (I658b6, b/168778053)
Phiên bản 1.0.0-alpha12
Ngày 10 tháng 2 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha12
và androidx.compose.foundation:foundation-layout:1.0.0-alpha12
. Phiên bản 1.0.0-alpha12 bao gồm các thay đổi sau.
Các thay đổi về API
- Modifier.pointerInput hiện yêu cầu các khoá nhớ cho biết thời điểm coroutine phát hiện con trỏ sẽ khởi động lại các phần phụ thuộc mới. (I849cd)
- Kiểm tra bản cập nhật: hasText() sẽ kiểm tra cả văn bản nhập và nhãn/nội dung gợi ý/phần giữ chỗ trong trường văn bản (Iab803)
- PaddingValues.Absolute đã được thêm và có thể dùng trong các API chấp nhận PaddingValues. (Ia5f30)
- Ngừng sử dụng onImeActionPerformed. Thay vào đó, hãy sử dụng KeyboardActions (If0bbd, b/179071523)
- Để các quy ước đặt tên khớp hơn với ImageBitmap và ImageVector, ImagePainter được đổi tên thành BitmapPainter cho phù hợp với VectorPainter. (Iba381, b/174565889)
- Chuỗi kiểm tra chuỗi con có chuỗi con bây giờ là một đối số (Icbe78)
- Ra mắt thành phần ngữ cảnh coroutine
InfiniteAnimationPolicy
sẽ được áp dụng trong ảnh động vô hạn. Theo mặc định, không có chính sách nào được cài đặt, trừ phi chạy thử nghiệm vớiComposeTestRule
. (I50ec4, b/151940543) - Animatable.snapTo và Animatable.stop hiện là các hàm tạm ngưng (If4288)
- Chuyển ComponentActivity.setContent sang androidx.activity.compose.setContent trong mô-đun androidx.activity:activity-compose. (Icf416)
- Xoá phương thức giải cấu trúc và copy() khỏi một số lớp mà chúng ít khi được sử dụng. (I26702, b/178659281)
Các khoá tuỳ chỉnh hỗ trợ cho LazyColumn/LazyRow đã được thêm. Điều này cho phép chúng ta xử lý việc sắp xếp lại thứ tự các mục một cách thông minh hơn. Vì vậy, trạng thái bạn đã lưu trữ trong bộ nhớ {} khối sẽ di chuyển cùng lúc với mục khi bạn sắp xếp lại các phần tử hoặc đã xoá mục ở giữa quá trình.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Thay đổi Indication#createInstance thành @Composable và thay đổi LocalIndication để chứa một Chỉ báo (Indication), không phải là () -> Indication. (I5eeea, b/157150564)
Constraints.enforce
đã được thay thế bằngConstraints.constrain
. (I8b8ea)Ngừng sử dụng loadFontResource. Thay vào đó, hãy sử dụng fontResource. Ngừng sử dụng imageResource, loadImageResource, vectorResource và loadVectorResource. Thay vào đó hãy sử dụng painterResource. (I6b809)
Vì lý do hiệu suất, giờ đây, ngữ nghĩa ScrollAxisRange lấy các hàm lambda trả về Độ chính xác đơn thay vì các giá trị Độ chính xác đơn trực tiếp. (If4a35, b/178657186)
Thêm ngữ nghĩa EditableText để đánh dấu văn bản nhập vào có thể chỉnh sửa của trường văn bản dành cho tính năng hỗ trợ tiếp cận và các phương thức kiểm thử tương ứng để kiểm tra ngữ nghĩa (I8e07a)
Giờ đây, Modifier.clickable không hỗ trợ tính năng nhấp đúp cũng như nhấp lâu. Sử dụng Modifier.combinedClickable để có chức năng này. (Iafad1)
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)
Ngừng sử dụng Modifier.dragGestureFilter. Thay vào đó, hãy sử dụng
Modifier.pointerInput { detectDragGestures (...)}
. Ngoài ra, hãy sử dụng Modifier.draggable cho các thao tác kéo một trục (I0ba93, b/175294473)Đổi tên Ambients để khớp với Ambient -> Đổi tên CompositionLocal. Ambients trước đây có tên là AmbientFoo, CompositionLocals hiện có tên là LocalFoo. (I2d55d)
Lựa chọn đã được di chuyển sang nền tảng. (I7892b)
Tương tự như cách trước đây chúng tôi đã xoá thành phần kết hợp
state { 0 }
và hiện khuyến khích sử dụngremember { mutableStateOf(0) }
, chúng tôi sẽ xoá thành phần kết hợpsavedInstanceState { 0 }
. Thay vào đó, bạn nên sử dụngrememberSaveable { mutableStateOf(0) }
. Thao tác này sẽ tự động lưu và khôi phục nếu bạn có thể lưu trữ loại được dùng trong MutableState trong Gói. Nếu trước đó bạn đã truyền đi một đối tượng 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)
Thời gian phát trong ảnh động hiện được hợp nhất tới nano giây (If776a)
Ngừng sử dụng @ComposableContract và thay bằng 3 chú thích cụ thể hơn.
@ComposableContract(restartable = false)
đã trở thành@NonRestartableComposable
@ComposableContract(readonly = true)
đã trở thành@ReadOnlyComposable
@ComposableContract(preventCapture = true)
đã trở thành@DisallowComposableCalls
@ComposableContract(tracked = true)
đã bị xoá. (I60a9d)Ngừng sử dụng các phần mềm tiện ích
emptyContent()
và(@Composable () -> Unit).orEmpty()
do không còn có bất cứ giá trị hoặc tác động tích cực nào về hiệu suất (I0484d)Bạn hiện có thể đóng các trình soạn thảo lại. Trình kết hợp lại đã đóng sẽ tiếp tục tái cấu trúc cho đến khi hoàn tất quá trình tái cấu trúc coroutine con. Recomposer.shutDown được đổi tên để huỷ chế độ tương phản với chế độ đóng. (Ib6d76)
Các API liên quan đến LazyVerticalGrid được đánh dấu là thử nghiệm (Ia53e3, b/178519862)
rememberSavedInstanceState() đổi tên thành rememberSaveable() và chuyển sang gói androidx.compose.runtime.saveable. (I1366e, b/177338004)
RestorableStateHolder đổi tên thành SaveableStateHolder và chuyển sang gói androidx.compose.runtime.saveable. Phương thức bên trong RestorableStateProvider đổi tên thành SaveableStateProvider. Loại chung đã được xoá, vì vậy, bạn có thể chỉ cần đặt Any làm khoá. Chú thích thử nghiệm không còn cần thiết nữa. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver đã được chuyển từ androidx.compose.runtime.savedinstancestate thành androidx.compose.runtime.saveable (I77fe6)
Cấu phần phần mềm androidx:compose:runtime:runtime-saved-instance-state đã được đổi tên thành androidx:compose:runtime:runtime-saveable (I6dcac)
Xoá nhiều API không còn dùng từ lâu trong gói giao diện người dùng. (I2f2dc)
Hiện ngừng sử dụng cấu phần phần mềm compose:runtime-dispatch. Giờ đây, bạn có thể tìm thấy compose:runtime và AndroidUiDispatcher trong compose:ui. (Ib5c36)
Đổi tên tham số trên RounderCornerShape, CutCornerShape và CornerBasedShape từ trái/phải thành bắt đầu/kết thúc để hỗ trợ tính năng tự động phản chiếu hình dạng theo hướng rtl (phải sang trái). AbsoluteRounderCornerShape và AbsoluteRounderCornerShape được giới thiệu cho các trường hợp không mong muốn tạo phản chiếu. (I61040, b/152756983)
Xoá canDrag khỏi Modifier.scrollable. (Id66e7, b/175294473)
API mà trình biên dịch Compose nhắm mục tiêu đã được tái cấu trúc để sử dụng một giao diện thay vì một loại cụ thể. Giao diện này cũng không còn sử dụng tham số loại.
Đây là một thay đổi nội bộ sẽ không ảnh hưởng đến khả năng tương thích cho mã nguồn mà là một thay đổi có thể gây lỗi nhị phân. (I3b922, b/169406779)
Modifier.scaleGestureFilter đã bị xoá. Thay vào đó, hãy sử dụng Modifier.zoomable. Ngoài ra, hãy sử dụng
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)Hiện ngừng sử dụng AnimatedValue/Float. Thay vào đó, hãy sử dụng Animatable. (I71345, b/177457083)
- Xoá CoreText và CoreTextField khỏi API công khai
- Xoá nội dung nạp chồng SelectionContainer không còn được dùng nữa (I99c19)
Xoá các hàm tính năng cuộn không tạm ngưng không còn được dùng nữa Tiếp tục với các thay đổi từ bản phát hành gần đây nhất, các hàm cuộn không tạm ngưng hiện đã bị xoá hoàn toàn. Hãy chuyển đổi sang các hàm tạm ngưng có cùng tên. Bạn có thể lấy một phạm vi coroutine thông qua rememberCoroutineScope(). (I3d39c, b/178169563)
Ngừng sử dụng androidx.compose.foundation.layout.ConstraintLayout và thay bằng androidx.constraintlayout.compose.ConstraintLayout. Bạn sẽ cần phải thêm một phần phụ thuộc vào
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)Ngừng sử dụng tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter và pressIndicaitonGestureFilter. Thay vào đó, hãy sử dụng Modifier.clickable hoặc Modifier.pointerInput với hàm detectTapGestures. (I6baf9, b/175294473)
Xoá
Recomposer.current()
. [Abstract]ComposeView hiện được đặt mặc định là các Trình kết hợp lại tạo từng phần ở phạm vi cửa sổ do ViewTreeLifecycleOwner cho cửa sổ tạo ra. Quy trình kết hợp lại và kim đánh dấu nhịp độ khung hình ảnh động dựa trên withFrameNanos sẽ bị tạm dừng trong khi Vòng đời máy chủ ngừng hoạt động. (I38e11)Recomposer.runningRecomposers hiện cung cấp StateFlow toàn cục của RecomposerInfo chỉ đọc để quan sát trạng thái cấu trúc đang diễn ra trong quá trình này. Ưu tiên API này hơn Recomposer.current() hiện không dùng nữa. (If8ebe)
Phiên bản 1.0.0-alpha11
Ngày 28 tháng 1 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha11
và androidx.compose.foundation:foundation-layout:1.0.0-alpha11
. Phiên bản 1.0.0-alpha11 bao gồm các thay đổi sau.
Thay đổi API
Ngừng sử dụng scrollBy không tạm ngưng, xoá scrollTo không tạm ngưng
Bạn nên sử dụng các hàm tạm ngưng để kiểm soát tính năng cuộn trang và đợi quá trình cuộn trang hoàn tất. Trong quá trình chuyển đổi này, chúng tôi sẽ ngừng hỗ trợ và/hoặc xoá các phiên bản không tạm ngưng của các hàm này. (Ie9ced)
Ngừng sử dụng smoothScrollBy không tạm ngưng Bạn nên sử dụng các hàm tạm ngưng để kiểm soát tính năng cuộn trang và đợi quá trình cuộn trang hoàn tất. Trong quá trình chuyển đổi này, chúng tôi sẽ ngừng hỗ trợ các phiên bản không tạm ngưng của các hàm này. (I12880)
Tham số mô tả nội dung đã được thêm vào Image và Icon. Tham số này được dùng để cung cấp thông tin mô tả cho các dịch vụ hỗ trợ tiếp cận (I2ac4c)
BasicTextField đã nhận được một thông số mới có tên là 'decorationBox'. Tham số này cho phép thêm các thành phần trang trí như biểu tượng, phần giữ chỗ, nhãn và các thành phần tương tự vào trường văn bản, đồng thời tăng vùng nhắm đích cho những thành phần này. (I16996)
Thông số canDrag đã bị xoá khỏi Modifier.draggable (Ic4bec, b/175294473)
AnimationFloat.fling chấp nhận FlingConfig đã bị xoá. Thay vào đó, hãy sử dụng Animatable.animateDecay tạm ngưng. (I4659b, b/177457083)
Xoá
data class
khỏi các lớp sau:- InlineTextContent
- LocaleList
- (I605c7)
Các chức năng có thể nhấp, bật tắt và chọn hiện có thể được tạo bên ngoài thành phần (I0a130, b/172938345, b/175294473)
Ngừng sử dụng ScrollableColumn/Row. Việc sử dụng ScrollableColumn ít hiệu quả hơn so với LazyColumn khi bạn có nội dung cuộn lớn vì với LazyColumn, chúng ta chỉ có thể soạn/đo lường/vẽ các phần tử hiển thị. Để tránh việc người dùng thao tác không hiệu quả, chúng tôi quyết định sẽ ngừng sử dụng ScrollableColumn và ScrollableRow, đồng thời khuyến khích sử dụng LazyColumn và LazyRow thay thế. Người dùng vẫn có thể quyết định rằng họ không cần hành vi lazy, đồng thời sử dụng trực tiếp các đối tượng sửa đổi như sau: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Phương thức khôi phục mặc định mới của
items(count: Int)
cho phạm vi của LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
vàitemsIndexed(items: List)
hiện là các hàm mở rộng nên bạn phải nhập thủ công các hàm đó khi sử dụng. Các nạp chồng mở rộng mới cho Arrays: items(items: Array) và itemsIndexed(Array) (I803fc, b/175562574)Xoá AbsoluteArrangement bị ngừng sử dụng. (Iffa96, b/177641870)
Tham số propagateMinConstraints đã được thêm vào Hộp, để chỉ định liệu có nên chuyển những giới hạn tối thiểu cho nội dung của Hộp hay không. Mặc định là sai. (I0125b, b/152613457)
Sửa lỗi
- Ngừng sử dụng onCommit, onDispose và onActive, thay vào đó là SideEffect API và DisposableEffect API (If760e)
- Thiết kế lại WithConstraints dưới dạng BoxWithConstraints và chuyển sang foundation.layout. (I9420b, b/173387208)
Các thay đổi đối với những hàm nhà máy cho Font/FontFamily/Typeface
- Thêm các hàm trạng thái ban đầu bắt đầu bằng chữ cái viết hoa
- Ngừng sử dụng các hàm nhà máy có chữ cái đầu tiên viết thường
- Các hàm nhà máy mới sẽ trả về FontFamily thay vì các lớp con
- Ẩn các hàm khởi tạo của lớp con để những lớp này chỉ có thể được tạo dựng qua các hàm nhà máy.
- Đổi tên Font.asFontFamily thành Font.toFontFamily
- (I42aa7)
Ra mắt
ComposeContentTestRule
nhằm mở rộngComposeTestRule
và định nghĩasetContent
(đã bị xoá khỏiComposeTestRule
). Thêm phương thức nhà máycreateEmptyComposeRule()
. Phương thức này trả vềComposeTestRule
và không chạy Hoạt động (Activity) cho bạn. Sử dụng tuỳ chọn này khi bạn muốn chạy Hoạt động (Activity) trong quá trình kiểm thử, ví dụ: sử dụngActivityScenario.launch
(I9d782, b/174472899)animateAsState giờ là animateFooAsState, nơi mà Foo trở thành loại biến được tạo hiệu ứng động, ví dụ như Float, Dp, Offset, v.v. (Ie7e25)
Mật độ hiện là phạm vi trình tiếp nhận cho giao diện Sắp xếp. (I18aad)
TextFieldValue chấp nhận AnnotatedString. Tuy nhiên, đây chỉ là thay đổi đối với API và tính năng chỉnh sửa văn bản nhiều kiểu chưa được triển khai.
- Xoá
initial
khỏi tham số hàm khởi tạo EditingBuffer. (I326d5)
- Xoá
Ngừng sử dụng invalidate và compositionReference(), thay vào đó lần lượt là currentRecomposeScope và rememberCompositionReference. (I583a8)
AnnotatedString được thay đổi để mở rộng từ kotlin.CharSequence. Do đó, length (độ dài) và subSequence giờ là các hàm thực thể và các hàm mở rộng bị xoá. (Iaf429)
Thời lượng và Thời gian hoạt động sẽ được thay thế bằng Thời gian dài mili giây và bước này sẽ xoá phần phụ thuộc của phương thức nhập con trỏ vào các lớp đó. (Ia33b2, b/175142755, b/177420019)
Ngừng sử dụng CompositionLifecycleObserver và thay thế bằng RememberObserver.
RememberObserver
thay thế choCompositionLifecycleObserver
với ngữ nghĩa được sửa đổi và phương thức được đổi tên. Việc thay đổi sang API mới có thể được thực hiện bằng máy móc đối với các đối tượng chỉ được nhớ một lần và tiếp tục là phương pháp được đề xuất. Tuy nhiên, nếu một tệp đối chiếu được nhớ nhiều lần trong một cấu trúc, thìonRemembered
sẽ được gọi cho mỗi tệp đối chiếu màonEnter
chỉ được gọi một lần.onEnter
được gọi nhiều lần nếu đối tượng được sử dụng trong các cấu trúc phụ, chẳng hạn nhưWithConstraints
vàScaffold
, giúp đảm bảo rằng một lệnh gọionEnter
không đáng tin cậy và đã bị xoá choRememberObserver
.RememberObserver
thêmonAbandoned
được gọi nếu thực thểRememberObserver
được trả về từ lệnh gọi lại truyền đếnremember
nhưng không được nhớ ở trạng thái cấu trúc và do đó, sẽ không bao giờonRemembered
được gọi. Điều này có thể xảy ra nếu một trường hợp ngoại lệ chấm dứt quá trình cấu trúc trước khi hoàn tất hoặc cấu trúc bị huỷ vì trạng thái đang tạo quá trình cấu trúc không còn hiệu lực hoặc không còn cần thiết nữa. Nếu thực thể củaRememberObserver
(tuân theo một mục đề xuất tham chiếu ở trên) đang theo dõi một tài nguyên bên ngoài (cảonForgotten
vàonAbandoned
), thì mỗi loại sẽ cho thấy tài nguyên không còn cần thiết nữa. Nếu đối tượng đang theo dõi công việc đã bắt đầu hoặc tài nguyên được phân bổ trongonRemembered
,onAbandoned
có thể bị bỏ qua vì đối tượng này sẽ không được gọi nếuonRemembered
được gọi. (I02c36)Đổi tên TransformedText.transformedText thành TransformedText.text
- TransformedText không còn là lớp dữ liệu (Ie672a)
Các lớp sau đây không còn là lớp dữ liệu:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Xoá các phương thức thử nghiệm monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Ngừng sử dụng phương thức toạ độ chung và tạo phương thức toạ độ dựa trên cửa sổ mới. (Iee284)
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)
FocusRequester.createRefs hiện được đánh dấu là thử nghiệm vì có thể thay đổi. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden được đổi tên thành invisibleToUser và được đánh dấu là @ExperimentalComposeUiApi. Đổi tên AccessibilityRangeInfo thành ProgressBarRangeInfo. Đổi tên stateDescriptionRange thành progressBarRangeInfo. Đổi tên AccessibilityScrollState thành ScrollAxisRange. Đổi tên horizontalAccessibilityScrollState thành horizontalScrollAxisRange. Đổi tên verticalAccessibilityScrollState thành verticalScrollAxisRange. (Id3148)
Thay đổi VisualTransformation thành giao diện hàm (I3bba4)
Tận dụng TestCoroutineDispatcher trong thử nghiệm (I532b6)
Xoá PointerInputData và sửa đổi PointerInputChange để cung cấp cho tất cả các trường của PointerInputData. Nội bộ hoá PointerInputEvent và PointerInputEventData vì chúng không được sử dụng trong bất kỳ API công khai nào. (Ifff97, b/175142755)
Đổi tên TextInputService.onStateUpdated thành updateState (Id4853)
Xoá displaySize vì cần phải tránh dùng tính năng này. Thông thường, bạn nên sử dụng kích thước onRoot() hoặc ít nhất là kích thước cửa sổ. (I62db4)
Phiên bản 1.0.0-alpha10
Ngày 13 tháng 1 năm 2021
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha10
và androidx.compose.foundation:foundation-layout:1.0.0-alpha10
. Phiên bản 1.0.0-alpha10 bao gồm các thay đổi sau.
Thay đổi API
- ImeOptions và KeyboardOptions không còn là lớp dữ liệu (I3c898, b/168684531)
- Các thay đổi về API VisualTransformation
- Đổ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)
- Các thay đổi về API EditOperations
- Đổi tên EditOperation là EditCommand
- Thêm hậu tố Command cho các hoạt động triển khai chi tiết EditOperation
- EditCommand không còn là lớp dữ liệu
- Đổi tên hàm EditOperation.process thành applyTo
- Đổi tên InputEventListener thành InputEventCallback
- (I0a366)
- Sửa đổi Velocity (Tốc độ) để có các thành phần và phép toán. (Ib0447)
- Đổi tên @ExperimentalTesting thành @ExperimentalTestApi để nhất quán với các chú thích api thử nghiệm tương tự (Ia4502, b/171464963)
- Thêm phương thức stickyHeader thử nghiệm cho LazyColumn/LazyRow (I0a81d)
- Đổi tên Color.useOrElse() thành Color.takeOrElse() (Ifdcf5)
- Ngừng sử dụng TestUiDispatcher. Thay vào đó, hãy sử dụng Dispatchers.Main (Ic171f, b/175385255)
- Thêm nút Bật/tắt đối với nền tảng Strings.kt (I4a5b7, b/172366489)
- Chuyển nativeClass thành mô-đun giao diện và nội bộ hoá nội dung đó. Thay vào đó, cập nhật việc sử dụng nativeClass trong các nội dung triển khai ngang bằng để sử dụng 'is MyClass'. (I4f734)
- Ngừng sử dụng FlowRow và FlowColumn. Thay vào đó, vui lòng sử dụng một bố cục tuỳ chỉnh. (I09027)
- Ngừng sử dụng Modifier.focus() và Modifier.focusRequester(). Thay vào đó là Modifier.focusModifier() và Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Giới thiệu SelectionRegistrar.notifySelectableChange để thông báo các bản cập nhật Có thể chọn (Selectable) cho SelectionManager. (I6ff30, b/173215242)
- Thay đổi
fun Dp.isFinite()
thànhval Dp.isFinite
(I50e00) - Constraints#satisfiedBy đã được đổi tên thành isSatisfiedBy. (I9cf5c)
- Thêm isSpecified, isUnspecified và useOrElse cho các lớp cùng dòng có một hằng số Không xác định. (I93f7b, b/174310811)
Sửa lỗi
- API
Animatable
dựa trên coroutine mới đảm bảo tính loại trừ lẫn nhau giữa các hiệu ứng chuyển động. DecayAnimationSpec mới để hỗ trợ ảnh động phân rã đa chiều (I820f2, b/168014930) - Thêm tính năng hỗ trợ cho các trường văn bản bị vô hiệu hoá và chỉ có thể đọc (I35279, b/171040474, b/166478534)
animate()
hiện được thay bằnganimateAsState()
trả vềState<T>
chứ không phảiT
. Việc này tạo ra hiệu suất cao hơn do phạm vi vô hiệu hoá có thể được thu hẹp đến vị trí mà giá trị Trạng thái được đọc. (Ib179e)- Thêm API có vai trò Ngữ nghĩa và thêm Vai trò dưới dạng tham số cho SemanticsModifier có thể nhấp, chọn và bật/tắt. Thay đổi Modifier.progressSemantics sao cho Thanh trượt cũng có thể sử dụng được. (I216cd)
- Giờ đây, bạn có thể truy cập vào keyEvent gốc thông qua keyEvent.nativeKeyEvent (I87c57, b/173086397)
Phiên bản 1.0.0-alpha09
Ngày 16 tháng 12 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha09
và androidx.compose.foundation:foundation-layout:1.0.0-alpha09
. Phiên bản 1.0.0-alpha09 bao gồm các thay đổi sau.
Thay đổi API
Thêm giao diện có thể cuộn
Thao tác này cho phép xử lý ScrollState và LazyListState như một loại phổ biến, cho phép triển khai chức năng cuộn tuỳ chỉnh trên cả hai loại.
Thao tác này cũng di chuyển smoothScrollBy sang hàm mở rộng trên Scrollable, tận dụng được chức năng này. (I2153b)
Thêm LazyVerticalGrid. (I17267, b/162213211)
Ngừng sử dụng LazyColumnFor, LazyRowFor, LazyColumnForIndexed và LazyRowForIndexed. Thay vào đó, hãy sử dụng LazyColumn và LazyRow (I5b48c)
Để 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)
LazyListState.layoutInfo được thêm vào để hiển thị danh sách các kích thước và độ dời của các mục có thể nhìn thấy hiện có (If8678, b/170472532)
Xoá chú thích ExperimentalPointerInput (Ia7a24)
Chúng tôi đã thêm tuỳ chọn hỗ trợ InteractionState cho TextFields. (I61d91)
Thêm tham số reverseLayout cho LazyColumn/Row. khi các mục
true
sẽ được kết hợp từ dưới lên trên cùng vàLazyListState.firstVisibleItemIndex == 0
sẽ là mục đầu tiên nằm ở dưới cùng. (I552ae, b/166589935)Thêm thông số verticalArrangement cho LazyColumn. Thêm thông số horizontalArrangement cho LazyRow. Cách sắp xếp cho phép chúng tôi thêm khoảng cách giữa các mục và chỉ định cách sắp xếp các mục khi chúng tôi không có đủ mục để lấp đầy kích thước tối thiểu. (Icf79a, b/170394300)
detectMultitouchGestures hiện sử dụng một lệnh gọi lại với các tham số tâm, kéo, thu phóng và xoay kết hợp. (Ie6e1c)
Chuyển ContentDrawScope sang mô-đun ui-graphics để kết hợp với DrawScope. (Iee043, b/173832789)
Sửa lỗi
- Biểu thức lambda trong công cụ sửa đổi độ chênh lệch hiện trả về kết quả IntOffset thay vì Float. (Ic9ee5, b/174137212, b/174146755)
Xoá SlotTable, SlotReader và SlotWriter khỏi API công khai. Trước đây, các hàm này được đánh dấu là InternalComposeAPI. Giờ đây, chúng thuộc nội bộ của mô-đun Compose.
CompositionData và CompositionGroup được thêm vào để thay thế cho API ui-tooling dùng để trích xuất thông tin về cấu trúc. Các hàm này là công khai nhưng không nhằm sử dụng bên ngoài API công cụ giao diện người dùng vì chúng cung cấp thông tin chưa xử lý mà API công cụ giao diện người dùng diễn giải (I31a9c)
Tái cấu trúc ShaderBrush để tạo một thực thể chương trình đổ bóng theo yêu cầu khi có sẵn thông tin về kích thước môi trường vẽ. Thao tác này rất hữu ích để xác định các hàm gradient (chuyển màu) chiếm toàn bộ giới hạn vẽ của một thành phần kết hợp tại thời điểm kết hợp mà không cần thực hiện các tuỳ chọn triển khai DrawModifier tuỳ chỉnh.
Ngừng sử dụng các API hàm khởi tạo hàm gradient (chuyển màu) thay cho phương thức nhà máy trên đối tượng Gradient. (I511fc, b/173066799)
Ngừng sử dụng Modifier.focusObserver. Hãy chuyển sang sử dụng Modifier.onFocusChanged hoặc Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
API tự động điền hiện là API thử nghiệm và yêu cầu chọn tham gia (I0a1ec)
Thêm các bản khai báo về việc giải mã để tạo các phiên bản FocusRequester (I35d84, b/174817008)
accessibilityLabel đổi tên thành contentDescription. accessibilityValue đổi tên thành stateDescription. (I250f2)
Ra mắt một số hàm mới trong SelectionRegistrar và cũng đổi tên onPositionChange thành notifyPositionChange. (Ifbaf7)
Đặt AndroidOwner thành nội bộ (Ibcad0, b/170296980)
Hàm infiniteRepeatable mới dùng để tạo một InfiniteRepeatableSpec (I668e5)
Thay đổi giao diện
Applier
để đơn giản hoá quy trình xây dựng cây từ dưới lên thay vì từ trên xuống.Phương thức
insert()
được đổi tên thànhinsertTopDown()
.Thêm phương thức mới:
insertBottomUp()
.Một trình áp dụng sẽ chèn các nút vào cây mà trình áp dụng này đang chỉnh sửa bằng cách sử dụng
insertTopDown()
hoặcinsertBottomUp()
, tuỳ thuộc vào việc chế độ nào hoạt động hiệu quả hơn.Một số cây, chẳng hạn như
LayoutNode
vàView
, có hiệu quả hơn khi tạo từ dưới lên so với từ trên xuống. Trước đó, hệ thống phải có một tập hợp các nút chèn để triển khai từ dưới lên nên cần sao chép sang tất cả các trình áp dụng cần xây dựng từ dưới lên để đạt được hiệu suất. Với thay đổi này,Applier
ghi đèinsertBottomUp()
để tạo cây từ dưới lên vàinsertTopDown()
để tạo cây từ trên xuống. (Icbdc2)Thêm painterResource API để xử lý các đối tượng Trình vẽ được tải mờ ảo từ các định dạng thành phần tạo từ đường quét (như PNG) hoặc VectorDrawables. Người dùng không còn phải xác định trước loại thành phần và có thể gọi phương thức này để nhận đối tượng Painter (Trình vẽ) để sử dụng trong các thành phần kết hợp Image (Hình ảnh) hoặc đối tượng sửa đổi trình vẽ. (I2c703, b/173818471)
Thêm hàm nhà máy buildAnnotatedString để tạo một AnnotatedString. Ngừng sử dụng hàm trình tạo annotatedString. (Idfe0b)
Phiên bản 1.0.0-alpha08
Ngày 2 tháng 12 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha08
và androidx.compose.foundation:foundation-layout:1.0.0-alpha08
. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.
Thay đổi API
- Xoá thông số
maxLines
khỏiCoreTextField
. Nếu bạn muốn giới hạn chiều cao của trường văn bản theo số dòng, hãy sử dụngBasicTextField
. (Iec002) - Thay đổi các phương thức
await*TouchSlop()
thành không phát hiện con trỏ xuống và đổi tên chúng thành*OrCancellation
. Đồng thời, không cần thông sốorientationLock
nữa. (Ie96e1) - Thêm mục kiểm tra tìm lỗi mã nguồn (lint) cho việc đặt tên và vị trí tham số lambda có khả năng kết hợp, để kiểm tra tính nhất quán với nguyên tắc Compose.
Ngoài ra, chúng tôi cũng đã di chuyển một số API sử dụng
children
dưới dạng tên cho lambda theo sau sangcontent
, theo hướng dẫn và mục kiểm tra tìm lỗi mã nguồn. (Iec48e) - Chuyển các api
foundation:foundation-text
thànhfoundation:foundation
. Cấu trúc gói vẫn giữ nguyên (Id3eb2) - 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)
- Trình phát hiện thao tác kéo mới tạm ngưng API nhập con trỏ, bao gồm cả việc khoá hướng. (Icef25)
- Đổi tên VectorAsset thành ImageVector Chuyển và đổi tên VectorAsset thành Builder để trở thành một lớp nội tại của ImageVector theo mỗi hướng dẫn của hội đồng API. Thêm tên thay thế mới của VectorAssetBuilder để liên kết với ImageVector.Builder nhằm tăng khả năng tương thích. (Icfdc8)
- Đổi tên ImageAsset và các phương thức liên quan thành ImageBitmap. (Ia2d99)
- 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)
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)
Thêm tham số singeLine vào BasicTextField, TextField và OutlinedTextField. Đặt thông số này là true để đặt trường văn bản thành một dòng duy nhất có thể cuộn theo chiều ngang. (I57004, b/168187755)
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)
Modifier.focusable cần có nền bổ trợ. Hãy dùng Modifier.focusable để thêm nội dung có thể đặt tiêu điểm vào một thành phần, kèm theo khả năng hỗ trợ tiếp cận và ngữ nghĩa chính xác. (I41eb9, b/152525426, b/162865824)
Xoá các API bị ngừng sử dụng trước đây: Đường viền (Border) đã bị xoá, thay vào đó hãy sử dụng BorderStroke. Xoá Modifier.drawBorder, thay vào đó hãy sử dụng Modifier.border. Xoá Modifier.gravity, thay vào đó hãy sử dụng Modifier.align. Xoá ngăn xếp, thay vào đó hãy sử dụng Hộp (I32c2b, b/172470874)
AbsoluteArrangement đổi tên thành Arrangement.Absolute. (If26f2)
Sửa lỗi
- 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 ý kiến phản hồi của hội đồng API. (I0bd29, b/173834241)
- Xoá
<T>
khỏi nội dung khai báo SubcomposeLayout. Bạn có thể sử dụng thuộc tính này mà không cần chỉ định loại ngay. (Ib60c8) - Điều chỉnh để thời gian hoạt động của PointerInputData và các trường vị trí không nhận giá trị rỗng. (Id468a)
- MaterialTheme hiện đặt màu chính xác cho các ô điều khiển lựa chọn và nền lựa chọn. Các ứng dụng không dùng Material có thể sử dụng AmbientTextSelectionColors theo cách thủ công để tuỳ chỉnh màu sắc dùng để lựa chọn. (I1e6f4, b/139320372, b/139320907)
- Tham số căn chỉnh của Hộp được đổi tên thành contentAlignment. (I2c957)
- Các công cụ sửa đổi offsetPx đã được đổi tên thành offset. Công cụ này hiện đang sử dụng các thông số lambda thay vì Trạng thái. (Ic3021, b/173594846)
- Thêm WindowManager.isWindowFocused để kiểm tra xem cửa sổ máy chủ có phải là tiêu điểm hay không và WindowFocusObserver cung cấp một lệnh gọi lại onWindowFocusChanged. (I53b2a, b/170932874)
- Thêm tham số resetInput vào TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Cập nhật API TextFieldValue
- đặt TextFieldValue.composition ở chế độ chỉ đọc
- Xoá ngoại lệ được gửi cho phạm vi lựa chọn không hợp lệ (I4a675, b/172239032)
- Ngừng sử dụng các Ambient được đặt tên với hậu tố là
Ambient
và thay thế chúng bằng các thuộc tính mới có tiền tố là Ambient, tuân theo các nguyên tắc khác về Ambient và Compose API. (I33440) - Thêm trình bao bọc Bộ phông chữ (Typeface) của Android. Bạn có thể tải Bộ phông chữ Android thông qua hàm
typeface
, ví dụtypeface(Typeface.DEFAULT)
. Cũng đã đổi têntypefaceFromFontFamily()
thànhtypeface()
(I52ab7) - Thêm mục kiểm tra tìm lỗi mã nguồn để kiểm tra nhằm đảm bảo rằng các trạng thái ban đầu Đối tượng sửa đổi sử dụng
androidx.compose.ui.composed {}
nội bộ, thay vì được đánh dấu là@Composable
. (I3c4bc) - Thêm mục kiểm tra tìm lỗi mã nguồn để đảm bảo rằng các hàm nhà máy của Đối tượng sửa đổi được xác định là phần mở rộng trên Đối tượng sửa đổi, nhờ vậy, các hàm này có thể liên kết trơn tru với nhau. (I07981)
- Đổi tên đối số ngữ nghĩa mergeAllDescendants thành mergeDescendants. (Ib6250)
- Tính năng kiểm soát thời gian trong chương trình kiểm thử (TestAnimationClock và cách sử dụng) đang được thử nghiệm (I6ef86, b/171378521)
- Xoá mô-đun ui-test cũ và các mã giả lập của nó (I3a7cb)
- TextUnit.Inherit được đổi tên thành TextUnit.Unspecified nhất quán với các đơn vị khác. (Ifce19)
- Giao diện Căn chỉnh đã được cập nhật và hoạt động bình thường. (I46a07, b/172311734)
- Mô-đun
foundation:foundation-text
được hợp nhất vớifoundation:foundation
(Idac0f) - Ngừng sử dụng place(Offset) và placeRelative(Offset). Thay vào đó, sử dụng các giá trị nạp chồng với độ dời số nguyên (I4c5e7)
- Đổi tên
id
thànhlayoutId
choLayoutIdParentData
.Measurable.id
được đổi tên thànhMeasurable.layoutId
. (Iadbcb, b/172449643)
Phiên bản 1.0.0-alpha07
Ngày 11 tháng 11 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
và androidx.compose.foundation:foundation-text:1.0.0-alpha07
. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.
Thay đổi API
- Tương tự như
Modifier.fillMaxSize[Width|Height]
, chúng tôi hiện hỗ trợ các phân số trongModifier.fillParentMaxSize[Width|Height]
trong phạm viLazyColumn/Row
(I797e2, b/166586426) - Xoá
KeyboardOptions.toImeOptions
khỏi API công khai. (Ic2e45) - Ngừng sử dụng AmbientTextStyle, ProvideTextStyle và AmbientContentColor nền tảng. Thay vào đó, hãy sử dụng các phiên bản mới có trong thư viện Material. Đối với các ứng dụng không dùng Material, bạn nên chuyển sang tạo các Ambient chủ đề cụ thể cho hệ thống mình tự thiết kế để có thể sử dụng trong các thành phần của riêng mình. (I74acc, b/172067770)
- Ngừng sử dụng foundation.Text và thay thế bằng material.Text. Đối với một API văn bản cơ bản, không có quy cách bắt buộc và không sử dụng giá trị nào từ một giao diện. Hãy xem androidx.compose.foundation.BasicText. (If64cb)
- Thêm maxLines vào TextFields (Ib2a5b)
- Cập nhật TextFields để chấp nhận KeyboardOptions (Ida7f3)
- Thêm KeyboardOptions để sử dụng trong TextFields (I9ca32)
- Thêm BasicText làm API được thiết kế riêng cho văn bản, song với BasicTextField. (I28268)
- Chú thích ExperimentalLazyDsl đã bị xoá. Bạn hiện có thể sử dụng LazyColumn/LazyRow mà không cần thêm @OptIn (Idab7a, b/166584730)
- Ngừng sử dụng BaseTextField. Sử dụng BasicTextField thay thế. (I896eb)
- BasicTextField được thêm để thay thế cho cả CoreTextField và BaseTextField (Id4cea)
- Xoá LazyColumnItems/LazyRowItems không dùng nữa (I1d8a8)
- Chúng tôi đã xoá các thành phần kết hợp không còn được dùng để đo kích thước thành các phép đo hàm nội tại. (I18537, b/171811496)
- Đổi tên relativePaddingFrom thành paddingFrom. Công cụ sửa đổi paddingFromBaseline được thêm để thuận tiện cho việc chỉ định khoảng cách từ ranh giới bố cục đến đường cơ sở văn bản. (I0440a, b/170633813)
- Tham số matchHeightConstraintsFirst được thêm vào đối tượng sửa đổi aspectRatio, có thể dùng để chỉ định đối tượng sửa đổi theo kích thước để giới hạn chiều cao trước khi thử các giới hạn tương ứng về chiều rộng. (Ie7c43, b/155290593)
- Xoá các DpConstraints không dùng nữa. (I87884, b/171702471)
Sửa lỗi
- Ra mắt lớp nội tuyến ScaleFactor để thể hiện hệ số tỷ lệ cho các trục ngang và trục dọc độc lập với nhau nhằm hỗ trợ các trường hợp sử dụng tỷ lệ không đồng nhất.
- Thêm phương thức computeScaleFactor vào ContentScale
- Thêm ContentScale.FillBounds để thực hiện điều chỉnh tỷ lệ không đồng nhất nhằm kéo dài phạm vi src để chiếm hoàn toàn đích đến.
- Thêm các phương thức toán tử để tính toán các thông số ScaleFactor với thông số Kích thước.
- (Ic96a6, b/172291582)
- captureToBitmap chuyển sang captureToImage. (I86385)
- Đánh dấu CoreText là @InternalTextApi. Thay vào đó, sử dụng BasicText. (I6aaeb)
- Đổi tên KeyboardOptions thành ImeOptions (I82f36)
- Chuyển KeyboardType và ImeAction vào KeyboardOptions (I910ce)
- CoreTextField được đánh dấu là @InternalTextApi. Thay vào đó, hãy sử dụng BasicTextField (Ie2469)
- Xoá 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)
- Giới thiệu mô-đun ui-test-junit4 (Ib91f8)
- Cập nhật Icon API (API Biểu tượng) để nhận Color.Unspecified với vai trò công cụ có khả năng phủ màu sẽ vẽ các thành phần được cung cấp hoặc vai trò trình vẽ không cần ColorFilter. Trước đây, hệ thống sẽ cố gắng bỏ qua việc phủ màu bằng tính năng Color.Unspecified sẽ phủ màu có màu trong suốt và cuối cùng nhìn như không phủ màu một chút nào. (I049e2, b/171624632)
- 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)
- androidx.ui.test di chuyển sang androidx.compose.ui.test (I9ffdb)
- Chuyển FirstBaseline và LastBaseline sang gói androidx.compose.ui.layout (Ied2e7)
- Thêm SelectionContainer mà không có lệnh gọi lại (Ibfadb)
- Thêm các phép thử cho vị trí của SelectionHandles trong SelectionContainer. (Ie93db)
- Thêm Tuỳ chọn IME tự động sửa lỗi bàn phím (I57b8d)
Phiên bản 1.0.0-alpha06
Ngày 28 tháng 10 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
và androidx.compose.foundation:foundation-text:1.0.0-alpha06
. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.
Các thay đổi về API
- androidx.compose.foundation.Icon được chuyển sang androidx.compose.material.Icon. Bạn cũng có thể dùng thành phần Image/Modifier.Paint() với Painter nếu không muốn sử dụng thư viện Material. (I9f622)
- Thêm interactionState vào Modifier.scrollable, ScrollableColumn và LazyColumnFor (I81566, b/169509805)
- alignByBaseline được thêm vào RowScope và alignWithSiblings đổi tên thành alignBy (I06503, b/170628732)
- Hộp được tạo một hàm cùng dòng. (Ibce0c, b/155056091)
- Thêm maxLines vào CoreTextField (Ibee58, b/143687793)
- Thêm softwrap vào CoreTextField. (I21a4b)
Sửa lỗi
- Ngừng sử dụng VectorPainter và thay bằng rememberVectorPainter để chỉ ra rõ hơn rằng API thành phần kết hợp sử dụng nội bộ "remember" để duy trì dữ liệu trên các cấu trúc. (Ifda43)
- Bật tính năng chuyển đổi trong ComposeTestRule; xoá tuỳ chọn để bật con trỏ nhấp nháy từ ComposeTestRule. (If0de3)
- Thêm tuỳ chọn bàn phím một dòng vào CoreTextField (I72e6d)
- Đổi tên Radius API thành CornerRadius API để thể hiện rõ hơn cách sử dụng API này trong toàn Compose. Tài liệu cập nhật cho biết rằng bán kính góc âm giới hạn được đặt bằng không. (I130c7, b/168762961)
- 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 IME KeyboardCapitalization (I8ac38)
- Chỉnh sửa Vị trí ô điều khiển Phải sang trái. (I6e1e0)
- Thay đổi có thể gây lỗi: xoá giá trị trả về khỏi PointerInputFilter.onPointerEvent(...) vì giá trị duy nhất có thể thay đổi được trong các sự kiện con trỏ là dữ liệu sử dụng. Thay vì trả về dữ liệu từ PointerInputFilter.onPointerEvent(...), giờ đây, bạn có thể chỉ cần thay đổi dữ liệu sử dụng của PointerEvent đã chuyển qua. (I6acd0)
- Thêm tuỳ chọn SelectAll vào trình đơn lựa chọn (Ief02b)
Phiên bản 1.0.0-alpha05
Ngày 14 tháng 10 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
và androidx.compose.foundation:foundation-text:1.0.0-alpha05
. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.
Thay đổi API
- CoreTextField hiện hỗ trợ chức năng con trỏ (Id23aa)
Ngừng sử dụng contentColor() API và currentTextStyle() API, thay thế lần lượt bằng các Ambient AmbientContentColor và AmbientTextStyle. Bạn có thể truy cập giá trị hiện tại bằng cách sử dụng
.current
trên thuộc tính môi trường xung quanh, giống như với bất kỳ môi trường xung quanh nào khác. Chúng tôi thực hiện thay đổi này để đảm bảo tính nhất quán và tránh có nhiều cách để thực hiện cùng một việc. Ngoài ra, đổi tên một số thuộc tính không gian xung quanh để mô tả rõ hơn mục đích của các thuộc tính này như sau:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Sửa lỗi
- Là một phần của quy trình tiêu chuẩn hoá các giá trị đặt gác cho các lớp nội tuyến, hãy đổi tên Color.Unset thành Color.Unspecified để tạo sự nhất quán với các lớp nội tuyến khác (I97611, b/169797763)
- Thêm các hành động hỗ trợ tiếp cận Sao chép/Dán/Cắt (I6db4f)
- Giới thiệu TextOverflow.None. Khi trình đơn mục bổ sung là Không (None), Văn bản sẽ không xử lý mục bổ sung nữa mà sẽ báo cáo kích thước thực tế vào LayoutNode. (I175c9, b/158830170)
- Cập nhật các tham số Size.Unspecified thành Float.NaN thay vì Float.POSITIVE_INFINITY. Cập nhật các nội dung triển khai Painter để kiểm tra với Size.Unspecified cũng như non-finite Sizes. (I95a7e)
- Thêm mô-đun Phân trang (Paging) của Compose và tích hợp phân trang (Ib85da)
- Sửa đổi LazyListScope để nhận các giá trị rỗng (I1765b)
- Đổi tên OnPositionedModifier thành OnGloballyPositionedModifier và đổi tên onPositioned() thành onGloballyPositioned(). (I587e8, b/169083903)
- Thêm các mẫu cho LazyColumn/Row (Idc16d)
- Khắc phục các mục và phương thức itemsIndexed để cho phép emptyList (I06647)
- 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)
- Tắt tính năng Lựa chọn trong Văn bản và Bản minh hoạ. (Ie7e97)
- Hỗ trợ AnnotatedString thành lượt chuyển đổi SpannableString để hỗ trợ tiếp cận. (Ief907)
- Xoá
PointerInputFilter.onPointerInput(...)
.PointerInputFilter.onPointerEvent(...)
phải được sử dụng đúng vị trí của hàm. (I6f04a)
Phiên bản 1.0.0-alpha04
Ngày 1 tháng 10 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
và androidx.compose.foundation:foundation-text:1.0.0-alpha04
. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.
Thay đổi API
- Stack đã được đổi tên thành Hộp (Box). Hộp (Box) nền đã tồn tại trước đây sẽ không được dùng nữa, thay vào đó là Hộp (Box) mới trong compose.foundation.layout. Hành vi của Hộp (Box) mới là các thành phần con xếp chồng lên nhau khi có nhiều thành phần con. Điều này khác với Hộp (Box) trước có hành vi tương tự như Cột (Column). (I94893, b/167680279)
- Ngừng sử dụng các tham số trang trí Hộp (Box). Nếu bạn muốn có nội dung trang trí/khoảng đệm trên hộp, hãy sử dụng Đối tượng sửa đổi (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
- Thêm một lớp LazyListState mới. Điều này cho phép bạn quan sát và kiểm soát vị trí cuộn của các thành phần LazyRow và LazyColumn. Các thực thể có thể được tạo bằng rememberLazyListState() và truyền vào tham số trạng thái của thành phần. Hiện tại, bạn có thể quan sát mục và độ dời đầu tiên trong phiên bản ban đầu này. (Ic7cb7, b/159307669)
- Giờ đây, hệ thống sẽ lưu và khôi phục vị trí danh sách theo yêu cầu và độ dời thanh cuộn trong phần Hoạt động giải trí (Ie045f, b/166589058)
- Thêm hành động ngữ nghĩa nhấp và giữ (I6281b, b/156468846)
- Tiện ích MutatorMutex đã được thêm để giữ một biến thể duy nhất của trạng thái được chia sẻ theo thời gian và huỷ các biến thể xung đột theo mức độ ưu tiên (I3f975)
- Chú thích rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled và textInputServiceFactory với @VisibleForTesting, tạo cho chúng API nội bộ và ẩn các kdoc (I554eb, b/168308412)
- Xoá các thông số inlineContent khỏi Văn bản có đầu vào Chuỗi. Thông số này sẽ không được dùng vì inlineContent phải hoạt động với AnnotatedString. (Ief403)
- Xoá các Arrangement API (API Sắp xếp) tuỳ chỉnh không dùng nữa. (Ic576d, b/168297922, b/168297923)
- Tham số
unbounded
được thêm vào đối tượng sửa đổi wrapContentSize, cho phép đo lường phần tử bố cục có các hạn chế tối đa vô hạn. (I77951, b/158559319) - Chúng tôi đã chặn tính năng nhập tĩnh nội dung của phạm vi bố cục (ví dụ: alignWithSiblings trong RowScope). Một phương án thay thế phạm vi rõ ràng nên được sử dụng:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Sửa lỗi
- Cập nhật nhiều API Đồ hoạ
- Cập nhật các API biến đổi tỷ lệ và xoay vòng để sử dụng một tham số Offset duy nhất nhằm biểu thị toạ độ trục thay cho các tham số nổi riêng biệt của các toạ độ x/y trong DrawScope và DrawTransform
- Xoá phương thức Rect.expandToInclude và Rect.join
- Cập nhật tài liệu về Bán kính để hiển thị hình bầu dục ngoài hình elip
- Thêm tài liệu để cho biết hàm khởi tạo công khai cho lớp Radius (Bán kính) cùng dòng sẽ không được gọi trực tiếp, thay vào đó các đối tượng Radius (Bán kính) cần được khởi tạo thông qua hàm khởi tạo hàm
- Xoá các RoundRect API để truy vấn topRight, bottomRight, bottomCenter, v.v.
- Ngừng sử dụng Rect.shift thay vào đó là Rect.translate
- Xoá các API RoundRect.grow và Rect.shrink
- Đổi tên RoundRect.outerRect thành Rect.boundingRect
- Xoá các phương thức RoundRect.middleRect/tallMiddleRect/wideMiddleRect và Rect.isStadium
- Đổi tên RoundRect.longestSide thành RoundRect.maxDimension
- Đổi tên RoundRect.shortestSide thành RoundRect.minDimension
- Thay đổi RoundRect.center thành một thuộc tính thay vì một hàm
- Cập nhật hàm khởi tạo RoundRect để sử dụng các thuộc tính Radius (Bán kính) thay vì các tham số riêng lẻ cho giá trị bán kính x/y
- Xoá các API kích thước giả định đó là một hình chữ nhật với gốc tại điểm 0,0
- Thêm một API phá huỷ vào Radius
- Di chuyển nhiều hàm tiện ích mở rộng RoundRect để trở thành thuộc tính thay thế
- (I8f5c7, b/168762961)
- Tối ưu hoá hiệu suất tính năng cuộn LazyColumnFor/LazyRowFor bằng cách không thực hiện các quá trình kết hợp lại không cần thiết trong mỗi lần cuộn (I64f65, b/168293643, b/167972292, b/165028371)
- Khắc phục sự cố trong LazyColumnFor/LazyRowFor sau khi cuộn và sau đó thay đổi các mục và triển khai tính năng tự động cuộn lên khi xoá mục hiển thị trước đó, vì vậy chúng tôi không còn hiển thị các khoảng trống ở cuối nữa (I220ab, b/161480164, b/167855468)
- Không được phép lồng những vị trí có thể cuộn khác trong cùng một vùng chứa như ScrollableContainer và LazyColumnFor. Tính năng này chưa từng được hỗ trợ và đã làm hỏng hành vi hất cũng như tất cả các nội dung tải chậm hợp thành các mục của LazyColumnFor (I6e101)
- Đã cập nhật nhiều API Đồ hoạ
- Cập nhật DrawScope API bằng các phương thức chuyển đổi trong phạm vi để chỉ ra rằng thao tác chuyển đổi chỉ được áp dụng trong lệnh gọi lại và sẽ bị xoá sau khi lệnh gọi lại được gọi
- Cập nhật tài liệu clipPath để tham chiếu đến Đường dẫn thay vì hình chữ nhật tròn
- Khắc phục lỗi khoảng cách trong tài liệu cho tham số bên phải trong clipPath
- Đổi tên DrawScope.drawCanvas thành drawIntoCanvas và xoá tham số kích thước
- Đổi tên các thông số dx/dy trong phương thức phần lồng ghép thành ngang và dọc
- Thêm phương thức nạp chồng phần lồng ghép cung cấp cùng một giá trị phần lồng ghép cho cả 4 giới hạn
- Xoá tài liệu về phương thức lồng ghép cho biết phần lồng ghép sẽ được áp dụng cho cả 4 cạnh
- Cập nhật tài liệu cho lớp Rect
- Cập nhật nhận xét về các tham số Rect để khớp với kiểu kdoc
- Xoá Rect.join và Rect.expandToInclude
- Tạo phương thức nạp chồng cho Rect.translate(offset) và ngừng sử dụng Rect.shift
- (If086a, b/167737376)
- Thêm AccessibilityScrollState vào các thuộc tính ngữ nghĩa. (Ifeda9)
- Đặt TextRange cùng dòng để tránh tạo đối tượng. (Id034b)
- Xoá ParagraphConstraints. Chiều rộng được chuyển trực tiếp đến Đoạn ngay. (Ica712)
Phiên bản 1.0.0-alpha03
Ngày 16 tháng 9 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
và androidx.compose.foundation:foundation-text:1.0.0-alpha03
. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.
Thay đổi API
- Đổi tên InnerPadding thành PaddingValues. (I195f1, b/167389171)
- Việc sử dụng trọng lực được đổi tên nhất quán để căn chỉnh hoặc định vị trí trong các API bố cục. (I2421a, b/164077038)
- Một tham số căn chỉnh đã được thêm vào Ngăn xếp, cho phép chỉ định căn chỉnh mặc định cho tất cả các Ngăn xếp con. (Ie80ca, b/164085265)
Sửa lỗi
- Ngừng sử dụng DpConstraints và các API dùng hàm giới hạn này. (I90cdb, b/167389835)
- Các thông số
minWidth
vàmaxWidth
củawidthIn
được đổi tên thànhmin
vàmax
. Tương tự chopreferredWidthIn
,heightIn
,preferredHeightIn
. (I0e5e1, b/167389544) - Thêm onNode và các phương thức chung khác trên ComposeTestRule vì các phương thức chung hiện tại sẽ không được dùng nữa. (Ieae36)
- Khắc phục sự cố với các phép tính kích thước và vị trí trong GestureScope gây ra các cử chỉ vuốt không hợp lệ trong số nhiều sự cố khác (Iaf358, b/166589947)
- Di chuyển
createAndroidComposeRule
vàAndroidInputDispatcher
từandroidx.ui.test.android
sangandroidx.ui.test
(Idef08, b/164060572)
Phiên bản 1.0.0-alpha02
Ngày 2 tháng 9 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
và androidx.compose.foundation:foundation-text:1.0.0-alpha02
. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.
Sửa lỗi
- TestUiDispatcher được đánh dấu là thử nghiệm (Iae99d, b/161247083)
Thêm
ManualFrameClock.hasAwaiters
để xem có sự kiện nào đang chờ một khung từ đồng hồ đó hay không;runWithManualClock
thay thế chorunBlocking
khi chạy các chương trình kiểm thử cần dùng một ManualFrameClock;TestUiDispatcher.Main
giúp dễ dàng truy cập vào trình điều phối chính cho giao diện người dùng trong các lượt kiểm thử của bạn.Ví dụ:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Phiên bản 1.0.0-alpha01
Ngày 26 tháng 8 năm 2020
Phát hành androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
và androidx.compose.foundation:foundation-text:1.0.0-alpha01
. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.
Phiên bản 0.1.0-dev
Phiên bản 0.1.0-dev17
Ngày 19 tháng 8 năm 2020
Phát hành androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
và androidx.compose.foundation:foundation-text:0.1.0-dev17
. Phiên bản 0.1.0-dev17 bao gồm các thay đổi sau.
Thay đổi API
- Sắp xếp spacedBy được thêm vào Hàng và Cột để cho phép định vị thành phần con cháu của bố cục có khoảng cách cố định. Tính năng Sắp xếp đã căn chỉnh cũng đã được thêm vào để cho phép định vị các thành phần con của bố cục cạnh nhau và phù hợp trong Hàng/Cột theo Căn chỉnh. Các phương thức Arrangement.Vertical#arrange và Arrangement.Horizontal#arrange trước đây không còn được dùng nữa và tính năng Sắp xếp tuỳ chỉnh sẽ không được hỗ trợ trong tương lai. (I6733d, b/161985975)
- Offset đã trở thành lớp nội tuyến (Iaec70)
- Xoá lệnh gọi lại onFocusChanged khỏi TextField. Thay vào đó, hãy dùng Modifier.focusObserver. (I51089, b/161297615)
- Ngừng sử dụng Modifier.drawBorder. Thay vào đó, hãy dùng Modifier.border. Thay thế lớp dữ liệu đường viền bằng BorderStroke (I4257d, b/158160576)
- VerticalScroller và HorizontalScroller đã bị xoá. Thay vào đó, hãy sử dụng ScrollableColumn/Row. Xoá Modifier.drawBackground. Sử dụng Modifier.background (I73b0d, b/163019183)
- Xoá mục đánh dấu là đối tượng sửa đổi fillMax* không dùng nữa khỏi LazyItemScope vì các mục đó sẽ khiến khó thêm các đối tượng sửa đổi một cách chính xác cho các mục không phải là thành phần con trực tiếp của LazyColumnFor (Ifa78d)
- thêm nội dung triển khai LazyColumn/LazyRow dưới dạng DSL (I93cc6)
- Giới hạn (Constraints) hiện là một lớp nội tuyến (I88736)
- Thêm khả năng xác định kích thước bố cục tới một phần không gian có sẵn, sử dụng các công cụ sửa đổi fillMaxWidth, fillMaxHeight và fillMaxSize. (I945bb, b/161562591)
Sửa lỗi
- Thêm tham số đối tượng sửa đổi vào SelectionContainer (I4aada, b/161487952)
- Thêm hàm lambda mergePolicy vào SemanticsPropertyKey. Bạn có thể dùng phương thức này để xác định chính sách tuỳ chỉnh cho việc hợp nhất ngữ nghĩa mergeAllDescendants. Chính sách mặc định là sử dụng giá trị thành phần mẹ nếu đã có, nếu không sẽ là giá trị của thành phần con. (Iaf6c4, b/161979921)
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)- Xoá thành phần FilledTextField không dùng nữa. Thay vào đó, hãy sử dụng TextField để triển khai Material Design của trường văn bản được tô màu nền. (I5e889)
- Thêm tham số backgroundColor vào LinearProgressIndicator và xoá khoảng đệm nội bộ khỏi CircularProgressIndicator. Thêm ProgressIndicatorConstants.DefaultProgressAnimationSpec mới có thể được dùng làm AnimationSpec mặc định trong tiến trình tạo ảnh động giữa các giá trị (If38b5, b/161809914, b/161804677)
- Ngừng sử dụng thành phần kết hợp
state { ... }
và thay bằng các lệnh gọi rõ ràng tớiremember { mutableStateOf(...) }
để đảm bảo sự rõ ràng. Điều này làm giảm giao diện API tổng thể và số lượng khái niệm để quản lý trạng thái, đồng thời khớp với mẫuby mutableStateOf()
theo uỷ quyền thuộc tính của lớp. (Ia5727) - Đổi tên RRect thành RoundRect để phù hợp hơn với các kiểu đặt tên của Compose. Tạo các hàm khởi tạo tương tự đối với RRect và ngừng sử dụng các hàm khởi tạo hàm RRect (I5d325)
- Xoá onChildPositioned và OnChildPositionedModifier. Thay vào đó, nhà phát triển nên sử dụng onPositioned và OnPositionedModifier trên bố cục thành phần con cháu. (I4522e, b/162109766)
- IntSize hiện là lớp nội tuyến (I2bf42)
- Nhấn và giữ vùng trống để chỉnh sửa. (Ib1e5b)
- Ẩn FloatingToolbar sau khi Nhấn vào văn bản. (If4525)
- Ẩn FloatingToolbar khi cập nhật lựa chọn. (I8444c)
- Bỏ chọn khi Làm mờ. (I781a2)
Phiên bản 0.1.0-dev16
Ngày 5 tháng 8 năm 2020
Phát hành androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
và androidx.compose.foundation:foundation-text:0.1.0-dev16
. Phiên bản 0.1.0-dev16 bao gồm các thay đổi sau.
Thay đổi API
- Thêm LazyItemScope cho tham số itemContent của danh sách Lazy. Thành phần này cung cấp các đối tượng sửa đổi để lấp đầy kích thước tối đa của thành phần mẹ, giúp giải quyết trường hợp sử dụng khi mục cần lấp đầy khung nhìn và Modifier.fillMaxSize() thông thường không hoạt động khi mục được đo lường bằng các giới hạn vô hạn. (Ibd3b2, b/162248854)
- Di chuyển hộp thoại đến giao diện người dùng (I47fa6)
- Thêm LazyColumnForIndexed/LazyRowForIndexed - các phiên bản của LazyColumnFor/LazyRowFor trong đó cung cấp cả chỉ mục và mục trong itemCallback. Tính năng này rất hữu ích khi cần biết chỉ mục hiện tại ngoài một mục hiện tại. (I65ff3)
- Đổi tên Modifier.deternimateProgress thành Modifier.progressSemantics (I9c0b4)
- LazyColumnItems được đổi tên thành LazyColumnFor. LazyRowItems được đổi tên thành LazyRowFor (I84f84)
- Thêm một số Dấu/Chú thích để đạt hiệu quả cao nhất (I66b20)
- Gói foundation.shape.corner được làm phẳng thành foundation.share (I46491, b/161887429)
- Thêm thông số trọng lực trục chéo cho LazyRowItems/LazyColumnItems. Lazy RowItems/Lazy CampaignItems hiện đã hỗ trợ hoạt động gói nội dung. (Ib39fc)
- Đổi tên ZoomableState thành ZoomableController. Chúng tôi đã thêm tuỳ chọn hỗ trợ cho đường cong tuỳ chỉnh cho smoothScale. Thêm chức năng
enabled
vàonZoomStarted
(If8b8f) - Đổi tên FilledTextField của Material thành TextField và TextField nền tảng thành BaseTextField để giúp người dùng dễ dàng khám phá và sử dụng API mong muốn theo cách đơn giản nhất (Ia6242, b/155482676)
- Chúng tôi đã xoá AdapterList trước đây. Thay vào đó, hãy sử dụng LazyColumnItems (I12b9b)
- Đổi tên Modifier.drawBackground thành Modifier.background (I13677)
- Công nghệ ConstraintLayout DSL cũ đã bị xoá. ConstraintSet2 được đổi tên thành ConstraintSet. (If58d1, b/162450908)
- Thêm Modifier.absoluteOffset() và Modifier.absoluteOffsetPx(). Không giống như đối tượng sửa đổi độ chênh lệch, đối tượng sửa đổi độ chênh lệch tuyệt đối sẽ không tự động phản ánh trong ngữ cảnh từ phải sang trái (I3aa21)
Row
vàColumn
hiện là hàm cùng dòng đã giảm đáng kể tài nguyên sử dụng. (I75c10)
Sửa lỗi
- Thông báo các bản sửa lỗi API rộng (I077bc)
- Xoá giao diện OffsetBase không sử dụng
- Căn chỉnh các lớp Offset và IntOffset để có một nền tảng API nhất quán
- Đổi tên IntOffset.Origin thành IntOffset.Zero để phù hợp với API Offset
- Chuyển phương thức nativeCanvas ra khỏi giao diện Canvas để hỗ trợ đối tượng sử dụng tạo các thực thể Canvas riêng của họ
- Tạo lớp EmptyCanvas mã giả lập để tái cấu trúc DrawScope thành tham số có giá trị không rỗng thay cho lateinit và đảm bảo tính không rỗng của trường
- Đổi tên enum ClipOp thành PascalCase
- Đổi tên enum FilterQuality thành PascalCase
- Đổi tên enum StrokeJoin thành PascalCase
- Đổi tên enum PointMode thành PascalCase
- Đổi tên enum PaintingStyle thành PascalCase
- Đổi tên enum PathFillType thành PascalCase
- Đổi tên enum StrokeCap thành PascalCase
- Cập nhật quá trình triển khai DrawCache để không còn sử dụng các thông số lateinit
- Đã cập nhật DrawScope để không còn sử dụng tính năng uỷ quyền tải lười cho các thông số nội bộ fillPaint và strokePaint
- Cập nhật thành phần kết hợp Image để tránh sử dụng Box nhằm giảm chi phí
- Cập nhật lớp Outline để có các chú thích @Immutable
- Cập nhật PathNode để có các chú thích @Immutable nhằm biết hướng dẫn cho từng lộ trình
- Cập nhật cấu trúc phụ trong Vector để xoá các lượt kiểm tra có điều kiện dư thừa về tính bình đẳng vì Compose đã xử lý chúng
- Ngừng sử dụng các phương thức hàm khởi tạo đồng hành Rect và thay thế bằng các hàm khởi tạo hàm
- Cập nhật lớp Brush và hàm khởi tạo hàm bằng các API @Immutable và @Stable
- Cập nhật enum VertexMode thành PascalCase
- Cập nhật phương thức DrawScope selectPaint để ghi đè có điều kiện các tham số nét vẽ trên bản vẽ nếu chúng thay đổi
- Cập nhật Kích thước để thêm API giải cấu trúc, đổi tên UnspecifiedSize thành Unspecified và xoá các phương thức không được sử dụng
Thêm MonotonicFrameAnimationClock cho phép bạn sử dụng MonotonicFrameClock như một AnimationClockObservable để làm cầu nối giữa các đồng hồ và API dựa trên coroutine mới mà vẫn sử dụng các đồng hồ dựa trên lệnh gọi lại cũ.
MonotonicFrameClock tương đương với ManualAnimationClock nay là ManualFrameClock. (I111c7, b/161247083)
Xoá
SemanticsNodeInteraction.performPartialGesture
. Chuyển sang sử dụngSemanticsNodeInteraction.performGesture
. (Id9b62)Đổi tên
SemanticsNodeInteraction.getBoundsInRoot()
thànhSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)API dành cho tính năng hỗ trợ từ phải sang trái đã được cập nhật. Thêm LayoutDirectionAmbient dùng để đọc và thay đổi hướng bố cục. Xoá Modifier.rtl và Modifier.ltr. (I080b3)
Ngừng sử dụng Modifier.plus và thay bằng Modifier.then. "Then" có tín hiệu rõ ràng hơn về thứ tự, đồng thời nghiêm cấm nhập
Modifier.padding().background() + anotherModifier
, khiến cho chuỗi bị phá vỡ và khó đọc hơn (Iedd58, b/161529964)Thêm SemanticsMatcher
isFocused()
vàisNotFocused()
. (I0b760)Thêm RemeasurementModifier Thuộc tính này cho phép người dùng đo lường lại bố cục một cách đồng bộ. Nói chung, bạn không bao giờ cần đến thuộc tính này để tự động đo lường/bố cục lại, nhưng chúng tôi sử dụng nó bên trong LazyColumnItems trong quá trình cuộn. (I5f331, b/160791058)
isSystemInDarkTheme hiện luôn xem xét chế độ cài đặt giao diện tối trên toàn hệ thống và bỏ qua trạng thái tiết kiệm pin trước Q, theo hướng dẫn mới nhất. (I0c10c)
Ngừng sử dụng OnChildPositioned. Thay vào đó, hãy sử dụng OnPositioned trên thành phần con. (I87f95, b/162109766)
Đổi tên AndroidComposeTestRule thành createAndroidComposeRule. (I70aaf)
Thêm hành động hỗ trợ tiếp cận để có được TextLayoutResult (I9d6e6)
Phiên bản 0.1.0-dev15
Ngày 22 tháng 7 năm 2020
Phát hành androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
và androidx.compose.foundation:foundation-text:0.1.0-dev15
. Phiên bản 0.1.0-dev15 bao gồm các thay đổi sau.
Để sử dụng phiên bản 0.1.0-dev15
của Compose, bạn cần:
Cập nhật phần phụ thuộc
- Để sử dụng phiên bản
0.1.0-dev15
của Compose, bạn cần cập nhật các phần phụ thuộc theo đoạn mã mới xuất hiện trong phần Khai báo phần phụ thuộc bên trên.
Thay đổi API
- Tương tự như thông số mới trong ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems hiện cũng có thông số contentPadding cho phép thêm khoảng đệm cho nội dung sau khi nội dung đã được cắt bớt. Bạn không thể thực hiện việc này thông qua thông số công cụ sửa đổi. Tính năng này cũng cho phép thêm khoảng cách trước mục đầu tiên/sau mục cuối cùng. (Ibc24e)
- Lệnh gọi lại onFocusChange trong các trường văn bản đã được đổi tên thành onFocusChanged (Ida4a1)
- Ngừng sử dụng VerticalScroller và HoriziontalScroller. Sử dụng ScrollableColumn và ScrollableRow để tạo trải nghiệm tích hợp với hoạt động và tham số Columm/Row (Cột/Hàng) hoặc Modifier.verticalScroll và Modifier.horizontalScroll trên phần tử của riêng bạn. Tương tự, ScrollerPosition không còn được dùng nữa và thay vào đó là ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
- Thiết kế lại các API Modifier.draggable và Modifier.scrollable. DragDirection đã bị xoá, thay vào đó là Hướng. Đơn giản hoá trạng thái cần thiết cho thành phần có thể cuộn. ScrollableState được đổi tên thành ScrollableController (Iab63c, b/149460415)
- 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) - Kích thước góc mà RoundedCornerShape và CutCornerShape sử dụng hiện có thể lớn hơn 50% (Id2340, b/160400213)
- Thay đổi tham số ContentScale mặc định cho thành phần kết hợp Image từ Inside (Bên trong) thành Fit (Khớp). Điều này được thực hiện để hoạt động mở rộng tỷ lệ công cụ Painter cơ bản nếu kích thước bố cục lớn hơn kích thước hàm nội tại trong Painter trong khi vẫn duy trì tỷ lệ khung hình. Hoạt động này phù hợp hơn với kỳ vọng của bạn khi cung cấp kích thước cố định cho Image trong khi không ảnh hưởng đến nội dung mặc định nếu chỉ sử dụng kích thước nội tại để tính toán kích thước của thành phần kết hợp. (I40ae3, b/159838006)
- Sử dụng AnimationSpec thay vì AnimationBuilder trong các API cấp cao nhất để làm rõ khái niệm về thông số kỹ thuật của ảnh động tĩnh – Cải thiện chuyển đổi DSL bằng cách xoá yêu cầu hàm lambda để tạo AnimationSpecs như tween, spring. Thay vào đó, chúng trực tiếp lấy các tham số của hàm khởi tạo. – Cải thiện khả năng dễ sử dụng tổng thể của AnimationSpec khi mở các hàm khởi tạo thay vì dựa vào trình tạo – Thay đổi thời lượng và độ trễ cho KeyFrames và Tween thành Int. Việc này sẽ loại bỏ các phương thức truyền không cần thiết và các phương thức nạp chồng (để hỗ trợ cả Long và Int). (Ica0b4)
- Xoá tính năng có thể nhấp. Sử dụng Modifier.clickable (I84bdf)
- Thêm LazyRowItems – Mô hình cuộn theo chiều ngang của LazyColumnItems (Ibbcf7)
- Giới thiệu API ảnh động không có trạng thái cấp thấp. Các API này (I63bf7)
- Ngừng sử dụng androidx.ui.foundation.TextFieldValue và androidx.ui.input.EditorValue. Ngừng sử dụng cả những thành phần kết hợp TextField, FilledTextField và CoreTextField sử dụng kiểu dữ liệu đó. Vui lòng sử dụng androidx.ui.input.TextFieldValue thay thế (I4066d, b/155211005)
- Thay thế việc sử dụng IntPx bằng Int. Thay thế IntPxPosition bằng IntOffset. Thay thế IntPxSize bằng IntSize. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape đã bị xoá; hãy sử dụng androidx.ui.graphics.RectangleShape (I94939, b/154507984 )
- Để thống nhất số lượng lớp dùng để biểu thị thông tin kích thước, hãy chuẩn hoá mức sử dụng lớp Size (Kích thước) thay vì PxSize. Điều này mang lại lợi ích của một lớp cùng dòng nhằm tận dụng giá trị độ dài để gói 2 giá trị độ chính xác đơn đại diện cho chiều rộng và chiều cao được biểu thị dưới dạng độ chính xác đơn. (Ic0191)
- Để thống nhất số lượng lớp đại diện cho thông tin vị trí, hãy chuẩn hoá việc sử dụng lớp Offset thay vì PxPosition. Điều này mang lại lợi ích của một lớp cùng dòng nhằm tận dụng giá trị độ dài để gói 2 giá trị độ chính xác đơn đại diện cho độ dời x và y được biểu thị dưới dạng giá trị độ chính xác đơn. (I3ad98)
- Thêm Modifier.zoomable cho chức năng chụm để thu phóng (Id5d63)
- Ngừng sử dụng thành phần có thể chuyển đổi. Thay vào đó, hãy sử dụng Modifier.toggleable (I35220, b/157642842)
- Ngừng sử dụng MutuallyExclusiveSetItem. Thay vào đó, hãy sử dụng Modifier.selectable. (I02b47, b/157642842)
- Ngừng sử dụng TestTag. Thay vào đó, hãy sử dụng Modifier.testTag. (If5110, b/157173105)
- Thêm thông số fontWeight vào Văn bản mà trước đây không được thêm vào (I56937)
- Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I19d02)
- VerticalScroller hiện cung cấp tính năng Cột ngay từ đầu. HorizontalScroller hiện cung cấp tính năng Hàng ngay từ đầu. (Ieca5d, b/157020670)
- Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (Iede0b)
- Modifier.indication đã được thêm vào gói nền tảng. Sử dụng thành phần này để hiển thị chỉ báo nhấn/kéo hay chỉ báo khác trên các thành phần tương tác tuỳ chỉnh (I8425f, b/155287131)
- VerticalScroller và HorizontalScroller hiện hỗ trợ cuộn ngược là isReversed được đặt trên ScrollerPosition (I953bd)
- Hỗ trợ việc thêm các thành phần kết hợp vào bố cục văn bản. (I1373c)
- Thống nhất việc triển khai CanvasScope để chỉ có DrawScope và ContentDrawScope Đổi tên CanvasScope thành DrawScope. Cập nhật DrawScope để triển khai giao diện Mật độ (Density) và cung cấp LayoutDirection. Xoá lớp con DrawScope trong ContentDrawScope. Painter và PainterModifier đã được cập nhật để ngừng duy trì thuộc tính RTL vì DrawScope đã cung cấp thuộc tính này mà không cần cung cấp nó theo cách thủ công (I1798e)
- Xoá DrawBackground API không dùng nữa, thay vào đó là các API mở rộng drawBackground trên Đối tượng sửa đổi. Tái cấu trúc quy trình triển khai màu, bút vẽ và màu vẽ drawBackground để giảm đường dẫn mã cũng như xoá yêu cầu tạo Đối tượng sửa đổi trong phạm vi cấu trúc. (I0343a)
- Cập nhật các API của Compose lên cấp cao hơn để hiển thị CanvasScope thay cho Canvas. Việc này giúp người sử dụng không cần phải duy trì các đối tượng Paint của họ. Đối với những người sử dụng vẫn yêu cầu quyền truy cập vào Canvas, họ có thể dùng phương thức mở rộng drawCanvas. Phương thức này cung cấp một lệnh gọi lại để tạo ra một lệnh vẽ cho Canvas cơ bản. (I80afd)
- HorizontalScroller và VerticalScroller không khôi phục lại vị trí cuộn của chúng bằng cách sử dụng trạng thái bản sao đã lưu. (Ia0fae, b/155075048)
- FocusManagerAmbient đã bị xoá. Sử dụng FocusModifier.requestFocus để lấy tiêu điểm. (Ic4826)
- Bố cục bảng đã bị xoá tạm thời cho đến khi chúng tôi cung cấp lại bố cục với một API được làm mới. (Id88a7)
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 nhận riêng và thông tin kích thước cũng nằm trong giới hạn lồng ghép tương ứng. Nó không yêu cầu người dùng duy trì đối tượng trạng thái Paint của riêng mình để định cấu hình các hoạt động vẽ.
Thêm CanvasScopeSample cũng như cập nhật ứng dụng minh hoạ có bản minh hoạ đồ hoạ khai báo (Ifd86d)
ColoredRect đã bị xoá. Thay vào đó, hãy dùng Hộp có công cụ sửa đổi drawBackground (I983c7, b/152753731)
Thêm tuỳ chỉnh màu con trỏ vào TextField (I6e33f)
Giờ đây, bạn có thể ẩn/hiện bàn phím phần mềm bằng SoftwareKeyboardController do lệnh gọi lại onTextInputStarted cung cấp (I8dc44, b/151860051)
TextFieldValue được sử dụng với TextField hiện có thể là hoạt động giải trí tồn tại khi được sử dụng như sau:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Thêm các tham số thường dùng vào Text(). Nếu đang tạo kiểu văn bản trên máy để truyền một số ít tham số này, chẳng hạn như
Text(style = TextStyle(textAlign = TextAlign.Center))
, thì giờ đây, bạn chỉ cần trực tiếp cung cấp các tham số:Text(textAlign = TextAlign.Center)
(I82768)Thay thế tham số CoreTextField/TextField focusIdentifier bằng FocusNode để tích hợp với hệ thống con lấy tiêu điểm. (I7ea48)
Cập nhật TextField - trong kích thước theo chiều ngang, nó sẽ chiếm tất cả không gian có sẵn được cấp cho nó (Ib08df, b/154638552)
Thêm InteractionState và Interaction, giúp bạn dễ dàng xây dựng các thành phần phản ứng với các thay đổi trạng thái trên giao diện người dùng như nhấn và kéo (Icfe25, b/152525426)
RectangleShape được di chuyển từ androidx.ui.foundation.shape.* sang androidx.ui.graphics.* (Ia74d5, b/154507984)
Thay thế tất cả Color (Màu) có thể nhận giá trị rỗng trong API bằng các Color (Màu) không nhận giá trị rỗng và sử dụng Color.Unset thay cho giá trị rỗng (Iabaa7)
Cập nhật API TextField - đã hợp nhất các lệnh gọi lại onFocus và onBlur thành một lệnh gọi lại onFocusChange(Boolean) duy nhất với các thông số (I66cd3)
Đổi tên ScaleFit thành ContentScale Chuyển ContentScale từ mô-đun ui-graphics sang mô hình 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 để khớp hơn với các thành phần tương ứng của ImageView.scaleType Thêm tài liệu cho biết rằng sự kết hợp của Crop và Alignment.Center đạt được cùng kết quả như ImageView.ScaleType.CENTER_CROP và Fit dùng với Alignment.Center đạt được kết quả tương tự như ImageView.ScaleType.FIT_CENTER Bên trong được sử dụng với Alignment.Center đạt được cùng kết quả như ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
Xoá ProvideContentColor, thay vào đó chỉ cần sử dụng ContentColorAmbient trực tiếp với
Providers
(Iee942)Thêm tham số màu vào văn bản, cho phép ghi đè màu của kiểu văn bản mà không cần phải hợp nhất theo cách thủ công với kiểu đã cung cấp trong giao diện. (I41a66)
Cải thiện API DrawModifier:
- Tạo phạm vi của trình thu nhận cho draw() ContentDrawScope
- Xoá mọi tham số trên draw()
- DrawScope có giao diện giống như CanvasScope cũ
- ContentContentScope có phương thức DrawContent() (Ibaced, b/152919067)
Ngừng sử dụng ColoredRect. Thay vào đó, hãy sử dụng
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)Hệ thống sắp xếp theo chủ đề hình dạng được cập nhật theo tham số kỹ thuật của Material Design. Giờ đây, bạn có thể cung cấp các hình dạng nhỏ, vừa và lớn để hầu hết các thành phần đều có thể sử dụng (Ifb4d1)
Thay thế Đối tượng sửa đổi cùng với toán tử bằng các hàm mở rộng nhà máy (I225e4)
Thành phần Draggable chuyển sang công cụ sửa đổi (Id9b16, b/151959544)
Chuyển
Text
sang gói androidx.ui.foundation, từ androidx.ui.core. (I87ce5)Thêm tham số
enabled
vào Hộp đánh dấu, Nút chuyển và Có thể bật/tắt (I41c16)Ripple hiện là một Công cụ sửa đổi. Mặc dù Clickable (Đối tượng có thể nhấp) chưa được chuyển đổi, cách sử dụng đề xuất là
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763)Thêm VectorPainter API để thay thế API thành phần phụ hiện có cho đồ hoạ vectơ. Kết quả của thành phần phụ là một đối tượng của VectorPainter thay vì DrawModifier. Ngừng sử dụng các thành phần kết hợp trước đây của DrawVector và thay vào đó là VectorPainter.
Đổi tên API
Image(Painter)
thànhPaintBox(Painter)
Tạo thành phần kết hợp vectơ hoạt động như thành phần kết hợp Image, ngoại trừ VectorAsset thay vì ImageAsset (I9af9a, b/149030271)Tạo thành phần kết hợp Image để xử lý kích thước/bố cục bên cạnh việc vẽ một thành phần ImageAsset đã xác định cho màn hình. Thành phần kết hợp này cũng hỗ trợ vẽ mọi phiên bản Painter tuỳ ý tôn trọng kích thước nội tại của nó cũng như hỗ trợ kích thước cố định hoặc kích thước tối thiểu nhất định (Ibcc8f)
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)Đổi tên Image thành ImageAsset để phân biệt rõ hơn sự khác biệt giữa dữ liệu Image và thành phần kết hợp sắp tới của Image được dùng để tham gia vào bố cục và vẽ nội dung.
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ành phần kết hợp DrawImage đã bị xoá. Sử dụng ImagePainter để vẽ hình ảnh trên bố cục hiện có hoặc SimpleImage để giới thiệu Hình ảnh chiếm không gian (I595e1, b/149827027)
Thành phần Ngăn xếp hỗ trợ hướng từ phải sang trái (Ic9e00)
Thêm Icon, IconButton và IconSwitchButton, đang xoá AppBarIcon. Bạn có thể trực tiếp thay thế các cách sử dụng hiện có của AppBarIcon bằng IconButton, và chúng hiện sẽ có đích nhấn chính xác. Xem các mẫu thông tin sử dụng và xem Biểu tượng cho các Biểu tượng Material được cung cấp mà bạn có thể sử dụng trực tiếp với các thành phần này. (I96849)
Thành phần kết hợp DrawShape đã bị xoá. Thay vào đó, hãy sử dụng công cụ sửa đổi DrawBackground. (I7ceb2)
Thêm AdapterList, một thành phần danh sách dạng cuộn chỉ kết hợp và sắp xếp các mục hiển thị. Các vấn đề hiện đã biết bao gồm cả lỗi chỉ theo chiều dọc và không xử lý hết mọi trường hợp thay đổi đối với thư mục con. (Ib351b)
Thêm thành phần có thể cuộn, cho phép tạo Trình cuộn/Danh sách tuỳ chỉnh (I5fd37)
Đổi tên nền thành DrawBackground và đặt ghi nhớ mặc định tên này (Ia0bd3)
Thêm khoảng đệm, đường viền, hình dạng và tham số nền vào Box (I05027, b/148147281)
Thêm thành phần Canvas. Thành phần kết hợp này có một số kích thước (do người dùng cung cấp) và cho phép bạn vẽ bằng CanvasScope (I0d622)
đổi tên công cụ sửa đổi
Border
thànhDrawBorder
(I8ffcc)Thêm thành phần Hộp (Box) để kết hợp bố cục và vẽ các chức năng phổ biến. (I6e2a7)
Các trình cuộn hiện hiển thị nội dung chuyển động vuốt nhanh của Android. (I922af, b/147493715)
Thay thế DrawBorder bằng Đối tượng sửa đổi Đường viền (Id335a)
Đổi tên Modifier.tag thành Modifier.layoutId để tránh nhầm lẫn với Modifier.testTag. (I995f0)
Tham số phần trăm khi tạo nguyên tắc ConstraintLayout được đổi tên thành phân số. (Ida2db)
Thêm tuỳ chọn hỗ trợ cho lề của thanh chắn ConstraintLayout. (I47ffe)
Khắc phục yêu cầu hỗ trợ RTL trong ConstraintLayout. Thêm các API không xác định RTL. (I3b1c7)
Thêm một DSL mới cho ConstraintLayout. Vui lòng xem các ví dụ sau để biết thêm chi tiết. (Icaa9a)
Thêm chú thích @ExperimentalLayout. ConstraintLayout, FlowRow và FlowColumn hiện được gắn thẻ với mã này để đánh dấu rằng các API này sẽ thay đổi. (I412a8)
Thêm
Modifier.padding(InnerPadding)
(I94985, b/157133803)Xoá RowAlign, ColumnAlign không dùng nữa ở Hàng và Cột. (If60d4, b/155858731)
Xoá LayoutTag() không dùng nữa, hãy chuyển sang sử dụng Modifier.tag(). Xoá Modifier.matchParent() không dùng nữa, chuyển sang sử dụng Modifier.matchParentSize(). (If8044)
Thêm công cụ sửa đổi bố cục offsetPx dùng để xác định độ dời (linh động) trong px. (I5af57)
Ngừng sử dụng thành phần kết hợp AlignmentLineOffset, thay vào đó, hãy sử dụng đối tượng sửa đổi relativePaddingFrom(). Xoá thành phần kết hợp CenterAlignmentLine. (I60107)
Thêm đối tượng sửa đổi bố cục defaultMinSizeConstraints. Đối tượng này đặt giới hạn kích thước thành bố cục bao bọc chỉ khi các giới hạn tương ứng sắp tới không được chỉ định (0 cho giới hạn tối thiểu và vô hạn (infinity) cho giới hạn tối đa). (I311ea, b/150460257)
Xoá vùng chứa. Thay vào đó, hãy sử dụng Box (Ibbc2b, b/151407926)
Xoá các đối tượng sửa đổi LayoutWidth/Height/Size không dùng nữa. (Ib0bc1)
Thêm các giá trị thông số mặc định cho công cụ sửa đổi độ dời. (I37f06)
Thêm đối tượng sửa đổi khoảng đệm đối xứng. (I39840)
Xoá đối tượng sửa đổi LayoutAspectRatio không dùng nữa. (I65a74)
Xoá các đối tượng sửa đổi LayoutAlign không dùng nữa. (I10877)
Sửa lỗi trong các đối tượng sửa đổi chiều rộng và chiều cao. Lỗi này đã gây ra hiện tượng đo lường bố cục bao bọc mà không có các giới hạn trục đối diện. (I210b8, b/154797971)
Thêm các tham số verticalGravity và horizontalGravity vào Hàng và Cột tương ứng. (I7dc5a)
Cập nhật wrapContentWidth và wrapContentHeight để kỳ vọng Căn chỉnh dọc hoặc ngang thay vì bất kỳ Căn chỉnh nào. Cập nhật đối tượng sửa đổi trọng lực để chấp nhận Căn chỉnh dọc hoặc ngang. Hàng, Cột và Ngăn xếp được cập nhật để hỗ trợ Căn chỉnh liên tục tuỳ chỉnh. (Ib0728)
Tạo Alignment (Căn chỉnh) có thể tạo phiên bản với các giá trị tuỳ ý. Thêm Căn chỉnh 1D. (Ia0c05)
Đổi tên EdgeInsets thành InnerPadding. Đổi tên tham số innerPadding của các Nút Material thành khoảng đệm. (I66165)
alignToSiblings hiện chấp nhận một giá trị Measured thay vì Placeable. (I5788d)
Thêm các đối tượng sửa đổi kích thước để đo lường nội tại và ngừng sử dụng các thành phần phục vụ mục đích này nữa. (I8295d)
Thêm tuỳ chọn hỗ trợ phương diện tuỳ chỉnh các thành phần con của ConstraintLayout (Idb1a5)
Xoá các thành phần kết hợp Wrap và Center không dùng nữa. (I29e23)
Thêm LayoutModifier2, một API mới để xác định đối tượng sửa đổi bố cục; ngừng sử dụng LayoutModifier (If32ac)
Giờ đây, bạn có thể truy cập các thành phần RowScope và ColumnScope bên ngoài Hàng và Cột. (I3a641)
Ngừng sử dụng vùng chứa. Thay vào đó, hãy sử dụng Hộp. (I675ce, b/151407926)
Thêm công cụ sửa đổi LayoutOffset để dịch chuyển bù vị trí bố cục (I0b8a3)
Hỗ trợ ban đầu cho Rtl trong bố cục Compose (Ia5519)
Cập nhật LayoutAlign để không còn lấp đầy không gian trống (I2b14f)
Xoá thành phần kết hợp AspectRatio và thay bằng đối tượng sửa đổi. Xoá các thành phần kết hợp FlexColumn, FlexRow và đối tượng sửa đổi Khoảng cách (Iec8a7)
Xoá công cụ sửa đổi LayoutInflexible cho Hàng và Cột (I0d820)
Triển khai Ô điều khiển lựa chọn kéo để thay đổi lựa chọn cho TextField. (I27032)
Triển khai LongPressAndDrag cho Lựa chọn TextField. (I17919)
Sửa lỗi
- Ngừng sử dụng FocusModifier và thay bằng Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. Ngừng sử dụng FocusState và FocusDetailedState và thay bằng FocusState2 (I46919, b/160822875, b/160922136)
- Đổi tên
runOnIdleCompose
thànhrunOnIdle
(I83607) - Đổi tên một số API kiểm thử để mang tính trực quan hơn. Tất cả các API findXYZ được đổi tên thành onNodeXYZ. Tất cả các API doXYZ được đổi tên thành performXYZ. (I7f164)
- Xoá Modifier.ripple không dùng nữa trước đây. Hiện tại, đối tượng có thể nhấp sử dụng hiệu ứng gợn sóng làm chỉ báo mặc định (nếu bạn đã thiết lập MaterialTheme {} trong ứng dụng của mình). Vì vậy, trong hầu hết các trường hợp, bạn có thể chỉ cần dùng đối tượng có thể nhấp và sử dụng chỉ báo hiệu ứng gợn sóng mà không cần làm gì thêm. Nếu cần tuỳ chỉnh tham số màu/kích thước/giới hạn cho hiệu ứng gợn sóng, bạn có thể tạo RippleIndication theo cách thủ công và truyền tham số này vào đối tượng có thể nhấp dưới dạng tham số chỉ báo. (I663b2, b/155375067)
- Xoá các API kiểm thử kích thước lỗi thời. (Iba0a0)
- Tạo API thử nghiệm LayoutNode (I4f2e9)
- Phiên bản 1 của khoá định hướng cuộn được triển khai trên Compose. (I1ce7a, b/150289741)
- 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)
- Xoá tham số hướng bố cục khỏi khối đo lường của hàm Layout(). Tuy nhiên, bạn có thể dùng hướng bố cục bên trong lệnh gọi lại thông qua đối tượng phạm vi đo lường (Ic7d9d)
- Thêm tính năng AbsoluteArrangement - cho phép sắp xếp các thành phần con cháu trong Hàng mà không cần tự động phản chiếu trong RTL (I3a1df)
- Ngừng sử dụng chú thích @Untracked. Thay thế bằng @ComposableContract(tracked=false) (Id211e)
- Trước khi có sự thay đổi này, trình bổ trợ biên dịch của Compose sẽ không chặn các lệnh gọi tới hàm khởi tạo trong hàm @Composable nếu có (I5205a, b/158123804)
- Thêm thành phần kết hợp
viewModel()
cho phép tạo hoặc nhận ViewModel tương tự như cách hoạt động trong Hoạt động hoặc Mảnh (I5fdd1) Tái cấu trúc lớp Bán kính để trở thành một lớp nội tuyến. Xoá các phương thức tạo đồng hành để dùng hàm khởi tạo hàm với tham số mặc định để bán kính dọc theo trục y khớp với bán kính của tham số bán kính trục x bắt buộc.
Cập nhật DrawScope.drawRoundRect để sử dụng một tham số Radius (Bán kính) duy nhất thay vì 2 giá trị số thực dấu phẩy động riêng biệt cho bán kính dọc theo trục x và trục y (I46d1b)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel Xoá toàn bộ lớp Px (I3ff33)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I086f4)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (Id3434)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I97a5a)
Con trỏ của TextField có một ảnh động nhấp nháy (Id10a7)
Một số cử chỉ không còn yêu cầu chuyển qua một GestureToken (Id7ae5)
Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I57bff)
Chúng tôi đã ngừng sử dụng Modifier.semantics để cho phép sử dụng các thành phần cấp cao. (I4cfdc)
Đổi tên AnnotatedString.Builder.addAnnotationString thành addStringAnnotation. (I5059e)
Cập nhật Alignment API và thêm hỗ trợ cho tính năng căn chỉnh tuyệt đối (không phản chiếu tự động trong ngữ cảnh Rtl) (I38cd3)
Bạn có thể đo lường Layout và thành phần con của LayoutModifier theo một hướng bố cục khác. (Ibd731)
Ra mắt tham số hình chữ nhật tuỳ chọn bổ sung cho ImagePainter để hỗ trợ vẽ một phần phụ của ImageAsset cơ bản (I0ea9e)
Khắc phục sự cố trong AdapterList khi xoá các mục (Ic64b0, b/153195921)
Chúng tôi đã thay đổi cách đo lường bố cục đầu tiên mà bạn đặt trong khối activity.setContent { }. Trước đây, cách đo lường này bị buộc phải lấp đầy toàn bộ màn hình hoạt động và bây giờ nó hoạt động giống như khi bạn đặt bố cục bên trong một Ngăn xếp: chế độ này có thể nhỏ hơn một màn hình và sẽ được đặt ở trên cùng bên trái màn hình. Nếu muốn sử dụng hoạt động cũ, bạn có thể áp dụng Modifier.fillMaxSize() cho bố cục của mình. (Ie88a7, b/153453714)
Mô-đun ui-text-compose được đổi tên thành ui-text. ui-text hiện chứa các thành phần kết hợp CoreText và CoreTextField (Ib7d47)
mô-đun ui-text được đổi tên thành ui-text-core (I57dec)
Di chuyển các thành phần kết hợp ui-framework/CoreText, CoreTextField trong ui-text-compose. Bạn có thể muốn bao gồm thành phần kết hợp ui-text-compose trong dự án của mình. (I32042)
runOnIdleCompose
vàrunOnUiThread
hiện là các hàm chung thay vì các phương thức trên ComposeTestRule. (Icbe8f)Chuyển các toán tử uỷ quyền thuộc tính [Mutable]State sang phần mở rộng để hỗ trợ tính năng tối ưu hoá uỷ quyền thuộc tính Kotlin 1.4. Phương thức gọi phải thêm mục nhập để tiếp tục sử dụng
by state { ... }
hoặcby mutableStateOf(...)
. (I5312c)DrawLayerModifier và drawLayer() đặt mặc định clipToBounds và clipToOutline là false. (I0eb8b, b/152810850)
Đổi tên LayoutResult thành MeasureResult. (Id8c68)
Ngừng sử dụng thành phần kết hợp Center. Bạn có thể thay thế cấu trúc này bằng đối tượng sửa đổi LayoutSize.Fill + LayoutAlign.Center, hoặc với một trong các thành phần kết hợp Box hoặc Stack với các đối tượng sửa đổi thích hợp (Idf5e0)
Đổi tên LayoutFlexible thành LayoutWeight. Đổi tên thông số chặt chẽ để điền. (If4738)
DrawVector được thay đổi từ một hàm có khả năng kết hợp thông thường thành hàm trả về một Đối tượng sửa đổi drawVector() sẽ vẽ vectơ làm nền cho bố cục. (I7b8e0)
Thay thế hàm có khả năng kết hợp Clip bằng đối tượng sửa đổi drawClip(). DrawClipToBounds là một đối tượng sửa đổi thuận tiện để sử dụng khi bạn chỉ cần phân tách các ranh giới của lớp bằng một hình chữ nhật. (If28eb)
Thay thế hàm có thể kết hợp DrawShadow bằng đối tượng sửa đổi drawShadow(). Shadows hiện đang được vẽ như một phần của LayerModifier. (I0317a)
androidx.compose.ViewComposer đã được chuyển sang androidx.ui.node.UiComposer, androidx.compose.Emittable đã bị xoá. Nội dung này dư thừa so với ComponentNode. Xoá androidx.compose.ViewAdapters. Chúng không còn là trường hợp sử dụng được hỗ trợ. Ngừng sử dụng Compose.composeInto. Thay vào đó, hãy sử dụng
setContent
hoặcsetViewContent
. Ngừng sử dụng Compose.disposeComposition. Thay vào đó, hãy sử dụng phương thứcdispose
trênComposition
đượcsetContent
trả về. androidx.compose.Compose.subcomposeInto đã được chuyển sang androidx.ui.core.subcomposeInto. ComponentNode#emitInsertAt đã được đổi tên thành ComponentNode#insertAt. ComponentNode#emitRemoveAt đã được đổi tên thành ComponentNode#removeAt. ComponentNode#emitMode đã được đổi tên thành ComponentNode#move (Idef00)Ngừng sử dụng thành phần kết hợp Wrap. Có thể thay thế thành phần này bằng đối tượng sửa đổi LayoutAlign hoặc bằng thành phần kết hợp Stack (Ib237f)
Làm cho hướng bố cục được truyền từ nút bố cục mẹ đến nút bố cục con. Thêm công cụ sửa đổi hướng bố cục. (I3d955)
Đổi tên Painter.toModifier thành Painter.asModifier vì Đối tượng sửa đổi mới tạo có tham chiếu đến Painter ban đầu. Bạn có thể chia sẻ câu lệnh này với nhiều phiên bản Đối tượng sửa đổi (I7195b)
Hỗ trợ chỉ hướng từ phải sang trái trong đối tượng sửa đổi LayoutPadding (I9e8da)
Hợp nhất Density và DensityScope 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)
Xoá lớp ValueHolder. Tái cấu trúc các lớp AnimatedValue, AnimatedFloat để trừu tượng hoá trường giá trị của hiệu ứng chuyển động, nhờ đó, các lớp con có thể xem cập nhật giá trị.
- Thêm lớp mô hình cho AnimatedValue, AnimatedFloat, v.v.
- Thêm một bộ API @Composable trọng lượng nhẹ để tạo hiệu ứng chuyển động giữa các giá trị.
- (I79530)
Các thay đổi có thể gây ra lỗi cho 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)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)
Sửa lỗi ConstraintLayout gây ra sự cố khi kết hợp lại. (Ibee5a, b/158164341)
Thay đổi API hàm lambda ở cuối WithConstraints. Giờ đây, thay vì 2 tham số, giao diện này có phạm vi trình thu nhận bên cạnh các giới hạn và layoutDirection cung cấp thuộc tính minWidth, maxWidth, minHeight và maxHeight ở dạng Dp (I91b9a, b/149979702)
Đổi tên LayoutModifier2 thành LayoutModifier. (Id29f3)
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)
Ngừng sử dụng LayoutDirectionAmbient. Để đọc hướng bố cục do ngôn ngữ xác định, hãy sử dụng localeLayoutDirection trên ConfigurationAmbient (I851b1)
Thêm positionInParent và boundsInParent cho LayoutCoordinates. (Icacdd, b/152735784)
Ngừng sử dụng thành phần kết hợp ParentData. Bạn nên tạo một đối tượng sửa đổi có triển khai giao diện ParentDataModifier hoặc sử dụng đối tượng sửa đổi LayoutTag nếu bạn chỉ cần gắn thẻ thành phần con của bố cục để nhận dạng chúng bên trong khối đo lường. (I51368, b/150953183)
Thêm OnPositionedModifier và OnChildPositionedModifier để thay thế các hàm có khả năng kết hợp OnPositioned và OnChildPositioned. (I2ec8f)
Không cho phép khoảng đệm âm trong LayoutPadding. Nên sử dụng LayoutOffset để thay thế độ dời vị trí âm. (Ifb5b1)
WithConstraints đã nhận tham số LayoutDirection (I6d6f7)
Cập nhật cờ
ComposeFlags.COMPOSER_PARAM
thànhtrue
. Việc này sẽ thay đổi chiến lược tạo mã cho trình bổ trợ compose. Ở cấp độ cao, việc này tạo ra các hàm có khả năng kết hợp kèm theo tham số tổng hợp bổ sung. Tham số này được truyền đến các lệnh gọi @Composable tiếp theo để thời gian chạy quản lý quy trình thực thi một cách chính xác. Đây là thay đổi tệp nhị phân có thể gây lỗi nghiêm trọng, nhưng sẽ duy trì khả năng tương thích ở cấp độ nguồn trong tất cả mức sử dụng được cho phép của Compose. (I7971c)Thay đổi LayoutCoordinates để biến providedAlignmentLines thành một Tập hợp thay vì một Bản đồ và để LayoutCoordinates triển khai toán tử get() thay vì truy xuất giá trị. Điều này giúp các đối tượng sửa đổi dễ dàng thay đổi một hoặc nhiều giá trị của tập hợp hơn mà không tạo ra một tập hợp mới cho từng đối tượng sửa đổi. (I0245a)
LayoutCoordinates không còn có thuộc tính vị trí. Thuộc tính vị trí không hợp lý khi xem xét LayoutModifiers, xoay vòng hoặc chuyển tỷ lệ. Thay vào đó, nhà phát triển nên sử dụng parentCoordinates và childToLocal() để tính toán lượt chuyển đổi từ một LayoutCoordinate sang một chế độ khác.
LayoutCoordinates sử dụng IntPxSize cho thuộc tính kích thước thay vì PxSize. Do bố cục dùng kích thước pixel số nguyên nên tất cả các kích thước bố cục phải dùng số nguyên và không dùng giá trị dấu phẩy động. (I9367b)
Cải tiến khu vực API của Giới hạn (Constraints) (I0fd15)
Thêm TextDirection.Content (I48f36)
Điều chỉnh trình đơn Thanh công cụ để hiển thị thao tác sao chép, cắt, dán đúng cách. (Id3955)
Thêm FloatingToolbar cho Lựa chọn TextField. (Ie8b07)
TextDirectionAlgorithm được đổi tên thành TextDirection (I75ce8)
TextDirection được đổi tên thành ResolvedTextDirection (I3ff38)
Thêm HapticFeedback vào lựa chọn TextField. (I58050)
Thêm các phương thức Sao chép, Cắt và Dán vào Lựa chọn TextField. (Idb70b)
Xoá TestTag và Semantics. Thay vào đó, hãy sử dụng Modifier.testTag và Modifier.semantics (I15ff0, b/158841414)
Đổi tên gói cho Locale và LocaleList từ androidx.ui.text thành androidx.ui.intl (I8132c)
Thay đổi API:
AnnotatedString(builder: Builder)
được đổi tên thànhannotatedString(builder: Builder)
. (Ia6377)Thay đổi API:
AnnotatedString.Item
được đổi tên thànhAnnotatedString.Range
. (I2d44d)Thêm Thanh công cụ cho các thao tác liên quan đến văn bản. (I49d53)
Hiện đã có LifecycleOwnerAmbient mới. Giờ đây, một Hoạt động bạn đang sử dụng với Giao diện người dùng Compose sẽ mở rộng androidx.activity.ComponentActivity (hoặc AppCompatActivity). setContent trên android.app.Activity hiện đã không còn được dùng nữa (Idb25a, b/153141084)
Thay thế tên gói ui-android-text (androidx.text) bằng androidx.ui.text.platform để phù hợp với chính sách androidx. (I42711)