- vừa được xem lúc

Jetpack Compose 1.8 Có Gì Mới?

0 0 1

Người đăng: Saitaman

Theo Viblo Asia

✅ Cập nhật nhanh

Tính năng Trạng thái
Autofill 🆕 Mới
Text: AutoSize & Ellipsis 🆕 Mới
Annotated HTML Lists 🆕 Mới
onLayoutRectChanged 🆕 Mới
animateBounds 🆕 Mới
Stabilized APIs 🔒 Đã ổn định
Deprecation: ContextualFlowRow/Column ⚠️ Bị loại bỏ
Core fixes & Accessibility ✅ Cải thiện

✍️ Autofill: Tự động điền trong Compose

Dễ dàng tích hợp autofill vào TextField:

TextField( state = rememberTextFieldState(), modifier = Modifier.semantics { contentType = ContentType.Username }
)

✳️ Ghi dữ liệu:

  • Tự động: khi người dùng điều hướng khỏi màn hình.
  • Thủ công: gọi commit() từ AutofillManager.

📄 Xem thêm: Autofill in Compose Documentation


🆕 Text Enhancements

📏 Tự động co giãn chữ với autoSize

BasicText( text = "Hello World", maxLines = 1, autoSize = TextAutoSize.StepBased()
)

**************

🔠 Ellipsis mới:

Hiển thị dấu ba chấm ở đầu hoặc giữa dòng:

Text(text, maxLines = 1, overflow = TextOverflow.StartEllipsis)
Text(text, maxLines = 1, overflow = TextOverflow.MiddleEllipsis)

image.png

📝 Hỗ trợ HTML nâng cao:

Giờ đây có thể hiển thị unordered list (bullet list):

Text( AnnotatedString.fromHtml( """ <ul> <li>Hello</li> <li>World</li> </ul> """ )
)

image.png


👁️‍🗨️ Theo dõi hiển thị với onLayoutRectChanged

Thay thế nhẹ nhàng cho onGloballyPositioned – ít tốn tài nguyên, cho phép debounce/throttle:

Modifier.onLayoutRectChanged { rect -> // Gọi khi kích thước/hiển thị thay đổi
}

🔜 Compose 1.9 sẽ cung cấp API cấp cao hơn để theo dõi composable trên màn hình.


🌀 Animation mới với animateBounds

Dễ dàng tự động animate vị trí và kích thước khi thay đổi bên trong LookaheadScope:

Box( Modifier .animateBounds(lookaheadScope = this@LookaheadScope)
)

animatebounds.gif

🎥 Tương tự như "shared element transition" nhưng đơn giản hơn.


🔒 Ổn định API: giảm từ 172 xuống 70

Google đã giảm số lượng API gắn nhãn @Experimental trong Compose UI/Foundation 1.8 → tăng sự ổn định cho nhà phát triển.


⚠️ Deprecation: ContextualFlowRow / Column

Các API ContextualFlowRowContextualFlowColumn đã bị deprecated do thiếu tối ưu:

👉 Khuyến nghị: copy mã nguồn cũ nếu vẫn cần sử dụng.

Trong khi đó:

  • FlowRowFlowColumn đã ổn định
  • ❌ Tham số overflow của Flow APIs cũng đã bị loại bỏ

🔧 Cải tiến khác

  • Accessibility checks trong test: dùng enableAccessibilityChecks
  • 🖼️ Dialogs full screen: giờ đây sẽ vẽ ra sau hệ thống bars
  • 🔍 ClickableText testing: dễ test link với performFirstLinkClick()
  • 🌀 Custom overscroll: hỗ trợ truyền OverscrollEffect vào list

🛠️ Cách nâng cấp

Sử dụng BOM mới:

implementation(platform("androidx.compose:compose-bom:2025.04.01"))

⚠️ Nếu không dùng BOM, hãy nâng foundationui cùng lúc để tránh lỗi autofill.


📣 Lời kết

Google tiếp tục cải thiện Compose qua phản hồi từ cộng đồng.
Hãy tiếp tục gửi báo cáo lỗi & yêu cầu tính năng qua issue tracker.

🎉 Happy Composing!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Android reminder notifications

Lời mở đầu. Kể từ API 19, tất cả các hàm lặp của AlarmManager đều không chính xác.

0 0 29

- vừa được xem lúc

Android Jetpack Compose - Implement splash screen using Splash Screen API

TLDR. Tổng hợp cách thực hiện Splash screen trên Android. Technical stack sử dụng bao gồm:. .

0 0 24

- vừa được xem lúc

Android Jetpack Compose - Navigation Component part 1

TLDR;. Các mobile app gần như sẽ có nhiều hơn một màn hình chức năng.

0 0 29

- vừa được xem lúc

Background Work Với WorkManager

Tổng quan. Trong bài viết này chúng ta sẽ tìm hiểu về WorkManager là gì và áp dụng WorkManager vào một sample project được viết bằng Jetpack compose.

0 0 17

- vừa được xem lúc

Advance WorkManager (Part II)

Trong Part I chúng ta đã tìm hiểu những kiến thức cơ bản về WorkManager. . Làm sao để tạo unique work . Làm thế nào để cancel Work.

0 0 15

- vừa được xem lúc

Sử dụng ConstraintLayout trong Jetpack Compose

Giới thiệu. Đến nay, chúng ta có thể đã làm việc với ConstraintLayout trong các dự án Android của mình.

0 0 26