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.
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 27 tháng 7 năm 2022 1.2.0 - - 1.3.0-alpha02

Cấu trúc

Compose là sự kết hợp của 7 mã nhận dạng Nhóm Maven (Maven Group Id) trong androidx. Mỗi Nhóm chứa một tập con chức năng mục tiêu, và mỗi tập con có một bộ ghi chú phát hành riêng.

Bảng này giải thích các nhóm và đường liên kết đến từng bộ ghi chú phát hành.

NhómMô tả
compose.animationTạo ảnh động trong các ứng dụng Jetpack Compose để làm phong phú trải nghiệm người dùng.
compose.compilerBiế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.foundationViế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.materialXây dựng các giao diện người dùng Compose Jetpack bằng các thành phần Material Design có sẵn. Đây là điểm truy cập cấp cao hơn của Compose, được thiết kế nhằm cung cấp các thành phần theo như mô tả trên trang web www.material.io.
compose.material3Xây dựng giao diện người dùng Jetpack Compose bằng các thành phần Material Design 3, phiên bản cải tiến tiếp theo của Material Design. Material 3 có giao diện cập nhật, cũng như các thành phần và tính năng cá nhân hoá Material You, chẳng hạn như màu động. Công cụ này được thiết kế để phù hợp với phong cách đồ hoạ và giao diện người dùng hệ thống mới trên Android 12.
compose.runtimeCá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.uiCác thành phần cơ bản của giao diện người dùng Compose cần thiết để tương tác với thiết bị, bao gồm cả bố cục, bản vẽ và phương thức nhập.

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên Compose, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.3.0-alpha02"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.0-alpha02"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.3.0-alpha02")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.3.0-alpha02"
    }

    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.

Báo lỗi mới

Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Phiên bản 1.3

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-alpha02androidx.compose.foundation:foundation-layout:1.3.0-alpha02. Phiên bản 1.3.0-alpha02 chứa những cam kết này.

Thay đổi API

  • Thêm hàm mở rộng drawText trên DrawScope để 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à công cụ sửa đổi hoạt động trên DrawScope như CanvasdrawBehind. (I16a62, b/190787898)

Sửa lỗi

  • Giờ đây, bàn phím mềm sẽ bị ẩn khi một trường văn bản bị tắt trong khi lấy tiêu điểm. (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 có thể cuộn một thành phần con có tiêu điểm, con lăn đó sẽ cuộn đúng cách để giữ cho thành phần con tập trung trong chế độ xem khi kích thước của nó giảm, ngay cả khi kích thước là ảnh độ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)

Version 1.3.0-alpha01

Ngày 29 tháng 6 năm 2022

Phát hành androidx.compose.foundation:foundation:1.3.0-alpha01androidx.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ết TalkBack trong AnnotatedString. (I1c754, b/231495122)

Sửa lỗi

  • Giờ đây, BasicTextField cursorBrush có thể đang hoạt ảnh mà không cần khởi động lại bộ tính giờ con trỏ. (I812e6, b/236383522)

Version 1.2

Version 1.2.0

Ngày 27 tháng 7 năm 2022

Phát hành androidx.compose.foundation:foundation:1.2.0androidx.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

  • LazyVerticalGridLazyHorizontalGrid 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ể tái sử dụng phần tử một cách hiệu quả hơn.
  • Danh sách Lazy và lưới 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 tùy 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 tùy chỉnh.
  • Chúng tôi đã ra mắt API có khả năng tương tác cuộn lồng để cho phép khả năng tương tác giữa các chế độ xem và đối tượng cuộn.
  • Đã thêm chuột và bàn di chuột vào tất cả các 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-rc03androidx.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-rc02androidx.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-rc01androidx.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

  • Chúng tôi đã cho ra mắt OverscrollEffect thử nghiệm để cho phép các hiệu ứng cuộn quá mức tuỳ chỉnh cùng với các quá tải Modifier.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ành LocalOverscrollConfiguration (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 qua LazyLayout. (Id6fab, b/233352497)
  • Đã xoá LazyVerticalGrid không được dùng nữa khỏi gói androidx.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-beta03androidx.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 IntervalListMutableIntervalList 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 các phần lồng ghép ime được báo cáo từ API 23 đến nay, nhưng chỉ hình động trên 30 trở lên. (Ia7fc0, b/230756508)
  • Sự cố được khắc phục khi bạn nhấn phím xoá phía trước khi con trỏ ở cuối trường văn bản.
  • DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand 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-beta02androidx.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-beta01androidx.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 thử nghiệm BeyondBoundsInterval có thể sử dụng được bằng cách triển khai tuỳ chỉnh của LazyList 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ành LineHeightStyle
  • LineVerticalAlignment được đổi tên thành LineHeightStyle.Alignment
  • Đổi tên LineHeightTrim thành LineHeightStyle.Trim
  • Các giá trị hàm khởi tạo mặc định từ LineHeightStyle được gỡ bỏ (I582bf, b/181155707)
  • Thêm giá trị mặc định cho các thành viên không bắt buộc của giao diện LazyLayoutItemProvider. (Iba8a0)
  • Trong api LazyLayoutItemProvider thay vì hàm lambda kết hợp trở về trạng thái ban đầu theo chỉ mục, chúng ta hiện có một mục hàm 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ành itemCount (Id409c)
  • Thêm Brush vào TextStyleSpanStyle để đ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ủa LineHeightBehavior đã chuyển thành một giá trị enum duy nhất: LineHeightTrim. LineHeightTrim có các giá trị của 4 trạng thái được xác định bằng hai giá trị boolean: FirstLineTop, LastLineBottom, Cả hai và Không có (Ifc6a5, b/181155707 )
  • Đã thêm LineHeightBehavior vào TextStyleParagraphStyle. 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 do TextStyle(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 khi includeFontPadding sai. (I97332, b/181155707)

  • Thêm công cụ 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 sẽ gọi đồng thời các hình chữ nhật trùng lặp hoàn toàn nên 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ắt includeFontPadding bằng thuộc tính TextStyle.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ắt TextField. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester không sử dụng onGloballyPositioned nữa. (I630f5)

Đóng góp bên ngoài

  • MouseInjectionScope.scroll(delta = someDelta) hiện đang đảo ngược trên Android nếu chúng ta cuộn theo chiều dọc (nếu someDelta dương, thì nó sẽ di chuyển xuống dưới) (ifb697, b/224992993)

Phiên bản 1.2.0-alpha08

Ngày 20 tháng 4 năm 2022

Phát hành androidx.compose.foundation:foundation:1.2.0-alpha08androidx.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ùng consume() để thay đổi hoàn toàn. Bạn có thể sử dụng isConsumed để 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ủa PointerInputChange 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ột PointerInputChange không liên kết, hãy dùng hàm dựng. (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ấy typefaceLoader làm thông số hàm dựng. (I2c971)
  • Giờ đây, quảng cáo đồng hành WindowInsets sẽ hiển thị chế độ hiển thị (cho dù những quảng cáo đó xuất hiện trên màn hình, bất kể quảng cáo đó có trùng với cửa sổ hay không) và kích thước mà quảng cáo đồng hành có thể hiển thị 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-alpha07androidx.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 trẻ bố trí từng phần để ngăn việc sắp xếp các mục hiện có (Ibbdd0, b/184670295)
  • LazyListLayoutInfoLazyGridLayoutInfo hiện có các trường beforeContentPaddingafterContentPadding (I3b628, b/200920410)
  • Đã thêm KeyboardType.Decimal làm giải pháp thay thế cho Keyboard.Number để cụ thể bao gồm 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.ScrollPointerEvent.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 trong TextStyle/ParagraphStyle. includeFontPadding thông qua TextStyle(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ủa ComposeView 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ụng ComposeViews riêng biệt trong hệ thống phân cấp, áp dụng cho WindowInsets 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-alpha06androidx.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 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ào FocusPropertiesfocusProperties() hiện có tất cả các tính năng của focusOrder(). FocusOrderfocusOrder() đã ngừng hoạt động. Những focusOrder() chấp nhận một focusRequester sẽ được thay thế bằng một hệ số sửa đổi focusRequester() kết hợp với focusProperties(). Điều này cho phép công cụ sửa đổi có sự phân tách mối quan ngại mạnh mẽ hơn. (I601b7)
  • Đã 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 sáng tác. (I94c35)
  • Cập nhật số liệu phân tích cú pháp các tài nguyên có thể vẽ vectơ để hỗ trợ tính năng tự động phản chiếu nhằm lật nội dung của VectorPainter nếu hướng bố cục hiện tại là RTL. (I79cd9, b/185760237)

Sửa lỗi

  • Bây giờ, công cụ sửa đổi cuộn (Modifier.verticalScroll(), Modifier.horizontalScroll()Modifier.scrollable()) sẽ cuộn để duy trì thành phần kết hợp 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 sẽ được giữ ở phía trên bàn phím khi bạn đặt tiêu điểm vào bàn phím và hiển thị bàn phím, khi ở trong trình duyệt có thể kéo thả 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-alpha05androidx.compose.foundation:foundation-layout:1.2.0-alpha05. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.

Thay đổi API

  • LazyVerticalGridLazyHorizontalGrid hiện đang ổn định. (I307c0)
  • LazyGridItemInfo.Unknown đã được thay thế bằng LazyGridItemInfo.UnknownRowLazyGridItemInfo.UnknownColumn riêng biệt (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid và tất cả các API có liên quan đã được di chuyển vào gói con .grid. Vui lòng cập nhật các mục nhập của bạn từ androidx.compose.foundation.lazy thành androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • 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ừ do includeFontPadding=false và hiện tượng cắt từ sẽ không nảy sinh trong các tập lệnh có phông chữ cao. (I31c84, b/171394808)
  • Giao diện được đo lường giờ biểu thị thuộc tính parentData (I3313f)
  • Modifier.onFocusedBoundsChanged được giới thiệu thử nghiệm để cho phép quan sát giới hạn của tiêu điểm con. (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)
  • Bổ sung công cụ 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 Kotlinx coroutines 1.6.0 (I3366d)

Phiên bản 1.2.0-alpha04

Ngày 23 tháng 2 năm 2022

Phát hành androidx.compose.foundation:foundation:1.2.0-alpha04androidx.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 chuyển yêu cầu cho trình phản hồi thành phần mẹ theo cách thủ công mà cần phải trả lại ngay hình chữ nhật mà các mã đó muốn thành phần mẹ đưa vào chế độ xem. (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ành systemGesturesExclusion (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, ComposableTargetMarkerComposableOpenTarget cho phép báo cáo thời gian biên dịch khi gọi một hàm có thể kết hợp nhắm mục tiêu một nội dung ứng 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 biên dịch bổ trợ của Compose có thể dự đoán các chú thích. Do đó, hiếm khi sử dụng trực tiếp các chú thích này. Các trường hợp không thể dự đoán được bao gồm việc tạo và sử dụng các hàm có khả năng kết hợp, trừu tượng, áp dụng tuỳ chỉnh (chẳng hạn như phương thức giao diện), các trường hoặc biến toàn cục là các biểu thức lambda của thành phần kết hợp (biến và thông số cục bộ được dự đoán), hoặc khi sử dụng ComposeNode hoặc hàm có khả năng kết hợp liên quan.

    Đối với các ứng dụng tuỳ chỉnh, các hàm có khả năng kết hợp có thể gọi ComposeNode hoặc ReusableComposeNode cần thêm chú thích CompoableTarget cho hàm đó và mọi loại thông số lambda của thành phần kết hợp. Tuy nhiên, bạn nên tạo chú thích được chú thích với ComposableTargetMarker, sau đó sử dụng chú thích được đánh dấu trực tiếp thay cho ComposableTarget. Một chú thích của thành phần kết hợp được đánh dấu bằng ComposableTargetMarker tương đương với ComposbleTarget có tên đủ điều kiện của loại thuộc tính là thông số ứng dụng. Để xem ví dụ về cách sử dụng ComposableTargetMarker, vui lòng xem anroidx.compose.ui.UiComposable. (I38f11)

Sửa lỗi

  • Bây giờ, bạn có thể chuyển giá trị độ dời thanh cuộn có lề âm vào LazyGridState.scrollToItem()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-alpha03androidx.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 API

  • Phương thức notifyFocusedRect trong TextInputSessionTextInputService hiện không được dùng nữa và sẽ không được gọi nữa. Thay vào đó, hãy sử dụng BringIntoViewRequester? (Ia4302, b/192043120, b/216842427, b/178211874)
  • Bật ảnh động cho các mục của lưới lười 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 qua LocalFontFamilyResolver.current
    • Thêm createFontFamilyResolver(context)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ụng TextLayoutResult.layoutInput.resourceLoader vì mã này không còn được sử dụng nữa. (Id5a45, b/174162090)
  • Thêm AndroidFont, một API cấp độ thấp mới để cung cấp các loại trình mô tả tài nguyên phông chữ mới trên Android. Ví dụ: tải phông chữ từ một lệnh phụ trợ cụ thể cho ứng dụng, tuỳ chọn định vị phông chữ cài đặt sẵn trên thiết bị hoặc tải phông chữ từ một tài nguyên không do lập trình hướng đối tượng Font hiện tại cung cấp.
    • API Font.ResourceLoaded mở rộng để hỗ trợ việc tải phông chữ không bắt buộc và không đồng bộ. Các nhà phát triển ứng dụng không nên trực tiếp sử dụng API này. Để thêm các loại phông chữ mới, hãy xem AndroidFont.
    • Hàm mở rộng Font.AndroidResourceLoader cho phép tạo một Font.ResourceLoader khi không hợp thành.
    • Thêm thông số loadingStrategy vào các phông chữ dựa trên tài nguyên để cho phép tải không đồng bộ khi phông chữ tài nguyên tham chiếu đến XML của phông chữ có thể tải xuống. (Ie5aea, b/174162090)
  • Hàm khởi tạo Typeface(FontFamily) đã ngừng hoạt động. Trước đây, hàm này dùng để tải trước phông chữ và có thể mất đến 10 giây để tải xuống các phông chữ. Với phông chữ có thể tải xuống, thao tác gọi lệnh này có thể chặn trong 10 giây. Thay vào đó, hãy sử dụng FontFamilyResolver.preload
    • fontResource(FontFamily): Typeface không được dùng nữa. 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ụng FontFamilyResolver.preload (If8e7c, b/174162090)
  • 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ên LazyGridScope 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 tái sử dụng 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)
  • LazyListLayoutInfoLazyGridLayoutInfo 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 tái sử dụng 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)
  • Hàm khởi tạo SubcomposeLayoutState chấp nhận maxSlotsToRetainForReuse hiện không được dùng nữa. Thay vào đó, có một hàm khởi tạo mới chấp nhận SubcomposeSlotReusePolicy - một giao diện mới cho phép bạn kiểm soát chi tiết hơn về việc cần giữ lại những khe nào để sử dụng lại trong tương lai. (I52c4d)
  • Bổ sung Công cụ 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 là tiêu điểm và bàn phím được hiển thị khi chế độ nhập mềm là ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Màn hình sử dụng chức năng tạo cục bộ cho FontFamily.Resolver
    • Mã lệnh FontLoader dành cho màn hình đã ngừng hoạt động
    • Lập trình hướng đối tượng mã createFontFamilyResolver mới trên Máy tính (I6bbbb, b/174162090)
  • Kiểu nhập bằng bàn phím mềm không còn nhấp nháy khi thay đổi tiêu điểm giữa các trường văn bản. (I1bf50, b/187746439)
  • 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-alpha02androidx.compose.foundation:foundation-layout:1.2.0-alpha02. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Thay đổi 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 làm giảm 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 tất cả các thông số được lặp lại trong hàm bên trong được gọi. (I90490)
  • Thêm Công cụ sửa đổi excludeFromSystemGesture để dễ dàng truy cập vào setSystemGestureExclusionRects 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ụng Modifier.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-alpha01androidx.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ông số mới userScrollEnabled đã được thêm vào LazyColumn, LazyRowLazyVerticalGrid để 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 cuộn theo phương thứ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 công cụ 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

  • Giờ phụ thuộc vào Kotlin 1.6.10.

Phiên bản 1.1

Phiên bản 1.1.1

Ngày 23 tháng 2 năm 2022

Phát hành androidx.compose.foundation:foundation:1.1.1androidx.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ại androidx.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.0androidx.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 nhấn
  • Lưu ý rằng, đối với phiên bản Compose 1.0, các thành phần Material sẽ mở rộng không gian bố cục để đáp ứng các nguyên tắc hỗ trợ tiếp cận Material cho kích thước đích nhấn. Ví dụ: đích nhấn Nút sẽ mở rộng tới kích thước tối thiểu 48x48dp, ngay cả khi bạn đặt kích thước nhỏ hơn cho Nút. Điều này giúp căn chỉnh Compose Material phù hợp với hành vi của Thành phần Material Design, tạo ra hành vi nhất quán khi kết hợp Chế độ xem và Compose. Thay đổi này cũng đảm bảo rằng khi bạn tạo giao diện người dùng bằng các thành phần Compose Material, các yêu cầu tối thiểu về hỗ trợ tiếp cận đích nhấn sẽ được đáp ứng.
  • Hỗ trợ ổn định cho Dải điều hướng (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-rc03androidx.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-rc01androidx.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

  • Giờ đây, bạn có thể chuyển giá trị độ dời thanh cuộn có lề âm vào LazyListState.scrollToItem()LazyListState.animateScrollToItem(). (Iceb90, b/184252837)
  • Khắc phục lỗi gây ra hành động cuộn hỗ trợ tiếp cận bị thiếu (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-beta04androidx.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)
  • Các 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 API đã được sử dụng hay chưa. (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-beta03androidx.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 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ặc LazyListScope.items, công cụ 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)

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-beta02androidx.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 đưa một mục vào chế độ xem (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-beta01androidx.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 đưa một mục vào chế độ xem (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-alpha06androidx.compose.foundation:foundation-layout:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Thay đổi API

  • Bổ sung tính năng quá tải không có thành phần con cho Bố cục có cải thiện hiệu quả (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction hiện trả về SemanticsNodeInteraction mà hàm được gọi. (I9e5db)
  • Thêm performScrollToNode(matcher: SemanticsMatcher) cuộn đến một vùng chứa có thể cuộn vào nội dung phù hợp với trình so khớp nhất định. (Ic1cb8)

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

Sửa lỗi

  • Cố định hỗ trợ tiếp cận cho nội dung có thể cuộn (cả nội dung tải lười và không lười) với tính năng cuộn (I6cdb0)

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-alpha04androidx.compose.foundation:foundation-layout:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Thay đổi API

  • performGestureGestureScope không còn được dùng nữa. Hai mã lệnh này đã được thay thế bằng performTouchInputTouchInjectionScope. (Ia5f3f, b/190493367)
  • Đã thêm touchBoundsInRoot vào SemanticsNode có kích thước đích nhấn tối thiểu để nhà phát triển có thể đảm bảo rằng đích nhấn đáp ứng các tiêu chí tối thiểu về khả năng tiếp cận. (I2e14b, b/197751214)

Sửa lỗi

  • Chúng tôi đã thêm tính năng hỗ trợ nhiều thao tác khi cuộn quá mức trên các thiết bị Android 12. (Iccf3c, b/171682480)

Phiên bản 1.1.0-alpha03

Ngày 1 tháng 9 năm 2021

Phát hành androidx.compose.foundation:foundation:1.1.0-alpha03androidx.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 Kotlin 1.5.30. (I74545)

Thay đổi API

  • Thêm hiệu ứng phát sáng vào thanh cuộn. Thêm API OverScrollConfiguration 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 tra để nhận giới hạn được cắt đoạn. (I6b28e)
  • Thêm kích thước đích nhấn tối thiểu vào ViewConfiguration để sử dụng ngữ nghĩa và phương thức nhập con trỏ nhằm đảm bảo khả năng hỗ trợ tiếp cận. (Ie861c)

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-alpha02androidx.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.sizerequiredSize (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-alpha01androidx.compose.foundation:foundation-layout:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Thay đổi 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. BitmapPainter + Hình ảnh có thể kết hợp để cập nhật cũng để sử dụng thông 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 lười 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.5androidx.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 phiên bản 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.4androidx.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.3androidx.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.2androidx.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.1androidx.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.0androidx.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 minSdkVersion lên 24+ trong tệp build.gradle. Sự cố này sẽ được khắc phục trong phiên bản tiếp theo của Android Studio Bumblebee và AGP 7.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-rc02androidx.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 các vấn đề với các đường dẫn được xác định với các 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-rc01androidx.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ợ thông số contentDescription dành cho tính năng hỗ trợ tiếp cận. (Ib547c)

Sửa lỗi

  • Nút, thẻ, hộp đánh dấu và Modifier.clickable(enabled=false) tổng thể đã tắt sẽ chặn lượt nhấp không 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-beta09androidx.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 ảnh động, hãy sử dụng composeTestRule.mainClock. (I3c3e8, b/189951065)
  • thay đổi Vai trò enum và LiveRegionMode thành các lớp cùng dòng bằng hàm khởi tạo riêng tư (Id1890)
  • KeyboardCapitalization được chuyển đổi thành lớp cùng dòng. (Id5a1c)
  • 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 khi 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 tư trước khi ổn định. (Ia5d48)
  • Thêm IdlingStrategy vào AndroidComposeTestRule có thể được sử dụng bằng các khung thử nghiệm để 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 trong src/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ụng adb shell profman --dump-classes-and-methods .... Các quy tắc này dùng một trong hai biểu mẫu để nhắm mục tiêu vào phương thức hoặc lớp.

  • Quy tắc phương thức sẽ có mẫu sau:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Và quy tắc lớp sẽ có mẫu sau:

    <CLASS_DESCRIPTOR>
    
  • Ở đây <FLAGS> có một hoặc nhiều ký tự H, SP để cho biết phương thức này có nên được gắn cờ là "Hot", "Startup" hoặc "Post Startup" hay không.

  • <CLASS_DESCRIPTOR> là phần mô tả cho lớp chứa phương thức được nhắm mục tiêu. Ví dụ: lớp androidx.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ức fun isPlaced(): Boolean trên LayoutNode có chữ ký isPlaced()Z.

  • Những mẫu này có thể có ký tự đại diện (**, *?) để có một quy tắc đơn lẻ bao gồm nhiều phương thức hoặc lớp.

Những quy tắc này có chức năng gì?

  • Phương thức có cờ H cho biết rằng phương thức này là một phương thức "khởi động nóng" và phải được biên dịch trước.

  • Phương thức có cờ S cho biết rằng đây là phương thức được gọi khi khởi động và phải được biên dịch trước để tránh chi phí biên dịch và diễn giải phương thức này tại thời điểm khởi động.

  • Phương thức có cờ P cho biết rằng đây là phương thức được gọi sau khi khởi động.

  • Một lớp có trong tệp này cho biết rằng lớp này được dùng trong khi khởi động và cần được phân bổ trước trong vùng nhớ khối xếp để tránh chi phí tải lớp.

Cơ chế này hoạt động như thế nào?

  • Thư viện có thể xác định những quy tắc sẽ được đóng gói trong cấu phần mềm AAR. Khi một ứng dụng được tạo bao gồm các cấu phần mềm này, các quy tắc này được hợp nhất với nhau và các quy tắc hợp nhất được dùng để tạo ra một hồ sơ ART nhị phân nhỏ gọn dành riêng cho ứng dụng. ART sau đó có thể tận dụng hồ sơ này khi ứng dụng được cài đặt trên thiết bị để biên dịch trước một tập hợp con cụ thể của ứng dụng nhằm cải thiện hiệu suất của ứng dụng, đặc biệt là lần chạy đầu tiên. Lưu ý rằng việc này sẽ không ảnh hưởng đến các ứng dụng có thể gỡ lỗi.

Phiên bản 1.0.0-beta08

Ngày 2 tháng 6 năm 2021

Phát hành androidx.compose.foundation:foundation:1.0.0-beta08androidx.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 cùng dòng. (Ie321b, b/187055290)
  • Cách sử dụng enum tái cấu trúc cho các lớp cùng dòng để tránh các vấn đề mang tính toàn diện khi tuyên bố khi thêm vào các giá trị enum mới. (I2b5eb)
  • Thêm thời gian chờ nhấn vào nút có thể nhấp / chuyển đổi để 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à Văn bản không còn là giá trị đơn lẻ nữa mà là danh sách. Điều này cho phép hợp nhất chúng nguyên vẹn thay vì thực hiện phép nối. Đồng thời cung cấp các API thử nghiệm tốt hơn để tận dụng những thay đổi này (Ica6bf, b/184825850)
  • Modifier.focusModifier() không được dùng nữa và được thay thế bằng Modifier.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ện FocusState (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)
  • Khắc phục vấn đề khi các gợn sóng / chỉ báo khác đôi khi bị kẹt khi nhấp lâu khi sử dụng Modifier.combinedClickable (I2298c, b/186223077)
  • Hiện tại, detectDragGesures, detectVerticalGesturesdetectHorizontalGestures 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)
  • Modifier.onGloballyPositioned() đã được thay đổi để báo cáo các toạ độ của công cụ sửa đổi này trong chuỗi công cụ sửa đổi, chứ không phải là toạ độ bố cục sau khi áp dụng tất cả các công cụ sửa đổi. Tức là thứ tự của các công cụ sửa đổi hiện đang ảnh hưởng đến những toạ độ sẽ được báo cáo. (Ieb67d, b/177926591)

Phiên bản 1.0.0-beta07

Ngày 18 tháng 5 năm 2021

Phát hành androidx.compose.foundation:foundation:1.0.0-beta07androidx.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

  • Logic tìm nạp trước mục hiển thị tiếp theo được giới thiệu cho LazyColumn/Row (I8a4bc, b/184940225)
  • Thêm ô điều khiển lựa chọn cắt bỏ (Iff80d, b/183408447)

Sửa lỗi

  • Giờ đây, LazyColumn/Row sẽ giữ tới 2 mục hiển thị trước đây đang hoạt động (chưa được xử lý), ngay cả khi đã bỏ tính năng cuộn của chúng. Điều này cho phép thành phần đó sử dụng lại các bố cục phụ đang hoạt động khi chúng ta cần kết hợp một mục mới để cải thiện hiệu suất của tính năng cuộn. (Ie5555)
  • 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 cháu đã đượ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-beta06androidx.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 API

  • Giải quyết xung đột bằng Cử chỉ di chuyển (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)
  • 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ị thông số 0.dp mặc định vào PaddingValues(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-beta05androidx.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, accessibilityActionScrollRightaccessibilityActionScrollDown. Thay vì cuộn xuống cuối của thanh cuộn, giờ đây, trang này sẽ hiển thị theo một màn hình ở hướng nhất định. (Ieccb0)
  • Các tệp AndroidManifest trong ui-test-manifest và ui-tooling-data giờ tương thích với Android 12 (I6f9de, b/184718994)

Phiên bản 1.0.0-beta04

Ngày 7 tháng 4 năm 2021

Phát hành androidx.compose.foundation:foundation:1.0.0-beta04androidx.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ànhhide()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 thử nghiệm) (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

  • Khắc phục vấn đề khi các mục của LazyColumn/LazyRow nằm ở các cạnh được đặt không chính xác sau khi thực hiện thao tác vuốt nhanh (Ie4d13, b/183877420)
  • Trước khi có thay đổi này, các hàm có thể kết hợp cục bộ có thể được bỏ qua dựa trên tham số. Sau khi có sự thay đổi này, không bỏ qua được các hàm có khả năng kết hợp cục bộ. Thay đổi này được thực hiện vì nó phổ biến và có thể xảy ra việc các hàm cục bộ nắm bắt được các thông số từ thành phần mẹ 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 ShowCount có khả năng kết hợp sẽ luôn bỏ qua, ngay cả sau khi bạn cập nhật thông số count. Hiện tại chúng tôi đã 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-beta03androidx.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 API

  • Ngừng sử dụng DefaultMonotonicFrameClock. Việc gọi withFrameNanos hoặc Recomposer.runRecomposeAndApplyChanges không có MonotonicFrameClock hiện sẽ loại IllegalStateException. (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-beta02androidx.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 cục bộ mới của thành phần LocalSoftwareKeyboardController để 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-beta01androidx.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 API

  • Thêm lệnh gọi lại onStart vào detectDragGestures (I67269, b/179995594)
  • Các công cụ sửa đổi kích thước cho hàm nội tại không còn được thử nghiệm. (I15744)
  • Đã xoá các 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 thay thế bằng một API mới. (Iae869, b/168778053)
  • MeasurementBlocks đã đượ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ì chuyển interactionState = remember { InteractionState() } vào các thành phần như ButtonModifier.clickable(), hãy sử dụng interactionSource = remember { MutableInteractionSource() }.
    • Bạn nên sử dụng các hàm mở rộng trên InteractionSource thay vì Interaction.Pressed in interactionState, chẳng hạn như InteractionSource.collectIsPressedAsState().
    • Đối với các trường hợp sử dụng phức tạp, bạn có thể sử dụng InteractionSource.interactions để quan sát luồng tương tác. Hãy xem tài liệu và ví dụ về InteractionSource để biết thêm thông tin.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Xoá các phương thức LayoutCoordinates không dùng nữa, thay vào đó, hãy sử dụng hàm của 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 công cụ sửa đổi selectionGroup cho phép đánh dấu bộ sưu tập Tab hoặc RadioButton cho các mục đích hỗ trợ tiếp cận (Ie5c29)
  • 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 cho compositionLocalOfstaticCompositionLocalOf thay vì không bắt buộc.

    Thay đổi này sẽ xoá lỗi loại có thể xảy ra đối với các loại không thể rỗng nếu bạn chưa cung cấp trạng thái ban đầu mặc định. Trước đây điều này sẽ cung cấp một tham chiếu rỗng cho loại không thể rỗng.

    Đối với các loại giá trị rỗng, hãy cân nhắc cung cấp { null } làm giá trị mặc định.

    Chúng tôi khuyên bạn không nên sử dụng các bộ lọc có loại không thể rỗng trừ khi có thể cung cấp giá trị mặc định hợp lý. Nếu không có giá trị mặc định hợp lý, hệ thống defaultFactory sẽ tạo ngoại lệ. Tuy nhiên việc loại bỏ một trường hợp ngoại lệ có nghĩa là người tiêu dùng tại địa phương sẽ có phần phụ thuộc ngầm định cung cấp mà hệ thống loại này không thực thi. (Ifbd2a)

  • Thay đổi Indication#createIndication() thành Indication#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 trong rememberUpdatedIndication(). Thông số indication trong Modifier.indication cũng đã được thay đổi thành một thông số bắt buộc. (Ic1764, b/152525426)

  • Giờ đây, hành động văn bả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 tại đượ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. VelocirtTracker được chuyển từ ui.gesture sang to 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 đang tạm dừng. Sử dụng rememberCoroutineScope() để nhận phạm vi của bản sáng tạo để gọi chúng (I16f60, b/175294473)

  • Nhà cung cấp đã được đổi tên thành CompositionLocalProvider

    • Hàm tạo Bản sáng tác không còn chấp nhận một thông số chính và đã ngừng hoạt động.
    • currentCompositeKeyHash đã được chuyển thành thuộc tính cấp cao nhất của thành phần kết hợp thay vì hàm cấp cao nhất của thành phần kết hợp.
    • CompositionData và CompositionGroup đã được chuyển sang không gian tên androidx.compose.runtime.tooling
    • ComposableLambda đã được đặt thành một giao diện thay vì loại cụ thể, và không còn có các thông số loại nữa.
    • ComposableLambdaN đã được đặt thành giao diện thay vì loại cụ thể, và không còn có thông số loại nữa.
    • Hàm snapshotFlow đã được di chuyển sang không gian tên androidx.compose.runtime
    • phương thức hợp nhất của SnapshotMutationPolicy không còn là thử nghiệm nữa
    • 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.
    • Các hàm keySourceInfoOf và resetSourceInfo đã bị xoá. Các dữ liệu này không còn cần thiết nữa.
    • Composer.collectKeySourceInformation đã bị xoá. Dữ liệu này không còn cần thiết nữa.
    • Các phương thức isJoinedKey, joinedKeyLeft và joinedKeyRight đã bị xoá. Các dữ liệu này không còn cần thiết nữa.
    • Nhiều API cấp cao nhất đã được di chuyển và sắp xếp lại thành các tệp khác nhau. Do ngữ nghĩa lớp tệp Kotlin, khả năng tương thích nhị phân sẽ bị phá vỡ chứ không phải khả năng tương thích nguồn, do đó đây không phải là vấn đề đối với hầu hết người dùng.
    • (I99b7d, b/177245490)
  • Modifier.scrollable đã được làm lại. Bây giờ, tính năng sẽ sử dụng giao diện Scrollable thay vì lớp ScrollableController (I4f5a5, b/174485541, b/175294473)

  • 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 công cụ 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)

  • emptyContent() không dùng được nữa đã bị xoá. Thay vào đó, hãy sử dụng {}. (Idb33f, b/179432510)

  • Xoá một số API trước không dùng nữa (Ice5da, b/178633932)

Sửa lỗi

  • Thêm API thành phần cục bộ bản sáng tác LocalSoftwareKeyboardController mới để thay thế giao diện SoftwareKeyboardController trước đây trong 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-alpha12androidx.compose.foundation:foundation-layout:1.0.0-alpha12. Phiên bản 1.0.0-alpha12 bao gồm các thay đổi sau.

Thay đổi 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/chỉnh nét ngoà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)
  • onImeActionPerformed đã không còn được dùng. thay vào đó, hãy sử dụng KeyboardActions (If0bbd, b/179071523)
  • Để khớp các quy ước đặt tên phù hợp hơn với ImageBitmap và ImageVector, ImagePainter đã được đổi tên thành BitmapPainter sang VectorPainter. (Iba381, b/174565889)
  • Chuỗi kiểm tra chuỗi con có chuỗi con bây giờ là một đối số (Icbe78)
  • Giới thiệu thành phần ngữ cảnh coroutine InfiniteAnimationPolicy sẽ được áp dụng trong ảnh động vô hạn. Theo mặc định, không có chính sách nào được cài đặt, trừ phi chạy thử nghiệm với ComposeTestRule. (I50ec4, b/151940543)
  • Animatable.snapTo và Animatable.stop hiện là các hàm tạm ngưng (If4288)
  • ComponentActivity.setContent đã chuyển sang androidx.activity.compose.setContent trong mô-đun androidx.activity:activity-compose. (Icf416)
  • Phương thức giải cấu trúc và copy() đã được xoá khỏi một số lớp nơi chúng ít khi được sử dụng. (I26702, b/178659281)
  • 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, không phải là () -> Chỉ báo. (I5eeea, b/157150564)

  • Constraints.enforce đã được thay thế bằng Constraints.constrain. (I8b8ea)

  • loadfontResource đã ngừng hoạt động. Thay vào đó hãy sử dụng fontResource. imageResource, loadImageResource, vectorResource và loadVectorResource không còn được dùng nữa. Thay vào đó hãy sử dụng painterResource. (I6b809)

  • Vì lý do hiệu suất, giờ đây, ngữ nghĩa ScrollAxisRange lấy các hàm lambda trả về các Độ chính xác đơn thay vì giá trị Độ chính xác đơn trực tiếp. (If4a35, b/178657186)

  • Thêm ngữ nghĩa EditableText để đánh dấu văn bản nhập vào có thể chỉnh sửa của trường văn bản để hỗ trợ tiếp cận và các phương thức thử nghiệm 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)

  • Modifier.dragGestureFilter đã không còn được dùng nữa. Thay vào đó, hãy sử dụng Modifier.pointerInput { detectDragGestures (...)}. Ngoài ra, hãy sử dụng Modifier.draggable cho các thao tác kéo một trục (I0ba93, b/175294473)

  • Đã đổi tên Ambients để khớp với Ambient -> đổi tên thành phần CompositionLocal. Ambients trước đây được đặt tên là AmbientFoo, CompositionLocals hiện có tên là LocalFoo. (I2d55d)

  • 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ụng remember { mutableStateOf(0) }, chúng tôi sẽ xoá thành phần kết hợp savedInstanceState { 0 }. Thay vào đó, bạn nên sử dụng rememberSaveable { 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)

  • @ComposableContract không còn được dùng nữa và thay vào đó là ba 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)

  • Các tiện ích emptyContent()(@Composable () -> Unit).orEmpty() không còn được dùng nữa do không còn có bất kỳ giá trị hoặc tác động tích cực nào về hiệu suất (I0484d)

  • Bạn hiện có thể đóng các trình soạn thảo lại. Các thành phần kết hợp lại đã đóng sẽ tiếp tục kết hợp lại cho đến khi hoàn tất quá trình kết hợp lại các coroutine con Recomposer.shutDown được đổi tên để huỷ chế độ tương phản với chế độ đóng. (Ib6d76)

  • 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 mềm androidx:compose:runtime:runtime-saved-instance-state đã được đổi tên thành androidx:compose:runtime:runtime-saveable (I6dcac)

  • Nhiều API không còn được dùng từ lâu trong gói giao diện người dùng sẽ bị xoá. (I2f2dc)

  • Cấu phần compose:runtime-dispatch hiện không được dùng nữa. Giờ đây, bạn có thể tìm thấy compose:runtime và AndroidUiDispatcher trong compose:ui. (Ib5c36)

  • Các thông số trên RounderCornerShape, CutCornerShape và CornerBasedShape đã được đổi tên từ trái/phải để bắt đầu/kết thúc để hỗ trợ tính năng tự động phản chiếu hình dạng theo hướng rtl. AbsoluteRounderCornerShape và AbsoluteRounderCornerShape được giới thiệu cho các trường hợp không mong muốn tạo phản chiếu. (I61040, b/152756983)

  • canDrag đã bị xoá 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 thông số loại.

    Đây là một thay đổi nội bộ sẽ không ảnh hưởng đến khả năng tương thích cho mã nguồn mà là một thay đổi có thể gây lỗi nhị phân. (I3b922, b/169406779)

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

  • AnimatedValue/Float hiện đã không còn được dùng nữa. Thay vào đó, vui lòng 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)

  • androidx.compose.foundation.layout.ConstraintLayout đã không được dùng nữa vì 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)

  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter và pressIndicaitonGestureFilter không được dùng nữa. Thay vào đó, hãy sử dụng Modifier.clickable hoặc Modifier.pointerInput với hàm detectTapGestures. (I6baf9, b/175294473)

  • Xoá Recomposer.current(). [Abstract] ComposeView hiện tại được đặt mặc định là các Trình soạn thảo lại theo phạm vi cửa sổ, được tạo ở chế độ tải lười do ViewTreeLifecycleOwner cho cửa sổ định hướng. Thao tác soạn lại và các cú nhấp hoạt ảnh withFrameNanos-based sẽ bị tạm dừng trong khi Vòng đời lưu trữ máy chủ ngừng hoạt động. (I38e11)

  • Recomposer.runningRecomposers hiện cung cấp StateFlow toàn cầu của RecomposerInfo chỉ đọc để quan sát trạng thái thành phần đang diễn ra trong quá trình này. Ưu tiên API này hơn Recomposer.current(), hiện không được dùng nữa. (If8ebe)

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

  • Thêm thông số mô tả nội dung vào Hình ảnh và Biểu tượng. Việc 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'. Thông số này cho phép thêm các đồ trang trí như biểu tượng, phần giữ chỗ, nhãn và tương tự như trường văn bản, đồng thời tăng vùng mục tiêu lượt truy cập thông số. (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ấn, có thể chuyển đổi và có thể chọn, hiện có thể được tạo bên ngoài thành phần (I0a130, b/172938345, b/175294473)

  • ScrollableColumn/Row không còn dùng được nữa. Việc sử dụng ScrollableColumn ít hiệu quả hơn so với LazyColumn khi bạn có nội dung cuộn lớn vì với LazyColumn, chúng ta chỉ có thể soạn/đo lường/vẽ các phần tử hiển thị. Để tránh việc người dùng 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 hoạt động tải rảnh tay và sử dụng các công cụ sửa đổi trực tiếp như sau: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Phương thức trạng thái ban đầu mới của items(count: Int) cho phạm vi của LazyColumn/LazyRow/LazyVerticalGrid. items(items: List)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)

  • AbsoluteArrangement không còn được dùng nữa đã bị xoá. (Iffa96, b/177641870)

  • Thông 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

  • onCommit, onDispose và onActive không được dùng nữa, thay vào đó là các API SideEffect và DisposableEffect (If760e)
  • WithConstraints đã được thiết kế lại dưới dạng BoxWithConstraints và được chuyển sang foundation.layout. (I9420b, b/173387208)
  • Thay đổi thành các hàm trạng thái ban đầu 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
    • Các chức năng ban đầu không còn được dùng với chữ cái đầu tiên viết thường
    • Các hàm ban đầu mới sẽ trả về Phông chữ thay vì các loại con
    • Ẩn các hàm khởi tạo của lớp con để chúng chỉ có thể tạo dựng qua các hàm trạng thái ban đầu.
    • Đổi tên Font.asFontFamily thành Font.toFontFamily
    • (I42aa7)
  • Giới thiệu ComposeContentTestRule, phần mở rộng ComposeTestRule và định nghĩa setContent, đã bị xoá khỏi ComposeTestRule. Thêm phương thức trạng thái ban đầu createEmptyComposeRule(). Phương thức này trả về ComposeTestRule và không chạy Hoạt động cho bạn. Sử dụng tuỳ chọn này khi bạn muốn chạy Hoạt động trong quá trình thử nghiệm, ví dụ: sử dụng ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState hiện là animateFooAsState, nơi mà Foo trở thành loại của biến được ảnh động hoá, ví dụ như Float, Dp, Offset, v.v. (Ie7e25)

  • 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 là API chỉ thay đổi và tính năng chỉnh sửa văn bản nhiều kiểu chưa được triển khai.

    • Xoá initial khỏi thông số hàm khởi tạo EditorBuffer. (I326d5)
  • invalidate and compositionReference() hiện không được dùng nữa và thay vào đó là currentRecomposeScope và rememberCompositionReference tương ứng. (I583a8)

  • AnnotatedString được thay đổi để mở rộng từ kotlin.CharSequence. Do đó, độ dài và trình tự phụ hiện là các hàm bản sao và các hàm tiện ích bị xoá. (Iaf429)

  • Duration và Uptime sẽ được thay thế bằng mili giây Long và bước này sẽ xoá phần phụ thuộc của việc nhập con trỏ trong các lớp đó. (Ia33b2, b/175142755, b/177420019)

  • RememberObserver thay thế CompositionLifecycleObserver và CompositionLifecycleObserver hiện đã ngừng hoạt động.

    RememberObserver là sự thay thế cho CompositionLifecycleObserver bằng ngữ nghĩa được sửa đổi và phương thức được đổi tên. Việc thay đổi sang API mới có thể được thực hiện bằng máy móc đối với các đối tượng chỉ được nhớ một lần và tiếp tục là phương pháp được đề xuất. Tuy nhiên, nếu một tệp đối chiếu được nhớ nhiều lần trong một nội dung soạn thảo, thì onRemembered sẽ được gọi cho mỗi tệp đối chiếu mà onEnter chỉ được gọi một lần. onEnter được gọi nhiều lần nếu đối tượng được sử dụng trong các phần phụ, chẳng hạn như WithConstraintsScaffold, giúp đảm bảo rằng một lệnh gọi onEnter không đáng tin cậy và đã bị xoá cho RememberObserver.

    RememberObserver thêm onAbandoned được gọi nếu bản sao RememberObserver được trả về từ lệnh gọi lại chuyển đến remember nhưng không được nhớ ở trạng thái hợp thành và do đó, sẽ không bao giờ onRemembered được gọi. Điều này có thể xảy ra nếu một trường hợp ngoại lệ chấm dứt quan hệ hợp thành trước khi hoàn tất hoặc hợp thành bị huỷ vì trạng thái là đang tạo một quan hệ hợp thành không còn hiệu lực hoặc không còn cần đến nữa. Nếu bản sao của RememberObserver tuân theo một mục đề xuất tham chiếu ở trên là theo dõi một tài nguyên bên ngoài, cả onForgottenonAbandoned, thì mỗi tài nguyên cho biết rằng tài nguyên không còn cần thiết nữa. Nếu đối tượng đang theo dõi công việc đã bắt đầu hoặc tài nguyên được phân bổ trong onRemembered, onAbandoned có thể bị bỏ qua vì đối tượng này sẽ không được gọi nếu onRemembered đượ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)

  • Phương thức toạ độ chung không còn được dùng nữa 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ì lệnh có thể thay đổi. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden được đổi tên thành invisibleToUser và được đánh dấu là @ExperimentalComposeUiApi. AccessibilityRangeInfo đã được đổi tên thành ProgressBarRangeInfo. stateDescriptionRange đã được đổi tên thành progressBarRangeInfo. AccessibilityScrollState đã được đổi tên thành ScrollAxisRange. horizontalAccessibilityScrollState đã được đổi tên thành horizontalScrollAxisRange. verticalAccessibilityScrollState đã được đổi tên thành verticalScrollAxisRange. (Id3148)

  • 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 để tận dụng hết 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 là updateState (Id4853)

  • Hãy 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 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-alpha10androidx.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à loại 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 để có các thành phần và các thao tác toán học. (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)
  • TestUiDispatcher không được dùng nữa. Thay vào đó, hãy sử dụng Dispatchers.Main (Ic171f, b/175385255)
  • Thêm nút Bật/tắt đối với Strings.kt nền (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)
  • FlowRow và FlowColumn không còn dùng được nữa. Thay vào đó, vui lòng sử dụng một bố cục tuỳ chỉnh. (I09027)
  • Modifier.focus() và Modifier.focusRequester() không còn được dùng nữa. Thay vào đó, hãy sử dụng Modifier.focusModifier() và Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Giới thiệu SelectionRegistrar.notifySelectableChange để thông báo các bản cập nhật Có thể chọn cho SelectionManager. (I6ff30, b/173215242)
  • Thay đổi fun Dp.isFinite() thành val 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 dựa trên coroutine mới Animatable đảm bảo tính loại trừ lẫn nhau trong các ảnh động. DecayAnimationSpec mới để hỗ trợ ảnh động phân rã đa chiều (I820f2, b/168014930)
  • Thêm hỗ trợ các trường văn bản chỉ có thể đọc và bị vô hiệu hoá (I35279, b/171040474, b/166478534)
  • animate() hiện được thay thế bằng animateAsState(), trả về State<T> thay vì T. Việc này tạo ra hiệu suất cao hơn, vì phạm vi vô hiệu hoá có thể được thu hẹp đến vị trí mà giá trị trạng thái được đọc. (Ib179e)
  • Thêm API có vai trò ngữ nghĩa và thêm vai trò dưới dạng thông số cho trình SemanticsModifier có thể nhấp, chọn và chuyển đổi. Thay đổi Modifier.progressSemantics sao cho Thanh trượt cũng có thể sử dụng được. (I216cd)
  • Giờ đây, bạn có thể truy cập 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-alpha09androidx.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)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed và LazyRowForIndexed không được dùng nữa. 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 thông số reverseLayout cho LazyColumn/Row. khi các mục true sẽ được hợp thành từ dưới lên trên cùng và LazyListState.firstVisibleItemIndex == 0 sẽ có nghĩa 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 thông số centroid, xoay, thu phóng và xoay kết hợp. (Ie6e1c)

  • Di chuyển ContentDrawScope sang mô-đun ui-graphics để sử dụng 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. Bây giờ, chúng là nội bộ của mô-đun của Compose.

    CompositionData và CompositionGroup được thêm vào làm hàm thay thế cho API ui-tooling dùng để trích xuất thông tin về sự hợp thành. Các định dạng này là công khai nhưng không nhằm sử dụng bên ngoài API công cụ ui vì chúng cung cấp thông tin thô mà API công cụ diễn giải giao diện người dùng (I31a9c)

  • Tái cấu trúc ShaderBrush để tạo một phiên bản chương trình tạo bóng theo yêu cầu khi có sẵn thông tin về kích thước môi trường vẽ. Thao tác này rất hữu ích để xác định các hàm độ dốc chiếm toàn bộ giới hạn vẽ của một thành phần kết hợp tại thời điểm hợp thành mà không cần thực hiện các tuỳ chọn triển khai DrawModifier tuỳ chỉnh.

    Ngừng sử dụng các API hàm khởi tạo độ dốc theo các phương thức ban đầu trên đối tượng hàm Độ dốc. (I511fc, b/173066799)

  • Modifier.focusObserver không còn được dùng nữa. Thay vào đó, hãy 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ênthành onPositionChange thành notifyPositionChange. (Ifbaf7)

  • AndroidOwner được chuyển thành nội bộ (Ibcad0, b/170296980)

  • Hàm infiniteRepeatable mới để tạo InfiniteRepeatableSpec (I668e5)

  • Giao diện Applier đã thay đổi để đơn giản hoá việc xây dựng cây từ dưới lên thay vì từ trên xuống.

    Phương thức insert() được đổi tên thành insertTopDown().

    Thêm một phương thức mới là insertBottomUp().

    Một trình bổ trợ sẽ chèn các nút vào cây mà bạn đang chỉnh sửa bằng cách sử dụng insertTopDown() hoặc insertBottomUp(), tuỳ thuộc vào chế độ hoạt động hiệu quả hơn.

    Một số cây, chẳng hạn như LayoutNodeView, có hiệu quả hơn khi tạo từ dưới lên so với từ trên xuống. Trước đó, hệ thống phải có một tập hợp các quảng cáo chèn để triển khai từ dưới lên nên cần sao chép sang tất cả các bước bổ sung cần xây dựng từ dưới lên để đạt được hiệu suất. Với thay đổi này, Applier sẽ ghi đè insertBottomUp() để tạo từ dưới lên cây và insertTopDown() để tạo cây từ trên xuống. (Icbdc2)

  • Thêm API painterResource để xử lý tải mờ các đối tượng Trình vẽ từ các định dạng thành phần đường quét (như PNG) hoặc VectorDrawables. Người tiêu dùng không còn phải xác định trước loại thành phần và có thể gọi phương thức này để nhận đối tượng Painter để sử dụng trong các thành phần kết hợp Hình ảnh hoặc công cụ sửa đổi trình vẽ. (I2c703, b/173818471)

  • Thêm hàm trạng thái ban đầu buildAnnotatedString để tạo một AnnotatedString. Ngừng sử dụng hàm trình tạo annotatedString. (Idfe0b)

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-alpha08androidx.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ỏi CoreTextField. 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ụng BasicTextField. (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ủa thành phần kết hợp, để kiểm tra tính nhất quán với nguyên tắc Compose. Ngoài ra, chúng tôi cũng đã di chuyển một số API sử dụng children dưới dạng tên cho lambda tạo vệt sang content, theo hướng dẫn và kiểm tra tìm lỗi mã nguồn. (Iec48e)
  • Chuyển các api foundation:foundation-text thành foundation: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 bí danh loại của VectorAssetBuilder để liên kết về khả năng tương thích với ImageVector.Builder. (Icfdc8)
  • Đổi tên ImageAsset và các phương thức liên quan thành ImageBitmap. (Ia2d99)
  • 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 thông 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 câu lệnh này để thêm nội dung có thể đặt tiêu điểm vào một thành phần, kèm theo ngữ nghĩa chính xác và hỗ trợ tiếp cận. (I41eb9, b/152525426, b/162865824)

  • Các API không dùng nữa trước đây đã bị xoá: Đường viền đã 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

  • Di chuyển các API DrawModifier từ gói androidx.compose.ui sang gói androidx.compose.ui.draw. Tạo tệp DrawModifierDeprecated.kt để đưa các phương thức typealiases/helper vào nhằm hỗ trợ quá trình di chuyển từ các API không dùng nữa sang các API hiện tại. (Id6044, b/173834241)
  • Đổi tên Modifier.drawLayer thành Modifier.graphicsLayer Cũng cập nhật các lớp liên quan thành GraphicsLayer theo phản hồi của hội đồng API. (I0bd29, b/173834241)
  • Xoá <T> khỏi 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)
  • Để cho 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 sử dụng Material có thể sử dụng AmbientTextSelectionColors theo cách thủ công để tuỳ chỉnh màu sắc sử dụng để lựa chọn. (I1e6f4, b/139320372, b/139320907)
  • Thông số căn chỉnh của Hộp được đổi tên thành contentAlignment. (I2c957)
  • Các công cụ sửa đổi offsetPx đã được đổi tên thành offset. Công cụ này hiện đang sử dụng các thông số lambda thay vì Trạng thái. (Ic3021, b/173594846)
  • Thêm WindowManager.isWindowFocused để kiểm tra xem cửa sổ máy chủ có phải là tiêu điểm hay không và một WindowFocusObserve cung cấp một lệnh gọi lại onWindowFocusChanged. (I53b2a, b/170932874)
  • Thêm thông số resetInput vào TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Cập nhật API TextFieldValue
    • đặt TextFieldValue.composition ở chế độ chỉ đọc
    • xoá trường hợp 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 Ambients được đặt tên với hậu tố là Ambient, và thay thế chúng bằng các thuộc tính mới có tiền tố là Ambient, tuân theo các nguyên tắc Ambients và Compose API khác. (I33440)
  • Thêm trình bao bọc kiểu chữ của Android. Bạn có thể tải Bộ phông chữ Android thông qua hàm typeface, ví dụ typeface(Typeface.DEFAULT). Cũng đã đổi tên typefaceFromFontFamily() thành typeface() (I52ab7)
  • Thêm mục kiểm tra tìm mã lỗi nguồn để kiểm tra nhằm đảm bảo rằng các trạng thái ban đầu công cụ 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 để kiểm tra nhằm đảm bảo rằng các hàm trạng thái ban đầu của công cụ sửa đổi được xác định là phần mở rộng trên Công cụ sửa đổi, để chúng có thể liên kết thành công với nhau. (I07981)
  • Đổi tên đối số ngữ nghĩa mergeAllDescendants thành mergeDescendants. (Ib6250)
  • Quản lý thời gian trong thử nghiệm (TestAnimationClock và cách sử dụng) hiện đang được thử nghiệm (I6ef86, b/171378521)
  • Xoá mô đun ui-test cũ và các thành phần 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ới foundation: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 nội bộ (I4c5e7)
  • id được đổi tên thành layoutId cho LayoutIdParentData. Measurable.id được đổi tên thành Measurable.layoutId. (Iadbcb, b/172449643)

Phiên bản 1.0.0-alpha07

Ngày 11 tháng 11 năm 2020

Phát hành androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07androidx.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ố trong Modifier.fillParentMaxSize[Width|Height] trong phạm vi LazyColumn/Row (I797e2, b/166586426)
  • Xoá KeyboardOptions.toImeOptions khỏi API công khai. (Ic2e45)
  • Ngừng sử dụng nền tảng AmbientTextStyle, ProvideTextStyle và AmbientContentColor. 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 tạo hệ thống thiết kế riêng cho không gian xung quanh có chủ đề mà có thể sử dụng trong các thành phần của riêng bạn. (I74acc, b/172067770)
  • foundation.Text không được dùng nữa và được thay thế bằng material.Text. Đối với một API văn bản cơ bản, không lựa chọn và không sử dụng giá trị nào từ một giao diện, hãy xem androidx.compose.foundation.BasicText. (If64cb)
  • 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)
  • BaseTextField không còn được dùng nữa. Sử dụng BasicTextField thay thế. (I896eb)
  • BasicTextField được thêm để thay thế cho cả CoreTextField và BaseTextField (Id4cea)
  • Xoá LazyColumnItems/LazyRowItems không còn được dùng (I1d8a8)
  • Chúng tôi đã xoá các thành phần có thể kết hợp không còn được dùng để đo kích thước thành các phép đo nội tại. (I18537, b/171811496)
  • relativePaddingFrom đổi tên 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)
  • Thông số matchHeightConstraintsFirst được thêm vào công cụ sửa đổi aspectRatio, có thể dùng để chỉ định công cụ 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 còn được dùng nữa. (I87884, b/171702471)

Sửa lỗi

  • Giới thiệu lớp cùng dòng ScaleFactor để thể hiện hệ số tỷ lệ cho các trục ngang và trục dọc độc lập với nhau để hỗ trợ các trường hợp sử dụng tỷ lệ không đồng nhất.
    • Thêm phương thức computeScaleFactor vào ContentScale
    • Thêm ContentScale.FillBounds để thực hiện điều chỉnh tỷ lệ không đồng nhất nhằm kéo dài phạm vi src để chiếm hoàn toàn đích đến.
    • Thêm các phương thức toán tử để tính toán các thông số ScaleFactor với thông số Kích thước.
    • (Ic96a6, b/172291582)
  • 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)
  • Di 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 API biểu tượng để nhận Color.Unspecified làm màu có khả năng phủ màu sẽ thu hút thành phần hoặc trình vẽ được cung cấp mà 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)
  • FirstBaseline và LastBaseline được chuyển 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 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-alpha06androidx.compose.foundation:foundation-text:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Thay đổi API

  • androidx.compose.foundation.Icon được chuyển sang androidx.compose.material.Icon. Bạn cũng có thể sử dụng thành phần Hình ảnh/Modifier.Paint() với một Trình vẽ 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 thay vì rememberVectorPainter để chỉ ra rõ hơn rằng API có thể kết hợp sử dụng nội bộ 'remember' để duy trì dữ liệu trên các nội dung hợp thành. (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 API bán kính thành CornerRadius để thể hiện rõ hơn cách sử dụng API này trong khắp Compose. Tài liệu cập nhật cho biết rằng bán kính góc âm giới hạn được đặt bằng không. (I130c7, b/168762961)
  • 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 qua trái (I6e1e0)
  • Thay đổi có thể gây lỗi: xoá giá trị trả về từ PointerInputFilter.onPointerEvent(...) vì giá trị duy nhất có thể thay đổi được trong 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-alpha05androidx.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 các API contentColor() và currentTextStyle(), đồng thời lần lượt thay thế các API đó bằng các môi trường xung quanh 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 tiêu chuẩn hoá các giá trị đặt gác cho các lớp cùng dòng, hãy đổi tên Color.Unset to Color.Unspecified để nhất quán với các lớp cùng dòng khác (I97611, b/169797763)
  • 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à 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 thông số Size.Unspecified là Float.NaN thay vì Float.POSITIVE_INFINITY. Cập nhật các nội dung triển khai Painter để kiểm tra với Size.Unspecified cũng như non-finite Sizes. (I95a7e)
  • Thêm mô-đun Phân trang 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)
  • OnPositionedModifier được đổi tên thành OnGloballyPositionedModifier và onPositioned() được đổi tên 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-alpha04androidx.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

  • Ngăn xếp được đổi tên thành Hộp. Hộp nền hiện có trước đây sẽ không được dùng nữa, thay vào đó là Hộp mới trong compose.foundation.layout. Hành vi của Hộp mới là xếp chồng các tập con này lên trên một tập con khác khi có nhiều tập con. Điều này khác với Hộp trước có hành vi tương tự như Cột. (I94893, b/167680279)
  • Ngừng sử dụng các tham số trang trí Box. Nếu bạn muốn có các nội dung trang trí/khoảng đệm trên hộp của mình, hãy sử dụng Công cụ 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 Lazy Row và LazyLazy. Các bản sao có thể được tạo bằng rememberLazyListState() và chuyển vào thông 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ấn 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)
  • Các API sắp xếp tuỳ chỉnh không được dùng nữa đã bị xoá. (Ic576d, b/168297922, b/168297923)
  • Thông số unbounded được thêm vào công cụ 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 thông số Offset duy nhất thể hiện toạ độ trục thay cho các tham số nổi riêng biệt của các toạ độ x/y trong DrawScope và DrawTransform
    • Xoá phương thức Rect.expandToInclude và Rect.join
    • Cập nhật tài liệu về Bán kính để hiển thị hình bầu dục ngoài hình elip
    • Thêm tài liệu để cho biết trình tạo công khai cho lớp Bán kính nội dòng sẽ không được gọi trực tiếp mà thay vào đó các đối tượng Bán kính cần được khởi tạo thông qua trình tạo hàm
    • Xoá các API RoundRect để truy vấn topRight, bottomRight, bottomCenter, v.v.
    • Ngừng sử dụng Rect.shift thay vào đó là Rect.translate
    • Xoá các API RoundRect.grow và Rect.shrink
    • Đổi tên RoundRect.outerRect thành Rect.boundingRect
    • Xoá các phương thức RoundRect.middleRect/tallMiddleRect/wideMiddleRect và Rect.isStadium
    • Đổi tên RoundRect.longestSide thành RoundRect.maxDimension
    • Đổi tên RoundRect.shortestSide thành RoundRect.minDimension
    • Thay đổi RoundRect.center thành một thuộc tính thay vì một hàm
    • Cập nhật hàm khởi tạo RoundRect để sử dụng các thuộc tính Bán kính thay vì các tham số riêng lẻ cho giá trị bán kính x/y
    • Xoá các API kích thước giả định đó là một hình chữ nhật với gốc tại điểm 0,0
    • Thêm một API phá huỷ vào Radius
    • Di chuyển nhiều hàm tiện ích mở rộng RoundRect để trở thành thuộc tính thay thế
    • (I8f5c7, b/168762961)
  • 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 hợp thành 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 không bao giờ được hỗ trợ và đã làm hỏng tính năng vuốt mạnh và 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 API DrawScope bằng các phương thức chuyển đổi phạm vi để cho biết thao tác chuyển đổi chỉ được áp dụng trong lệnh gọi lại và sẽ bị xoá sau khi lệnh gọi lại được gọi
    • Cập nhật tài liệu clipPath để tham chiếu đến Đường dẫn thay vì hình chữ nhật tròn
    • Khắc phục lỗi khoảng cách trong tài liệu cho tham số bên phải trong clipPath
    • Đổi tên DrawScope.drawCanvas thành drawIntoCanvas và xoá tham số kích thước
    • Đổi tên các thông số dx/dy trong phương thức phần lồng ghép thành ngang và dọc
    • Thêm phương thức nạp chồng phần lồng ghép cung cấp cùng một giá trị phần lồng ghép cho cả 4 giới hạn
    • Xoá tài liệu về phương thức lồng ghép cho biết phần lồng ghép sẽ được áp dụng cho cả 4 cạnh
    • Cập nhật tài liệu cho lớp Rect
    • Cập nhật nhận xét về các tham số Rect để khớp với kiểu kdoc
    • Xoá Rect.join và Rect.expandToInclude
    • Đã tạo phương thức nạp chồng cho Rect.translate(offset) và ngừng sử dụng Rect.shift
    • (If086a, b/167737376)
  • 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-alpha03androidx.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

  • InnerPadding được đổi tên 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 thông 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

  • DpConstraints và các API sử dụng hàm giới hạn này đã ngừng hoạt động. (I90cdb, b/167389835)
  • Các thông số minWidthmaxWidth của widthIn được đổi tên thành minmax. Tương tự cho preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • Bổ sung onNode và các phương thức toàn cầu khác trên ComposeTestRules vì các phương thức toàn cầu 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, dẫn đến việc 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 createAndroidComposeRuleAndroidInputDispatcher từ androidx.ui.test.android sang androidx.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-alpha02androidx.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ế cho runBlocking khi chạy các thử nghiệm 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 giao diện người dùng chính trong các thử nghiệm 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")
        }
    }
    

    (I0a85b, b/161247083)

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-alpha01androidx.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-dev17androidx.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 cháu 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 cùng dòng (Iaec70)
  • Xoá lệnh gọi lại onFocusChanged khỏi TextField. Thay vào đó, hãy dùng Modifier.focusObserver. (I51089, b/161297615)
  • Modifier.drawBorder không còn được dùng nữa. Thay vào đó, hãy dùng Modifier.border. Lớp dữ liệu đường viền được thay thế bằng BorderStroke (I4257d, b/158160576)
  • VerticalScroller và HorizontalScroller đã bị xoá. Thay vào đó, hãy sử dụng ScrollableColumn/Row. Modifier.drawBackground đã bị xoá. Sử dụng Modifier.background (I73b0d, b/163019183)
  • Xoá mục đánh dấu là công cụ sửa đổi fillMax* không còn được dùng khỏi LazyItemScope vì các mục đó sẽ khiến khó thêm các công cụ 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 cháu trực tiếp của LazyColumnFor (Ifa78d)
  • thêm nội dung triển khai LazyColumn/LazyRow dưới dạng DSL (I93cc6)
  • Các giới hạn hiện là một lớp cùng dòng (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 thông số của công cụ sửa đổi vào SelectionContainer (I4aada, b/161487952)
  • Thêm hàm lambda mergePolicy vào SemanticsPropertyKey. Bạn có thể sử dụng tính năng 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 cháu. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() được đổi tên thành PlacementScope.place(), còn PlacementScope.place() trước đó được đổi tên thành PlacementScope.placeRelative(). Theo đó, phương thức PlacementScope.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ụng PlacementScope.placeRelative() thay thế. (I873ac, b/162916675)
  • Xoá thành phần FilledTextField không còn được 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 thông số backgroundColor vào LinearProgressIndicator và đã xoá khoảng đệm nội bộ khỏi CircularProgressIndicator. Thêm ProgressIndicatorConstants.DefaultProgressAnimationSpec mới mà có thể được dùng làm AnimationSpec mặc định khi kích hoạt tiến trình giữa các giá trị (If38b5, b/161809914, b/161804677)
  • Thành phần kết hợp state { ... } hiện đã ngừng sử dụng, và thay vào đó là các lệnh gọi tới remember { mutableStateOf(...) } để đảm bảo sự rõ ràng. Điều này làm giảm giao diện API tổng thể và số khái niệm để quản lý trạng thái, đồng thời khớp với mẫu by mutableStateOf() của uỷ quyền thuộc tính loại. (Ia5727)
  • Đổi tên RRect thành RoundRect để phù hợp hơn với các kiểu đặt tên của Compose Tạo các hàm khởi tạo tương tự thành RRect và ngừng sử dụng các hàm khởi tạo 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 cùng dòng (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-dev16androidx.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 thông số itemContent của danh sách Lười tải. Thành phần này cung cấp các công cụ sửa đổi để lấp đầy kích thước tối đa của thành phần mẹ, giúp giải quyết trường hợp sử dụng khi mục cần lấp đầy cửa sổ xem và Modifier.fillMaxSize() thông thường không hoạt động khi mục được đo lường bằng các giới hạn vô hạn. (Ibd3b2, b/162248854)
  • 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)
  • Modifier.deternimateProgress được đổi tên 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 cho lý do phương pháp hay 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 enabledonZoomStarted (If8b8f)
  • FilledTextField của Material được đổi tên thành TextField và TextField cơ bản được đổi tên thành BaseTextField để giúp người dùng dễ dàng khám phá và sử dụng API mong muốn đơ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)
  • Modifier.drawBackground được đổi tên 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ư công cụ sửa đổi độ dời, công cụ sửa đổi độ dời tuyệt đối sẽ không tự động phản ánh trong ngữ cảnh từ phải sang trái (I3aa21)
  • RowColumn hiện là hàm cùng dòng đã giảm đáng kể chi phí sử dụng. (I75c10)

Sửa lỗi

  • Thông báo các bản sửa lỗi API rộng (I077bc)
    1. Xoá giao diện OffsetBase không sử dụng
    2. Căn chỉnh các lớp Offset và IntOffset để có một giao diện API nhất quán
    3. Đổi tên IntOffset.Origin thành IntOffset.Zero để phù hợp với API Offset
    4. Đã di chuyển phương thức nativeCanvas ra khỏi giao diện Canvas để hỗ trợ người dùng tạo các bản sao Canvas riêng của họ
    5. Tạo lớp EmptyCanvas mã giả lập để tái cấu trúc DrawScope thành tham số có giá trị không rỗng thay vì lateinit và đảm bảo tính không rỗng của trường
    6. Đổi tên enum ClipOp thành PascalCase
    7. Đổi tên enum FilterQuality thành PascalCase
    8. Đổi tên enum StrokeJoin thành PascalCase
    9. Đổi tên enum PointMode thành PascalCase
    10. Đổi tên enum PaintingStyle thành PascalCase
    11. Đổi tên enum PathFillType thành PascalCase
    12. Đổi tên enum StrokeCap thành PascalCase
    13. Cập nhật quá trình triển khai DrawCache để không còn sử dụng các thông số lateinit
    14. Đã 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
    15. Cập nhật thành phần kết hợp Hình ảnh để tránh sử dụng Hộp nhằm giảm chi phí
    16. Cập nhật lớp Outline để có các chú thích @Immutable
    17. 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
    18. Cập nhật thành phần phụ trong Vector để xoá các lượt kiểm tra có điều kiện dư thừa về tính bình đẳng vì Compose đã xử lý chúng
    19. Các phương thức hàm khởi tạo đồng hành Rect đã ngừng hoạt động và được thay thế bằng các hàm tạo
    20. Cập nhật lớp Brush và hàm khởi tạo bằng các API @Immutable và @Stable
    21. Cập nhật enum VertexMode thành PascalCase
    22. 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
    23. Cập nhật Kích thước để thêm API huỷ cấu trúc, đổi tên UnspecifiedSize thành Không xác định và đã xoá các phương thức không sử dụng
  • Thêm MonotonicFrameAnimationClock cho phép bạn sử dụng MonotonicFrameClock như là 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 giờ đây là ManualFrameClock. (I111c7, b/161247083)

  • Xoá SemanticsNodeInteraction.performPartialGesture. Sử dụng SemanticsNodeInteraction.performGesture thay thế. (Id9b62)

  • Đổi tên SemanticsNodeInteraction.getBoundsInRoot() thành SemanticsNodeInteraction.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 sử dụng để đọc và thay đổi hướng bố cục. Xoá Modifier.rtl và Modifier.ltr. (I080b3)

  • Modifier.plus không còn được dùng nữa. Thay vào đó, hãy dùng Modifier.then. "Then" có tín hiệu rõ ràng hơn về thứ tự, đồng thời nghiêm cấm nhập Modifier.padding().background() + anotherModifier, khiến cho chuỗi bị phá vỡ và khó đọc hơn (Iedd58, b/161529964)

  • Thêm SemanticsMatcher isFocused()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 nó để 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 điện năng trước Q, theo hướng dẫn mới nhất. (I0c10c)

  • OnChildPositioned đã ngừng hoạt động. Thay vào đó, hãy sử dụng OnPositioned trên thành phần con. (I87f95, b/162109766)

  • Đổ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-dev15androidx.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 hiển thị ở trên trong phần Khai báo phần phụ thuộc.

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)
  • VerticalScroller và HoriziontalScroller không còn được dùng nữa. Sử dụng ScrollableColumn và ScrollableRow để tạo trải nghiệm tích hợp với hoạt động và thông số Cột/Hàng hoặc Modifier.verticalScroll và Modifier.horizontalScroll trên phần tử của riêng bạn. Tương tự, ScrollerPosition không còn được dùng nữa và thay vào đó là ScrollState' (I400ce, b/157225838, b/149460415, b/154105299)
  • Các API Modifier.draggable và Modifier.scrollable đã được làm lại. DragDirection đã bị xoá, thay vào đó là Hướng. Trạng thái cần thiết cho thành phần có thể cuộn đã được đơn giản hoá. 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 thông số ContentScale mặc định cho thành phần kết hợp Hình ảnh từ Bên trong thành 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 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 Hình ảnh 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 thông 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. Hãy 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)
  • androidx.ui.foundation.TextFieldValue và androidx.ui.input.EditorValue không còn được dùng nữa. Các thành phần kết hợp TextField, FilledTextField và CoreTextField sử dụng loại đó cũng không còn được dùng nữa. Vui lòng sử dụng androidx.ui.input.TextFieldValue thay thế (I4066d, b/155211005)
  • 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 )
  • Để hợp 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 Kích thước thay vì PxSize. Điều này mang lại lợi ích của một lớp nội tuyến nhằm tận dụng giá trị long để gói 2 giá trị float đại diện cho chiều rộng và chiều cao được biểu thị dưới dạng floats. (Ic0191)
  • Để thống nhất\ số lượng lớp đại diện cho thông tin vị trí, hãy chuẩn hoá việc sử dụng lớp Offset thay vì PxPosition. Điều này mang lại lợi ích của một lớp nội tuyến nhằm tận dụng giá trị long để gói 2 giá trị float đại diện cho độ lệch x và y được biểu thị dưới dạng floats. (I3ad98)
  • Thêm Modifier.zoomable cho chức năng chụm để thu phóng (Id5d63)
  • Thành phần có thể chuyển đổi không còn được dùng nữa. Thay vào đó, hãy sử dụng Modifier.toggleable (I35220, b/157642842)
  • MutuallyExclusiveSetItem không còn được dùng nữa. Thay vào đó, hãy sử dụng Modifier.selectable. (I02b47, b/157642842)
  • TestTag hiện không còn được dùng nữa. 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 thông 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 của Compose như một phần của nỗ lực tái cấu trúc lớn chỉ dựa vào các loại Dp và loại gốc cho các thông số pixel (Iede0b)
  • 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 Density và cung cấp loại con LayoutDirection Đã xoá DrawScope trong ContentDrawScope Painter và PainterModifier đã được cập nhật để không còn duy trì thuộc tính RTL vì DrawScope làm việc này mà không cung cấp nó một cách thủ công (I1798 )
  • Xoá API DrawBackground không còn được dùng nữa, thay vào đó là các API mở rộng drawBackground trên Công cụ sửa đổi. Tái cấu trúc việc triển khai màu sắc, bút vẽ và màu vẽ drawBackground để giảm đường dẫn mã lệnh cũng như xoá yêu cầu tạo Công cụ sửa đổi dưới dạng một phần của phương thức hợp thành. (I0343a)
  • Cập nhật các API của Compose cấp độ cao hơn để hiển thị CanvasScope thay cho Canvas. Việc này giúp người tiêu dùng không cần phải duy trì các đối tượng Paint của riêng mình. Đối với khách hàng vẫn yêu cầu quyền truy cập vào một Canvas, họ có thể sử dụng phương thức mở rộng drawCanvas. Phương thức này cung cấp một lệnh gọi lại để tạo ra một lệnh vẽ cho Canvas. (I80afd)
  • 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 thập dữ liệu riêng và thông tin kích thước cũng nằm trong giới hạn lồng ghép tương ứng. Nó không yêu cầu người dùng duy trì đối tượng trạng thái Paint của riêng mình để định cấu hình các hoạt động vẽ.

    Bổ sung CanvasScopeSample cũng như cập nhật ứng dụng minh hoạ để bao gồm bản minh hoạ đồ hoạ khai báo (Ifd86d)

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

  • Bây giờ, bạn có thể ẩn/hiển thị bàn phím phần mềm bằng cách sử dụng SoftwareKeyboardController được cung cấp theo lệnh gọi onTextInputStarted callback (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 thông số thường dùng vào Text(). Nếu đang tạo kiểu văn bản trên máy để chuyển một số ít thông 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 thông số: Text(textAlign = TextAlign.Center) (I82768)

  • Thay thế thông số CoreTextField/TextField focusIdentifier bằng FocusNode để tích hợp với hệ thống con lấy tiêu điểm. (I7ea48)

  • Cậ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 có thể nhận giá trị rỗng trong API bằng các Color 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 thông 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á tất cả thông số trên draw()
    • DrawScope có giao diện giống như CanvasScope cũ
    • ContentContentScope có phương thức DrawContent() (Ibaced, b/152919067)
  • ColoredRect không còn được dùng nữa. 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 thông số kỹ thuật của Material Design. Giờ đây, bạn có thể cung cấp các hình dạng nhỏ, vừa và lớn để hầu hết các thành phần đều có thể sử dụng (Ifb4d1)

  • Thay thế Công cụ sửa đổi cùng với toán tử bằng các hàm mở rộ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 thông số enabled vào Hộp đánh dấu, Chuyển đổi và Có thể chuyển đổi (I41c16)

  • Ripple hiện là một Công cụ sửa đổi. Mặc dù thao tác Khả năng nhấp chưa được chuyển đổi, mục đích sử dụng đề xuất là Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • Thêm API VectorPainter để thay thế API thành phần phụ hiện có cho đồ hoạ vectơ. Kết quả của thành phần phụ là một đối tượng của VectorPainter thay vì DrawModifier. Các thành phần kết hợp trước đây của DrawVector không còn được sử dụng nữa và thay vào đó là VectorPainter.

    Đổi tên API Image(Painter) thành PaintBox(Painter) Tạo thành phần kết hợp vectơ hoạt động như thành phần kết hợp Hình ảnh, ngoại trừ VectorAsset thay vì ImageAsset (I9af9a, b/149030271)

  • Tạo thành phần kết hợp Hình ảnh để xử lý kích thước/bố cục bên cạnh việc vẽ một thành phần ImageAsset đã xác định cho màn hình. Thành phần kết hợp này cũng hỗ trợ vẽ mọi phiên bản Painter tuỳ ý tôn trọng kích thước nội tại của nó cũng như hỗ trợ kích thước cố định hoặc kích thước tối thiểu nhất định (Ibcc8f)

  • 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 Hình ảnh thành ImageAsset để phân biệt rõ hơn sự khác biệt giữa dữ liệu Hình ảnh và thành phần kết hợp Hình ảnh sắp tới dùng để tham gia vào bố cục và vẽ nội dung.

    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 của 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 lỗi hiện đã biết bao gồm cả lỗi chỉ theo chiều dọc và không xử lý hết mọi trường hợp thay đổi đối với thư mục con. (Ib351b)

  • Thêm 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à thông số nền vào Hộp (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ành DrawBorder (I8ffcc)

  • Thêm thành phần 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 Công cụ sửa đổi Đường viền (Id335a)

  • Modifier.tag được đổi tên thành Modifier.layoutId để tránh nhầm lẫn với Modifier.testTag. (I995f0)

  • Thông 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 còn được dùng nữa ở Hàng và Cột. (If60d4, b/155858731)

  • Xoá LayoutTag() không dùng nữa, thay vào đó hãy sử dụng Modifier.tag(). Xoá Modifier.matchParent() không dùng nữa, thay vào đó, hãy sử dụng Modifier.matchParentSize(). (If8044)

  • Thêm công cụ sửa đổi bố cục offsetPx dùng để xác định độ dời (linh động) trong px. (I5af57)

  • Thành phần kết hợp AlignmentLineOffset không được dùng nữa, thay vào đó, hãy sử dụng công cụ sửa đổi relativePaddingFrom(). Xoá thành phần kết hợp CenterAlignmentLine. (I60107)

  • Thêm công cụ sửa đổi bố cục defaultMinSizeConstraints. Công cụ 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 các giới hạn tối thiểu và infinity của các 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ông cụ sửa đổi 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 công cụ sửa đổi khoảng đệm đối xứng. (I39840)

  • Xoá công cụ sửa đổi LayoutAspectRatio không dùng nữa. (I65a74)

  • Xoá các công cụ sửa đổi LayoutAlign không dùng nữa. (I10877)

  • Khắc phục lỗi trong các công cụ 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 thông số cverticalGravity 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ông cụ sửa đổi trọng lực được cập nhật để 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)

  • Thực hiện Căn chỉnh tức thì với các giá trị tuỳ ý. Thêm Căn chỉnh 1D. (Ia0c05)

  • Đổi tên EdgeInsets thành InnerPadding. Đã đổi tên thông số innerPadding của các Nút Material thành phần khoảng đệm. (I66165)

  • alignToSiblings hiện chấp nhận một giá trị Measured thay vì Placeable. (I5788d)

  • Thêm các công cụ 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 sử dụng cho 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 cháu của ConstraintLayout (Idb1a5)

  • Xoá các thành phần kết hợp Gói và Trung tâm không dùng nữa. (I29e23)

  • Thêm LayoutsModifier2, một API mới để xác định công cụ sửa đổi bố cục; ngừng sử dụng LayoutsModifier (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)

  • Vùng chứa không còn được dùng nữ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 AspectRatiovà thay thế bằng công cụ sửa đổi. Xoá các thành phần kết hợp FlexColumn, FlexRow và công cụ 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, thay vào đó là Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState và FocusDetailedState đã ngừng sử dụng, thay vào đó là FocusState2 (I46919, b/160822875, b/160922136)
  • runOnIdleCompose được đổi tên thành runOnIdle (I83607)
  • Một số API thử nghiệm được đổi tên để mang tính trực quan hơn. Tất cả các API findXYZ được đổi tên thành onNodeXYZ. Tất cả các API doXYZ được đổi tên thành performXYZ. (I7f164)
  • Xoá Modifier.ripple không dùng nữa trước đây. Bây giờ, tính năng Khả năng nhấp sử dụng hiệu ứng gợn sóng như chỉ báo mặc định (nếu bạn đã đặt MaterialTheme {} trong ứng dụng của mình). Vì vậy, trong hầu hết các trường hợp, bạn có thể chỉ cần sử dụng khả năng nhấp và nhận miễn phí chỉ báo hiệu ứng gợn sóng. Nếu cần tuỳ chỉnh thông 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 chỉ số RippleIndication theo cách thủ công và chuyển thông số này thành có thể nhấp như thông số chỉ báo. (I663b2, b/155375067)
  • Xoá các API thử nghiệm 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á thông số hướng bố cục khỏi khối đo lường của hàm Layout(). Tuy nhiên, bạn có thể sử dụng hướng bố cục bên trong lệnh gọi lại thông qua đối tượng phạm vi đo lường (Ic7d9d)
  • 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)
  • Chú thích @Untracked không còn được dùng nữa. 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 Activity hoặc Fragment (I5fdd1)
  • Lớp Bán kính được tái cấu trúc là một lớp cùng dòng. Xoá các phương thức tạo quảng cáo đồng hành có cấu trúc hàm tạo cùng với thông số mặc định để có bán kính cùng với trục y khớp với bán kính của thông số bán kính trục x bắt buộc.

    Cập nhật DrawScope.drawRoundRect để sử dụng một thông số Bán kính duy nhất thay vì 2 giá trị nổi riêng biệt cho bán kính dọc theo trục x và trục y (I46d1b)

  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại Dp và loại dữ liệu gốc cho các thông số pixel. Xoá toàn bộ lớp Px (I3ff33)

  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại Dp và loại dữ liệu gốc cho các thông số pixel (I086f4)

  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại Dp và loại dữ liệu gốc cho các thông số pixel (Id3434)

  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào các loại Dp và loại dữ liệu gốc cho các thông số pixel (I97a5a)

  • 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 các loại Dp và loại dữ liệu gốc cho các thông số pixel (I57bff)

  • Chúng tôi đã ngừng sử dụng Modifier.semantics để cho phép sử dụng các thành phần cấp cao. (I4cfdc)

  • Đổi tên AnnotatedString.Builder.addAnnotationString thành addStringAnnotation. (I5059e)

  • Cập nhật API Căn chỉnh và đã thêm hỗ trợ cho tính năng căn chỉnh tuyệt đối (không phản chiếu tự động trong ngữ cảnh Rtl) (I38cd3)

  • Bạn có thể đo lường Layout và thành phần con cháu của LayoutModifier theo một hướng bố cục khác. (Ibd731)

  • Giới thiệu thông số hình chữ nhật tuỳ chọn bổ sung cho ImagePainter để hỗ trợ vẽ một phần phụ của ImageAsset cơ bản (I0ea9e)

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

  • runOnIdleComposerunOnUiThread hiện là các hàm chung thay vì các phương thức trên ComposeTestRule. (Icbe8f)

  • Các toán tử uỷ quyền thuộc tính [Mutable]State đã được chuyển 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. Các lệnh gọi phải thêm các mục nhập để tiếp tục sử dụng by state { ... } hoặc by 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 bộ sửa đổi LayoutSize.Fill + LayoutAlign.Center, hoặc với một trong các cấu trúc có thể sửa đổi Hộp hoặc Ngăn xếp với các phương thức 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 đã thay đổi từ một hàm có thể kết hợp thông thường để trả về một công cụ sửa đổi drawVector() sẽ vẽ vectơ làm nền cho một bố cục. (I7b8e0)

  • Thay thế hàm có thể kết hợp Clip bằng công cụ sửa đổi drawClip(). DrawClipToBounds là một công cụ bổ trợ thuận tiện để sử dụng khi bạn chỉ cần kẹp vào 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ằngcông cụ 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. androidx.compose.ViewAdapters đã bị xoá. Chúng không còn là trường hợp sử dụng được hỗ trợ. Compose.composeInto không còn được dùng nữa. Thay vào đó, hãy sử dụng setContent hoặc setViewContent. Compose.disposeComposition không còn được dùng nữa. Thay vào đó, hãy sử dụng phương thức dispose trên Composition do setContent 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 công cụ 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 thành phần mẹ đến thành phần con cháu. Thêm công cụ sửa đổi hướng bố cục. (I3d955)

  • Đổi tên Painter.toModifier thành Painter.asModifier vì Công cụ 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 Công cụ sửa đổi (I7195b)

  • Hỗ trợ hướng từ phải sang trái trong công cụ sửa đổi LayoutPadding (I9e8da)

  • Density và DensityScope được hợp nhất thành một giao diện. Bạn hiện có thể sử dụng DensityAmbient.current thay vì ambientDensity(). Sử dụng with(density) thay cho withDensity(density) (I11cb1)

  • 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 ảnh độ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ẹ để hoạt ảnh hoá 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 hợp thành lại. (Ibee5a, b/158164341)

  • API hàm lambda tạo vệt WithConstraints đã được thay đổi. Giờ đây, thay vì hai thông số, giao diện này có phạm vi trình tiếp nhận. Cùng với các giới hạn và layoutDirection, giao diện cung cấp các thuộc tính minWidth, maxWidth, minHeight và maxHeight dưới dạng Dp (I91b9a, b/149979702)

  • Đổi tên LayoutModifier2 thành LayoutModifier. (Id29f3)

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

  • LayoutDirectionAmbient không còn được dùng nữa. Để đọ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)

  • Thành phần kết hợp ParentData đã không còn được dùng nữa. Bạn nên tạo một công cụ sửa đổi có triển khai giao diện ParentDataModifier hoặc sử dụng công cụ sửa đổi LayoutTag nếu bạn chỉ cần gắn thẻ thành phần con cháu của bố cục để nhận ra 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ó thể 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ành true. Thao tác này sẽ thay đổi chiến lược tạo mã cho trình bổ trợ của Compose. Ở cấp độ cao, việc này sẽ tạo ra các hàm @Composable với một thông số tổng hợp bổ sung. Hệ thống sẽ chuyển các thông số này đến các lệnh gọi @Composable tiếp theo để thời gian chạy có thể quản lý việc thực thi một cách chính xác. Tuy nhiên, đây là một thay đổi quan trọng liên quan đến việc phá vỡ tệp nhị phân. Tuy nhiên, quy trình này cần phải duy trì khả năng tương thích ở cấp nguồn trong tất cả các trường hợp sử dụng của Compose đã bị xử lý. (I7971c)

  • Thay đổi LayoutCoordinates để làm cho providedAlignmentLines là một Tập hợp thay vì một Bản đồ. Đồng thời có câu lệnh LayoutCoordinates triển khai toán tử get() thay thế để truy xuất giá trị. Điều này giúp các công cụ sửa đổi dễ dàng sửa đổi một hoặc nhiều giá trị của tập hợp mà không tạo bộ sưu tập mới cho từng công cụ sửa đổi. (I0245a)

  • LayoutCoordinates không còn có thuộc tính vị trí. Thuộc tính vị trí không hợp lý khi xem xét LayoutModifiers, xoay vòng hoặc chuyển tỷ lệ. Thay vào đó, nhà phát triển nên sử dụng parentCoordinates và childToLocal() để tính toán lượt chuyển đổi từ một LayoutCoordinate sang một chế độ khác.

    LayoutCoordinates sử dụng IntPxSize cho thuộc tính kích thước thay vì PxSize. Do bố cục sử dụng kích thước pixel số nguyên nên tất cả các kích thước bố cục phải sử dụng số nguyên và không sử dụng giá trị dấu phẩy động. (I9367b)

  • Các cải tiến đối với nền tảng giới hạn API (I0fd15)

  • Thêm TextDirection.Content (I48f36)

  • Điều chỉnh trình đơn Thanh công cụ để hiển thị sao chép, cắt, dán đúng cách. (Id3955)

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

  • Thay đổ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ành annotatedString(builder: Builder). (Ia6377)

  • Thay đổi API: AnnotatedString.Item được đổi tên thành AnnotatedString.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)

  • Tên gói ui-android-text (androidx.text) được thay thế bằng androidx.ui.text.platform để phù hợp với chính sách androidx. (I42711)