Hình dạng trong Jetpack Compose Glimmer

Các thiết bị XR được hỗ trợ
Hướng dẫn này giúp bạn xây dựng các trải nghiệm cho những loại thiết bị XR sau.
Kính hiển thị

Trong Jetpack Compose Glimmer, các nền tảng sử dụng hình dạng để xác định ranh giới trực quan và độ tròn của chúng. Lớp Shapes cung cấp nhiều mức độ bo tròn dành cho nhiều loại thành phần.

Hình 1. Ví dụ về các hình dạng lớn, vừa và nhỏ trong Jetpack Compose Glimmer.

Danh mục hình dạng

Lớp GlimmerTheme xác định 3 kích thước hình dạng tiêu chuẩn:

  • Nhỏ: Hình dạng có 4 góc bằng nhau. Được dùng cho các thành phần như thẻ. Theo mặc định, đây là RoundedCornerShape của 24.dp.
  • Trung bình: Hình dạng có 4 góc có cùng kích thước, nằm giữa kích thước nhỏ và lớn. Đây là hình dạng thường dùng nhất và là hình dạng mặc định được dùng trong nền tảng. Theo mặc định, đây là RoundedCornerShape của 36.dp.
  • Lớn: Hình dạng có 4 góc bo tròn hoàn toàn. Hình dạng này được dùng cho các thành phần như nút. Theo mặc định, đây là CircleShape.

Ví dụ: Lấy hình dạng từ GlimmerTheme và áp dụng cho các thành phần

Trước tiên, hãy lấy các hình dạng đã xác định từ GlimmerTheme.shapes:

@Composable
fun ShapesSample() {
    val shapes = GlimmerTheme.shapes
    GlimmerLazyColumn {
        item { ShapeItem("small", shape = shapes.small) }
        item { ShapeItem("medium", shape = shapes.medium) }
        item { ShapeItem("large", shape = shapes.large) }
    }
}

Tiếp theo, bạn có thể áp dụng các hình dạng này cho một số thành phần:

@Composable
private fun ShapeItem(name: String, shape: Shape, modifier: Modifier = Modifier) {
    Box(
        modifier.aspectRatio(2.5f).fillMaxWidth().surface(shape = shape),
        contentAlignment = Alignment.Center,
    ) {
        Text(name)
    }
}

Tuỳ chỉnh hình dạng

Lớp Shapes@Immutable. Bạn có thể tạo bản sao của các hình dạng trong giao diện hiện có và ghi đè các giá trị cụ thể bằng cách sử dụng hàm sao chép. Hãy làm như vậy để duy trì cấu trúc của giao diện trong khi điều chỉnh bán kính cụ thể cho thương hiệu của ứng dụng.

Ví dụ: Ghi đè các giá trị hình dạng cụ thể

Đoạn mã sau đây ghi đè các giá trị hình dạng cụ thể:

val customShapes = GlimmerTheme.shapes.copy(
    small = RoundedCornerShape(12.dp),
    medium = RoundedCornerShape(20.dp)
)

Giá trị mặc định

Nếu không được chỉ định trong GlimmerTheme, hệ thống sẽ mặc định sử dụng các giá trị sau:

Mã thông báo Hình dạng mặc định Kích thước hoặc bán kính

small

RoundedCornerShape

24.dp

medium

RoundedCornerShape

36.dp

large

CircleShape

Bo tròn hoàn toàn