Compose Animation

Tạo ảnh động trong các ứng dụng Jetpack Compose để làm phong phú thêm trải nghiệm người dùng.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 11 tháng 5 năm 2022 1.1.1 - 1.2.0-beta01 -

Cấu trúc

Compose là sự kết hợp của 7 mã nhóm Maven 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 tập hợp 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 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.animation:animation:1.2.0-alpha08"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.2.0-alpha08"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.animation:animation:1.2.0-alpha08")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.2.0-alpha08"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem phần Thêm phần phụ thuộc của bản dựng.

Ý kiến phản hồi

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

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

Phiên bản 1.2.0-beta01

Ngày 11 tháng 5 năm 2022

Phát hành androidx.compose.animation:animation:1.2.0-beta01, androidx.compose.animation:animation-core:1.2.0-beta01androidx.compose.animation:animation-graphics:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

  • Đây là bản phát hành beta 1.2 đầu tiên! Không có thay đổi nào kể từ bản phát hành alpha gần đây nhất.

Phiên bản 1.2.0-alpha08

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

Phát hành androidx.compose.animation:animation:1.2.0-alpha08, androidx.compose.animation:animation-core:1.2.0-alpha08androidx.compose.animation:animation-graphics:1.2.0-alpha08. Phiên bản 1.2.0-alpha08 bao gồm các thay đổi sau.

Phiên bản 1.2.0-alpha07

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

Phát hành androidx.compose.animation:animation:1.2.0-alpha07, androidx.compose.animation:animation-core:1.2.0-alpha07androidx.compose.animation:animation-graphics:1.2.0-alpha07. Phiên bản 1.2.0-alpha07 bao gồm các thay đổi sau.

Thay đổi API

  • AnimatedImageVector hiện hỗ trợ repeatCountrepeatMode (Ia3e75, b/199304067)

Phiên bản 1.2.0-alpha06

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

Phát hành androidx.compose.animation:animation:1.2.0-alpha06, androidx.compose.animation:animation-core:1.2.0-alpha06androidx.compose.animation:animation-graphics:1.2.0-alpha06. Phiên bản 1.2.0-alpha06 bao gồm các thay đổi sau.

Thay đổi API

  • 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

  • Đã cập nhật API đồ họa vectơ để sử dụng chú thích thành phần kết hợp riêng @VectorComposable thay vì @UiComposable (I942bc)

Phiên bản 1.2.0-alpha05

Ngày 9 tháng 3 năm 2022

Phát hành androidx.compose.animation:animation:1.2.0-alpha05, androidx.compose.animation:animation-core:1.2.0-alpha05androidx.compose.animation:animation-graphics:1.2.0-alpha05. Phiên bản 1.2.0-alpha05 bao gồm các thay đổi sau.

Thay đổi API

  • Thật tuyệt! Tính năng soạn ảnh động hiện đã hỗ trợ cài đặt "Quy mô thời lượng ảnh động" tuỳ Tuỳ chọn cho trình lập viên. (I5a4fc, b/161675988)

Phiên bản 1.2.0-alpha04

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

Phát hành androidx.compose.animation:animation:1.2.0-alpha04, androidx.compose.animation:animation-core:1.2.0-alpha04androidx.compose.animation:animation-graphics:1.2.0-alpha04. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.

Phiên bản 1.2.0-alpha03

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

Phát hành androidx.compose.animation:animation:1.2.0-alpha03, androidx.compose.animation:animation-core:1.2.0-alpha03androidx.compose.animation:animation-graphics:1.2.0-alpha03. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.

Phiên bản 1.2.0-alpha02

Ngày 26 tháng 1 năm 2022

Phát hành androidx.compose.animation:animation:1.2.0-alpha02, androidx.compose.animation:animation-core:1.2.0-alpha02androidx.compose.animation:animation-graphics:1.2.0-alpha02. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Phiên bản 1.2.0-alpha01

Ngày 12 tháng 1 năm 2022

Phát hành androidx.compose.animation:animation:1.2.0-alpha01, androidx.compose.animation:animation-core:1.2.0-alpha01androidx.compose.animation:animation-graphics:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Thay đổi API

  • Sử dụng AnimatedImageVector.animatedVectorResource thay vì animatedVectorResource để tải tệp tài nguyên <animated-vector>.
    • Sử dụng rememberAnimatedVectorResource thay vì AnimatedImageVector#painterFor để kết xuất AnimatedImageVector. (I9c300)

Sửa lỗi

  • Thêm các phương thức toString vào Animatable và AnimationResult. (Icd3a6)

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.animation:animation:1.1.1, androidx.compose.animation:animation-core:1.1.1androidx.compose.animation:animation-graphics: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.animation:animation:1.1.0, androidx.compose.animation:animation-core:1.1.0androidx.compose.animation:animation-graphics: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.animation:animation:1.1.0-rc03, androidx.compose.animation:animation-core:1.1.0-rc03androidx.compose.animation:animation-graphics: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.animation:animation:1.1.0-rc01androidx.compose.animation:animation-core:1.1.0-rc01. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

Thay đổi API

  • Sử dụng AnimatedImageVector.animatedVectorResource thay vì animatedVectorResource để tải tệp tài nguyên <animated-vector>.
    • Sử dụng rememberAnimatedVectorResource thay vì AnimatedImageVector#painterFor để kết xuất AnimatedImageVector. (I9c300)

Phiên bản 1.1.0-beta04

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

Phát hành androidx.compose.animation:animation:1.1.0-beta04, androidx.compose.animation:animation-core:1.1.0-beta04androidx.compose.animation:animation-graphics: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 1.6.0 Kotlin

Phiên bản 1.1.0-beta03

Ngày 17 tháng 11 năm 2021

Phát hành androidx.compose.animation:animation:1.1.0-beta03, androidx.compose.animation:animation-core:1.1.0-beta03androidx.compose.animation:animation-graphics: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 phương thức sửa đổi mới Modifier.onPlaced cho phép theo dõi việc thay đổi vị trí. Do đó, bạn có thể thực hiện thêm một số thay đổi đối với mức chênh lệch của phương thức sửa đổi con dựa trên thay đổi về vị trí quan sát được. (I558fd)
  • Hỗ trợ contentKey trong Crossfade. ContentKey được dùng để kiểm tra sự cân bằng của hệ thống ảnh động. Do đó, bạn có thể đạt được sự khác biệt tuỳ chỉnh về trạng thái bằng cách chỉ định contentKey phù hợp với nhiều trạng thái.

    ContentKey cũng sẽ được dùng làm khoá để lưu và khôi phục nội dung. (I2e055, b/197907070)

Phiên bản 1.1.0-beta02

Ngày 3 tháng 11 năm 2021

Phát hành androidx.compose.animation:animation:1.1.0-beta02, androidx.compose.animation:animation-core:1.1.0-beta02androidx.compose.animation:animation-graphics:1.1.0-beta02. Phiên bản 1.1.0-beta02 bao gồm các thay đổi sau.

Sửa lỗi

  • Các API ảnh động mới để hỗ trợ công cụ. Cụ thể, các API này cho phép công cụ kiểm tra ảnh động và cấu hình của chúng trong một Transitions. (I4116e)

Phiên bản 1.1.0-beta01

Ngày 27 tháng 10 năm 2021

Phát hành androidx.compose.animation:animation:1.1.0-beta01, androidx.compose.animation:animation-core:1.1.0-beta01androidx.compose.animation:animation-graphics:1.1.0-beta01. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

Thay đổi API

  • Các API ảnh động mới để hỗ trợ công cụ. Cụ thể, các API này cho phép công cụ kiểm tra ảnh động và cấu hình của chúng trong một Transitions. (I4116e)

Phiên bản 1.1.0-alpha06

Ngày 13 tháng 10 năm 2021

Phát hành androidx.compose.animation:animation:1.1.0-alpha06, androidx.compose.animation:animation-core:1.1.0-alpha06androidx.compose.animation:animation-graphics:1.1.0-alpha06. Phiên bản 1.1.0-alpha06 bao gồm các thay đổi sau.

Phiên bản 1.1.0-alpha05

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

Phát hành androidx.compose.animation:animation:1.1.0-alpha05, androidx.compose.animation:animation-core:1.1.0-alpha05androidx.compose.animation:animation-graphics:1.1.0-alpha05. Phiên bản 1.1.0-alpha05 bao gồm các thay đổi sau.

Thay đổi API

  • EnterTransition, ExitTransition và một số API AnimatedVisibility đã được ổn định. Không còn thử nghiệm MutableTransitionState.isIdle. (I5072d)

  • Thay đổi có thể gây lỗi: lambda trong các nhà máy (factory) Enter/ExitSwitch đã được chuyển sang vị trí cuối cùng trong danh sách tham số. (I5072d)

Phiên bản 1.1.0-alpha04

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

Phát hành androidx.compose.animation:animation:1.1.0-alpha04, androidx.compose.animation:animation-core:1.1.0-alpha04androidx.compose.animation:animation-graphics:1.1.0-alpha04. Phiên bản 1.1.0-alpha04 bao gồm các thay đổi sau.

Phiên bản 1.1.0-alpha03

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

Phát hành androidx.compose.animation:animation:1.1.0-alpha03, androidx.compose.animation:animation-core:1.1.0-alpha03androidx.compose.animation:animation-graphics: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)

Phiên bản 1.1.0-alpha02

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

Phát hành androidx.compose.animation:animation:1.1.0-alpha02, androidx.compose.animation:animation-core:1.1.0-alpha02androidx.compose.animation:animation-graphics:1.1.0-alpha02. Phiên bản 1.1.0-alpha02 bao gồm các thay đổi sau.

Thay đổi API

  • StartOffset hiện được hỗ trợ trong epeatable và infiniteRepeatable, như một cách để trì hoãn thời gian bắt đầu hoặc tua nhanh ảnh động trước khi ảnh động bắt đầu. Mức bù trừ bắt đầu này sẽ không được lặp lại (Ic679f, b/195079908)
  • Chuyển đổi Enter/Exit mới cho quy mô. Chuyển đổi này có thể được dùng kết hợp với các loại Enter/ExitTransitions khác. (I372da, b/191325593)

Phiên bản 1.1.0-alpha01

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

Phát hành androidx.compose.animation:animation:1.1.0-alpha01, androidx.compose.animation:animation-core:1.1.0-alpha01androidx.compose.animation:animation-graphics:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Thay đổi API

  • AnimatedImageVector và các API liên quan hiện nằm trong mô-đun androidx.compose.animation:animation-graphics mới. (I60873)

Sửa lỗi

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.animation:animation:1.0.5androidx.compose.animation:animation-core: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.animation:animation:1.0.4androidx.compose.animation:animation-core: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.animation:animation:1.0.3androidx.compose.animation:animation-core: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.animation:animation:1.0.2androidx.compose.animation:animation-core: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.animation:animation:1.0.1androidx.compose.animation:animation-core: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.animation:animation:1.0.0androidx.compose.animation:animation-core: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.animation:animation:1.0.0-rc02androidx.compose.animation:animation-core:1.0.0-rc02. Phiên bản 1.0.0-rc02 bao gồm các thay đổi sau.

Phiên bản 1.0.0-rc01

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

Phát hành androidx.compose.animation:animation:1.0.0-rc01androidx.compose.animation:animation-core:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

Sửa lỗi

  • Di chuyển InfiniteAnimationPolicy sang androidx.compose.ui:ui (I5eb09, b/160602714)

Phiên bản 1.0.0-beta09

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

Phát hành androidx.compose.animation:animation:1.0.0-beta09androidx.compose.animation:animation-core:1.0.0-beta09. Phiên bản 1.0.0-beta09 bao gồm các thay đổi sau.

Thay đổi API

  • Thành phần kết hợp (composable) AnimatedContent mới. Cấu trúc này quản lý thay đổi nội dung bằng cách sử dụng ContentTransform có thể tuỳ chỉnh khi nhập nội dung mục tiêu mới và xoá nội dung ban đầu. Bạn có thể sử dụng nhiều cách kết hợp các tuỳ chọn chuyển đổi nhập và thoát để tạo giao diện và cảm quan tuỳ chỉnh. Trong quá trình chuyển đổi nội dung, AnimatedContent sẽ tự động thay đổi kích thước của nội dung sao cho phù hợp với nội dung đến. (I2c3df)
  • Xoá ManualFrameClock. Nếu bạn cần kiểm soát ảnh động, hãy sử dụng composeTestRule.mainClock. (I3c3e8, b/189951065)

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.animation:animation:1.0.0-beta08androidx.compose.animation:animation-core:1.0.0-beta08. Phiên bản 1.0.0-beta08 bao gồm các thay đổi sau.

Sửa lỗi

  • 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.animation:animation:1.0.0-beta07androidx.compose.animation:animation-core:1.0.0-beta07. Phiên bản 1.0.0-beta07 bao gồm các thay đổi sau.

Thay đổi API

  • API AnimatedVisibility mới hỗ trợ chế độ hiển thị sẽ được chỉ định trong MutableTransitionState. Việc này cũng cho phép quan sát các trạng thái ảnh động bên ngoài AnimatedVisibility qua currentStateisIdle.
    • Hỗ trợ chuyển đổi tệp con mới trong Transition
    • Hỗ trợ hoạt ảnh chuyển đổi thoát/nhập tùy chỉnh trong AnimatedVisibility bằng cách sử dụng AnimationScope.transition
    • Phương thức sửa đổi animateEnterExit mới có thể được truy cập qua tất cả tệp con của AnimatedVisibility
    • Ngừng sử dụng API AnimatedVisibility sử dụng tham số initiallyVisible (I702f3)

Phiên bản 1.0.0-beta06

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

Phát hành androidx.compose.animation:animation:1.0.0-beta06androidx.compose.animation:animation-core:1.0.0-beta06. Phiên bản 1.0.0-beta06 bao gồm các thay đổi sau.

Phiên bản 1.0.0-beta05

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

Phát hành androidx.compose.animation:animation:1.0.0-beta05androidx.compose.animation:animation-core:1.0.0-beta05. Phiên bản 1.0.0-beta05 bao gồm các thay đổi sau.

Sửa lỗi

  • Các tệp AndroidManifest từ ui-test- Manifest và ui-tooling-data hiện đã tương thích với Android 12 (I6f9de, b/184718994)

Phiên bản 1.0.0-beta04

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

Phát hành androidx.compose.animation:animation:1.0.0-beta04androidx.compose.animation:animation-core:1.0.0-beta04. Phiên bản 1.0.0-beta04 bao gồm các thay đổi sau.

Thay đổi API

  • Các phiên bản công khai của RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope đã bị xoá. (I4e83e, b/181869067)

Phiên bản 1.0.0-beta03

Ngày 24 tháng 3 năm 2021

Phát hành androidx.compose.animation:animation:1.0.0-beta03androidx.compose.animation:animation-core:1.0.0-beta03. Phiên bản 1.0.0-beta03 bao gồm các thay đổi sau.

Phiên bản 1.0.0-beta02

Ngày 10 tháng 3 năm 2021

Phát hành androidx.compose.animation:animation:1.0.0-beta02androidx.compose.animation:animation-core:1.0.0-beta02. Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.

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.animation:animation:1.0.0-beta01androidx.compose.animation:animation-core: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

  • 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() }.
    • Thay vì: Interaction.Pressed in interactionState, bạn nên sử dụng các hàm phần mở rộng trên InteractionSource, chẳng hạn như InteractionSource.collectIsPressedAsState().
    • Đối với các trường hợp sử dụng phức tạp, bạn có thể sử dụng InteractionSource.interactions để quan sát luồng tương tác. Hãy xem tài liệu và ví dụ về InteractionSource để biết thêm thông tin.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Các gói của phương thức smoothScrollBy và scrollBy đã thay đổi thành androidx.compose.foundation.gestures.* (I3f7c1, 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)
  • 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)
  • 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)
  • Xoá các API animate, animatedValue, AnimatedValue (If27bc, b/177457083)
  • Xoá AnimationEndReason.Interrupted. CancellationException sẽ được gửi ra nếu ảnh động bị gián đoạn. (I2cbbc, b/179695417)
  • Xoá API TargetAnimation. (If47d1, b/177457083)

Phiên bản 1.0.0-alpha12

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

Phát hành androidx.compose.animation:animation:1.0.0-alpha12androidx.compose.animation:animation-core: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 cho các phần phụ thuộc mới. (I849cd)
  • Đổi tên Bounds thành DpRect (I4b32a)
  • Hợp nhất tên tham số cho AnimationSpec thành animationSpec trên hệ thống ảnh động. Đồng thời, ràng buộc Enter/ExitTransition chấp nhận FiniteAnimationSpec. (Ie47c5, b/177457083)
  • Animatable.snapTo và Animatable.stop hiện là các hàm tạm ngưng (If4288)
  • 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 trình lưu tuỳ chỉnh, thì bây giờ bạn cần sử dụng một nạp chồng mới của rememberSaveable có tham số stateSaver. Cách sử dụng sẽ có dạng như sau: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Chữ ký của phương thức Crossfade được cập nhật để nhất quán hơn với phần còn lại của hệ thống ảnh động. (Ib05ed, b/177457083)
  • 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)
  • Cập nhật API Modifier.animateContentSize để nhất quán với phần còn lại của hệ thống ảnh động. (I0bf75, b/177457083)
  • AnimatedValue/Float hiện không được dùng nữa. Thay vào đó, vui lòng sử dụng Animatable. (I71345, b/177457083)
  • 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)
  • 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)
  • 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)
  • Thời gian phát trong ảnh động hiện được hợp nhất tới nano giây (If776a)
  • Cấu phần phần mềm 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)
  • Thêm Animation.isInfiniteVectorizedAnimationSpec.isInfinite để báo hiệu nếu ảnh động là vô hạn hay không. Việc này có thể được dùng trong quá trình triển khai ảnh động để có cách xử lý đặc biệt cho các ảnh động như vậy. Ví dụ: bạn có thể hiển thị một thông báo "thời gian còn lại" đặc biệt hoặc hủy một ảnh động trong quá trình kiểm tra, để tránh phải chờ vô hạn tình trạng không hoạt động. (Iebb05, b/151940543)
  • Sử dụng loại Long thay vì Uptime làm loại thời gian ảnh động (Ie3aa7, b/177420019)

Phiên bản 1.0.0-alpha11

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

Phát hành androidx.compose.animation:animation:1.0.0-alpha11androidx.compose.animation:animation-core:1.0.0-alpha11. Phiên bản 1.0.0-alpha11 bao gồm các thay đổi sau.

Thay đổi API

  • Tính năng chuyển đổi TransitionDefinition-based hiện không được dùng nữa (I0ac57)
  • Một trường nhãn được thêm vào Transition và các ảnh động để hiển thị chúng trong các công cụ (I619fb)
  • 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)
  • InfiniteTransition mới chạy vô số các ảnh động con. (I1da81)
  • Thay đổi giao diện tham số trạng thái Material để có các hàm @Composable trả về State<T>. Thêm Animatable.asState() để giúp chuyển đổi một Animatable thành một State dễ dàng hơn. Đồng thời thay đổi animateElevation thành phần mở rộng tạm ngưng trên Animatable. (If613c)

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)
  • Trạng thái ban đầu trong updateTransition hiện đã được hỗ trợ (Ifd51d)
  • Tham số mô tả nội dung đã được thêm vào Image (Hình ảnh) và Icon (Biểu tượng). Tham số này được dùng để cung cấp thông tin mô tả cho các dịch vụ hỗ trợ tiếp cận (I2ac4c)
  • invalidate and compositionReference() hiện không được dùng nữa và thay vào đó là currentRecomposeScope và rememberCompositionReference tương ứng. (I583a8)
  • 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)
  • 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)
  • Easing đã được thay đổi thành giao diện chức năng (Ib14e5)
  • Phương thức nhà máy 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)
  • 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)

Phiên bản 1.0.0-alpha10

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

Phát hành androidx.compose.animation:animation:1.0.0-alpha10androidx.compose.animation:animation-core:1.0.0-alpha10. Phiên bản 1.0.0-alpha10 bao gồm các thay đổi sau.

Thay đổi API

  • 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)
  • Đổi tên Position thành DpOffset và xoá getDistance() (Ib2dfd)
  • Xoá api công khai Any.identityHashCode() (I025d7)

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

Phiên bản 1.0.0-alpha09

Ngày 16 tháng 12 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha09androidx.compose.animation:animation-core:1.0.0-alpha09. Phiên bản 1.0.0-alpha09 bao gồm các thay đổi sau.

Thay đổi API

  • Chuyển Dp.VectorConverter, Position.VectorConverter, v.v. sang animation-core, và không dùng VectorConveters cũ nữa (If0c4b)
  • Chúng tôi đã ra mắt một bộ API Transition hoàn toàn mới, giúp bạn dễ dàng sử dụng và hỗ trợ các ảnh động được thêm và các mục tiêu ảnh động được tính toán một cách sinh động. Những API này được đánh dấu đang thử nghiệm để dễ dàng phân biệt với API TransitionDefinition-based. (Ia7fe3)

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)
  • Không dùng LazyColumnFor, LazyRowFor, LazyColumnForIndexed và LazyRowForIndexed 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)
  • Hàm infiniteRepeatable mới dùng để tạo một InfiniteRepeatableSpec (I668e5)
  • Xoá chú thích ExperimentalPointerInput (Ia7a24)

Phiên bản 1.0.0-alpha08

Ngày 2 tháng 12 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha08androidx.compose.animation:animation-core:1.0.0-alpha08. Phiên bản 1.0.0-alpha08 bao gồm các thay đổi sau.

Thay đổi API

  • 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 làm 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)
  • Xoá các API trước đây không được dùng nữa:
    • Modifier.onPositioned đã bị xoá, hãy sử dụng Modifier.onGloballyPositioned.
    • Modifier.onDraw đã bị xoá, hãy sử dụng Modifier.onDrawBehind.
    • Modifier.plus đã bị xoá, hãy sử dụng Modifier.then.
    • Color.Unset đã bị xoá, hãy sử dụng Color.Unspecified.
    • Lớp PxBounds đã bị xoá, hãy sử dụng Rect.
    • (Ie9d02, b/172562222)
  • Tạm thời thêm tuỳ chọn để cho phép TestAnimationClock được điều khiển bằng MonotonicFrameClock (I1403b, b/173402197)

Sửa lỗi

  • Đổi tên Modifier.drawLayer thành Modifier.graphicsLayer Đồng thời cập nhật các lớp liên quan tới GraphicsLayer dựa trên phản từng phải hồi của hội đồng API. (I0bd29, b/173834241)
  • Thêm API Modifier.scale/rotate để thuận tiện hơn cho drawLayer.
    • Đổi tên Modifier.drawOpacity thành Modifier.alpha
    • Đổi tên Modifier.drawShadow thành Modifier.shadow (I264ca, b/173208140)
  • Để 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)
  • Đổi tên phương thức sửa đổi offsetPx 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)
  • Các API mới để chạy ảnh động trong coroutine (Ied662)
  • 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)
  • 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)
  • Hàm RestorableStateHolder.withRestorableState đã được đổi tên thành RestorableStateProvider (I66640)
  • Giao diện Alignment đã được cập nhật và đi vào hoạt động. (I46a07, b/172311734)

Phiên bản 1.0.0-alpha07

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

Phát hành androidx.compose.animation:animation:1.0.0-alpha07androidx.compose.animation:animation-core:1.0.0-alpha07. Phiên bản 1.0.0-alpha07 bao gồm các thay đổi sau.

Sửa lỗi

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

Phiên bản 1.0.0-alpha06

Ngày 28 tháng 10 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha06androidx.compose.animation:animation-core:1.0.0-alpha06. Phiên bản 1.0.0-alpha06 bao gồm các thay đổi sau.

Thay đổi API

  • Bật tính năng chuyển đổi trong ComposeTestRule; xoá tùy chọn để bật con trỏ nhấp nháy từ ComposeTestRule. (If0de3)

Phiên bản 1.0.0-alpha05

Ngày 14 tháng 10 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha05androidx.compose.animation:animation-core:1.0.0-alpha05. Phiên bản 1.0.0-alpha05 bao gồm các thay đổi sau.

Thay đổi API

  • Giao diện và các lớp con mới của Animation: Các lớp này lưu trữ các điều kiện bắt đầu và kết thúc cho ảnh động, do đó, chúng chỉ cho phép truy vấn giá trị và vận tốc thông qua thời gian chạy (Ie95bd, b/163329867)

Sửa lỗi

  • OnPositionedModifier được đổi tên thành OnGloballyPositionedModifier và onPositioned() được đổi tên thành onGloballyPositioned(). (I587e8, b/169083903)
  • Ngừng sử dụng các API contentColor() và currentTextStyle(), đồng thời thay thế các API đó bằng các môi trường xung quanh AmbientContentColor và AmbientTextStyle tương ứng. 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)

Phiên bản 1.0.0-alpha04

Ngày 1 tháng 10 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha04androidx.compose.animation:animation-core:1.0.0-alpha04. Phiên bản 1.0.0-alpha04 bao gồm các thay đổi sau.

Thay đổi API

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

Sửa lỗi

  • Cập nhật nhiều API Đồ họa
    • 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 tọa độ trục thay cho các tham số nổi riêng biệt của các tọa độ x/y trong DrawScope và DrawTransform
    • Xoá phương thức Rect.expandToInclude và Rect.join
    • Cập nhật tài liệu về Bán kính để hiển thị hình bầu dục ngoài hình elip
    • Thêm tài liệu để cho biết trình tạo công khai cho lớp Bán kính nội dòng sẽ không được gọi trực tiếp mà thay vào đó các đối tượng Bán kính cần được khởi tạo thông qua trình tạo hàm
    • Xoá các API RoundRect để truy vấn topRight, bottomRight, bottomCenter, v.v.
    • Ngừng sử dụng Rect.shift thay vào đó là Rect.translate
    • Xoá các API RoundRect.grow và Rect.shrink
    • Đổi tên RoundRect.outerRect thành Rect.boundingRect
    • Xoá các phương thức RoundRect.middleRect/tallMiddleRect/wideMiddleRect và Rect.isStadium
    • Đổi tên RoundRect.longestSide thành RoundRect.maxDimension
    • Đổi tên RoundRect.shortestSide thành RoundRect.minDimension
    • Thay đổi RoundRect.center thành một thuộc tính thay vì một hàm
    • Cập nhật hàm khởi tạo RoundRect để sử dụng các thuộc tính Bán kính thay vì các tham số riêng lẻ cho giá trị bán kính x/y
    • Xoá các API kích thước giả định đó là một hình chữ nhật với gốc tại điểm 0,0
    • Thêm một API phá huỷ vào Radius
    • Di chuyển nhiều hàm tiện ích mở rộng RoundRect để trở thành thuộc tính thay thế
    • (I8f5c7, b/168762961)
  • foundation.Box không còn được dùng nữa. Thay vào đó hãy dùng foundation.layout.Box. (Ie5950, b/167680279)
  • Stack đã được đổi tên thành Box Box đã tồn tại trước đây sẽ không được dùng nữa, thay vào đó là Box mới trong compose.foundation.layout. Hành vi của Box mới là các thành phần con cháu xếp chồng lên nhau khi có nhiều thành phần con cháu. Điều này khác với Box trước có hành vi tương tự như Column. (I94893, b/167680279)
  • Ngừng sử dụng các tham số trang trí Box. Nếu bạn muốn trang trí/khoảng đệm trên hộp, hãy sử dụng Bộ sửa đổi (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Chúng tôi đã chặn tính năng nhập tĩnh nội dung của phạm vi bố cục (ví dụ: alignWithSiblings trong RowScope). Một phương án thay thế phạm vi rõ ràng nên được sử dụng: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Phiên bản 1.0.0-alpha03

Ngày 16 tháng 9 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha03androidx.compose.animation:animation-core:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Sửa lỗi

  • Việc sử dụng gravity (trọng lực) được đổi tên nhất quán để căn chỉnh trong API bố cục. (I2421a, b/164077038)

Phiên bản 1.0.0-alpha02

Ngày 2 tháng 9 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha02androidx.compose.animation:animation-core:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Thay đổi API

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

Sửa lỗi

  • onPreCommit không còn được sử dụng; onCommit hiện có các hành vi của onPreCommit's.

    onCommit và onActive hiện đang chạy trong cùng một khung dàn dựng mà những sự thay đổi thành phần được xác nhận (commit) ở trong thay vì ở đầu khung dàn dựng tiếp theo. (I70403)

Phiên bản 1.0.0-alpha01

Ngày 26 tháng 8 năm 2020

Phát hành androidx.compose.animation:animation:1.0.0-alpha01androidx.compose.animation:animation-core: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.animation:animation:0.1.0-dev17androidx.compose.animation:animation-core:0.1.0-dev17. Phiên bản 0.1.0-dev17 bao gồm các thay đổi sau.

Tính năng mới

Thay đổi API

  • Offset đã trở thành lớp nội dòng (Iaec70)
  • IntOffset hiện là lớp nội dòng (Iac0bf)
  • IntSize hiện là lớp nội dòng (I2bf42)
  • thành phần kết hợp AnimatedVisibilty hoạt hoá sự xuất hiện và biến mất của nội dung con.

    EnterTransition và ExitTransition được giới thiệu để làm việc với thành phần kết hợp AnimatedVisibilty để cung cấp 3 loại ảnh động xuất hiện và biến mất: làm mờ, trượt và phóng to/thu nhỏ nội dung. Bạn có thể kết hợp các loại ảnh động khác nhau để có giao diện và cảm nhận riêng biệt. (Idda11)

  • Chúng tôi đã ngừng sử dụng PxBounds và thay bằng Rect. Cập nhật tất cả cách sử dụng PxBounds bằng hình chữ nhật và thêm đúng cách đã thay thế/thay thế bằng chú thích để hỗ trợ việc di chuyển. (I37038, b/162627058)

Sửa lỗi

  • 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)
  • 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 ủy quyền thuộc tính loại. (Ia5727)

Phiên bản 0.1.0-dev16

Ngày 5 háng 8 năm 2020

Phát hành androidx.compose.animation:animation:0.1.0-dev16androidx.compose.animation:animation-core:0.1.0-dev16. Phiên bản 0.1.0-dev16 bao gồm các thay đổi sau.

Thay đổi API

  • Các trình chuyển đổi vectơ được tích hợp sẵn dùng để chuyển đổi các đơn vị tích hợp hiện có thể truy cập được thông qua Foo.VectorConverter. Ví dụ: Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, v.v. (I3e273)
  • Hỗ trợ tình nghe cuối trong Modifier.animateContentSize() để khi sự kiện thay đổi kích thước ảnh động kết thúc, người nghe sẽ được thông báo cùng với kích thước bắt đầu/kết thúc của ảnh động. (I277b2)
  • Phương thức sửa đổi animateContentSize mới, hoạt hoá sự thay đổi kích thước bố cục của phương thức sửa đổi con. (Ieffdc)
  • 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 hiện là ManualFrameClock. (I111c7, b/161247083)

Sửa lỗi

  • Các API dành cho hỗ trợ từ phải sang trái đã được cập nhật. Đã thêm LayoutDirectionAmbient sử dụng để đọc và thay đổi hướng bố cục. Xoá Modifier.rtl và Modifier.ltr. (I080b3)
  • Yêu cầu chỉ định rõ loại T cho transitionDefinition. (I1aded)
  • Gói foundation.shape.corner được làm phẳng thành foundation.share (I46491, b/161887429)
  • Modifier.plus đã được ngưng sử dụng. Thay vào đó, hãy dùng Modifier.then. "Then" có tín hiệu rõ ràng hơn về thứ tự, đồng thời nghiêm cấm nhập Modifier.padding().background() + anotherModifier, khiến cho chuỗi bị phá vỡ và khó đọc hơn (Iedd58, b/161529964)
  • Modifier.drawBackground được đổi tên thành Modifier.background (I13677)

Phiên bản 0.1.0-dev15

Ngày 22 tháng 7 năm 2020

Phát hành androidx.compose.animation:animation:0.1.0-dev15androidx.compose.animation:animation-core:0.1.0-dev15. Phiên bản 0.1.0-dev15 bao gồm các thay đổi sau.

Cập nhật phần phụ thuộc

  • Để sử dụng phiên bản 0.1.0-dev15 của Compose, bạn cần cập nhật các phần phụ thuộc theo đoạn mã mới hiển thị ở trên trong phần Khai báo phần phụ thuộc.

Thay đổi API

  • API chuyển đổi đã được thay đổi để trả về một TransitionState thay vì chuyển TransitionState sang các tệp con. Điều này giúp API nhất quán hơn với các API animate(). (I24e38)
  • Thêm tham số sửa đổi cho Crossfade (I87cfe, b/159706180)
  • Sử dụng AnimationSpec thay vì AnimationBuilder trong các API cấp cao nhất để làm rõ khái niệm về tham số ảnh động tĩnh
    • Cải thiện DSL chuyển đổi bằng cách xoá yêu cầu lambda cho việc tạo AnimationSpecs, chẳng hạn như tween, spring. Thay vào đó, chúng trực tiếp lấy các tham số của hàm khởi tạo.
    • Cải thiện khả năng dễ sử dụng của AnimationSpec khi mở các hàm khởi tạo thay vì dựa vào các 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 sự thay đổi loại không cần thiết và nén chồng phương thức (để hỗ trợ cả Long và Int). (Ica0b4)
  • Thay thế việc sử dụng IntPx bằng Int. Thay thế IntPxPosition bằng IntOffset. Thay thế IntPxSize bằng IntSize. (Ib7b44)
  • Để thống nhất số lượng lớp dùng để đại diện cho thông tin kích thước, hãy chuẩn hoá cách sử dụng lớp Size thay vì pxSize. Điều này mang lại lợi ích của một lớp cùng dòng để tận dụng một giá trị long để gói 2 giá trị float đại diện cho chiều rộng và chiều cao 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 cùng dòng để tận dụng một giá trị long để gói 2 giá trị float đại diện cho độ lệch x và y được biểu thị dưới dạng floats. (I3ad98)
  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I086f4)
  • Thêm hỗ trợ animate() cho Dp, Px, Size, Position, Bounds, PxPosition, PxSize, PxBounds, IntPx, IntPxSize, IntPxPosition, IntPxBounds, và AnimationVector (Ib7518)
  • Crossfade hiện chấp nhận tham số tuỳ chỉnh AnimationBuilder để cho phép định cấu hình ảnh động (I6d6e0)
  • 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 cho giá trị rỗng (Iabaa7)
  • 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)
  • Chế độ lặp lại mới: Đảo ngược. Chế độ này đảo ngược chế độ lặp lại trước đó khi ảnh động lặp lại trong RepeatableSpec hoặc VectorizedRepeatableSpec. (Ibe0f5)
  • Các bổ sung API cho ManualAnimationClock hasObservers: Boolean và tham số hàm khởi tạo dispatchOnSubscribe: Boolean (Iaa134)
  • Thêm các API để nhận các giới hạn tối thiểu/tối đa trong AnimatedFloat (Icd9cc)

Sửa lỗi

  • 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)
  • Giới thiệu API ảnh động không có trạng thái cấp thấp. Các API này (I63bf7)
  • Thành phần kết hợp Recompose này không còn là một đoạn trừu tượng hữu ích nữa. Hầu hết quá trình tái cấu trúc nên xảy ra như là kết quả của các phép gán MutableState. Đối với những dữ liệu khác, bạn nên dùng hàm invalidate để kích hoạt việc sắp xếp lại phạm vi hiện tại. (Ifc992)
  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel. Xoá toàn bộ lớp Px (I3ff33)
  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (Id3434)
  • Crossfade hiện có thể hoạt động với giá trị rỗng dưới dạng giá trị ban đầu (Iad6a4, b/155947711)
  • Thay thế việc sử dụng lớp Px trong nhiều lớp Compose như một phần của nỗ lực tái cấu trúc lớn để chỉ dựa vào Dp và các loại dữ liệu nguyên thuỷ cho các tham số pixel (I19d02)
  • Thố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 lớp con LayoutDirection Deleted DrawScope trong ContentDrawScopePainter 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 )
  • Cập nhật các API compose để 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)
  • Bổ sung tham số verticalGravity và horizontalGravity parameters cho Hàng và Cột tương ứng. (I7dc5a)
  • mô-đun ui-text được đổi tên thành ui-text-core (I57dec)
  • Cải thiện API DrawModifier:
    • Đã tạo phạm vi người 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ũ
    • ContentDrawScope có phương thức drawContent() (Ibaced, b/152919067)
  • 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ử ủy 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á ủy 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)
  • ColoredRect không còn được sử dụng. Thay vào đó, hãy sử dụng Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)
  • Thay thế Bộ điều chỉnh 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)
  • 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)
  • Thay thế hàm Opacity có thể khả năng kết hợp thành phương thức sửa đổi drawOpacity. (I5fb62)
  • Các thử nghiệm sử dụng AndroidComposeTestRule giờ đây cung cấp một đồng hồ ảnh động ở gốc thành phần cho phép tạm dừng, tiếp tục và nâng cao theo cách thủ công. (Id54c5)
  • Hỗ trợ hướng từ phải sang trái trong phương thứ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)
  • Thêm phương thức sao chép vào các loại lớp nội tuyến khác nhau, bao gồm:
    • Chênh lệch
    • Kích thước
    • Bán kính
    • Chuyển động
    • TransformOrigin
    • Ngừng sử dụng phương thức đối tượng đi kèm Size.copy và thay bằng phương thức sao chép phiên bản (Ife290, b/159905651)
  • androidx.compose.ViewComposer được chuyển sang androidx.ui.node.UiComposer androidx.compose.Emittable đã được xoá. Nội dung này dư thừa so với ComponentNode. 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 trả về bởi setContent. 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)