Chuyển đến nội dung

Tùy chỉnh ​

Indicator nào cũng nhận cùng bốn loại thiết lập: params, color, colors và kích thước. Bạn thử ngay bên dưới rồi copy code cho nền tảng của mình.

Params
3
0.30
Màu
1.00×
64px
import { LoaderKit } from '@loader-kit/web/react';

<LoaderKit
  indicator="BallPulse"
  size={64}
/>

Params ​

Một số indicator khai báo params: các con số có tên và có giá trị mặc định. BallPulse có count (3) và minScale (0.3). Bạn chỉ cần truyền những giá trị muốn đổi, phần còn lại giữ mặc định.

html
<loader-kit indicator="BallPulse" params='{"count": 5, "minScale": 0.5}'></loader-kit>
ts
const view = new LoaderKitView(host, {
  indicator: 'BallPulse',
  params: { count: 5, minScale: 0.5 },
});
kotlin
loader.indicator = "BallPulse"
loader.params = mapOf("count" to 5.0, "minScale" to 0.5)
kotlin
LoaderKitIndicator(
    indicator = "BallPulse",
    params = mapOf("count" to 5.0, "minScale" to 0.5),
)
swift
let loader = LoaderKitView(indicator: "BallPulse")
loader.params = ["count": 5, "minScale": 0.5]
swift
LoaderKitIndicator("BallPulse", params: ["count": 5, "minScale": 0.5])
csharp
indicator.Indicator = "BallPulse";
indicator.Params = new Dictionary<string, double> { ["count"] = 5, ["minScale"] = 0.5 };

Các quy tắc áp dụng trên mọi nền tảng:

  • Tên param mà indicator không khai báo sẽ bị bỏ qua. Bạn có thể đổi indicator mà vẫn giữ nguyên params.
  • Các giá trị đếm (count) được làm tròn tới số nguyên gần nhất và tối thiểu là 1.
  • Giá trị params không bị kiểm tra phạm vi. Hãy giữ kích thước, count và độ dày nét luôn dương: spec không quy định engine sẽ vẽ gì với giá trị nằm ngoài phạm vi.
  • Đổi params sẽ chạy lại animation từ đầu chu kỳ.

Danh sách params xem ở Indicator có sẵn, còn cách khai báo params trong spec của riêng bạn xem ở Params.

Color ​

Một màu duy nhất tô cho mọi phần tử. Các track opacity sẽ nhân vào kênh alpha của màu này.

html
<loader-kit indicator="BallPulse" color="#10b981"></loader-kit>

<!-- Không có thuộc tính color thì indicator dùng CSS color của phần tử -->
<loader-kit indicator="BallPulse" style="color: var(--brand)"></loader-kit>
ts
view.color = '#10b981';   // màu CSS bất kỳ; null nghĩa là currentColor
xml
<io.github.maitrungduc1410.loaderkit.LoaderKitView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:indicatorColor="?attr/colorPrimary" />
kotlin
loader.color = Color.MAGENTA
kotlin
LoaderKitIndicator("BallPulse", color = MaterialTheme.colorScheme.primary)
swift
loader.color = .systemBlue
swift
LoaderKitIndicator("BallPulse").color(.accentColor)
xml
<lk:LoaderKitIndicator Indicator="BallPulse" Color="MediumSeaGreen" />

Màu mặc định:

Nền tảngMặc định
WebCSS color của phần tử host (currentColor)
Android Viewtheme attribute android:colorForeground
Composeđen, hoặc trắng khi hệ thống đang bật dark mode
iOS, macOSsystemGray
Windowstrắng

Trên các nền tảng Apple, các dynamic system color như .label sẽ tự đổi theo giao diện sáng và tối.

Colors ​

colors cho mỗi phần tử một màu riêng. Phần tử i dùng colors[i mod colors.length], nên danh sách ngắn sẽ được lặp lại. Khi colors được đặt và không rỗng, nó được ưu tiên hơn color.

html
<loader-kit indicator="BallPulse" colors="#f43f5e, #f59e0b, #10b981"></loader-kit>
ts
view.colors = ['#f43f5e', '#f59e0b', '#10b981'];
kotlin
loader.colors = intArrayOf(Color.RED, Color.YELLOW, Color.GREEN)
kotlin
LoaderKitIndicator("BallPulse", colors = listOf(Color.Red, Color.Yellow, Color.Green))
swift
loader.colors = [.systemRed, .systemOrange, .systemGreen]
swift
LoaderKitIndicator("BallPulse").colors([.red, .orange, .green])
csharp
indicator.Colors = new[] { Colors.Tomato, Colors.Gold, Colors.MediumSeaGreen };

Thứ tự phần tử

Phần tử được đánh số theo thứ tự vẽ. Với một hàng là từ trái sang phải, với lưới là lần lượt từng hàng, còn với vòng tròn thì bắt đầu từ bên phải và đi theo chiều kim đồng hồ. Nếu indicator có nhiều part, số thứ tự sẽ nối tiếp từ part này sang part sau.

Kích thước ​

Đặt kích thước view theo cách quen thuộc trên từng nền tảng. Indicator được vẽ trong hình vuông lớn nhất vừa với view, căn giữa, nên không bao giờ bị kéo giãn. Nếu không đặt kích thước, view có kích thước 40 x 40.

html
<loader-kit indicator="BallPulse" style="width: 64px; height: 64px"></loader-kit>
xml
<io.github.maitrungduc1410.loaderkit.LoaderKitView
    android:layout_width="64dp"
    android:layout_height="64dp"
    android:padding="8dp"
    app:indicator="BallPulse" />
kotlin
LoaderKitIndicator("BallPulse", Modifier.size(64.dp))
swift
loader.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    loader.widthAnchor.constraint(equalToConstant: 64),
    loader.heightAnchor.constraint(equalToConstant: 64),
])
swift
LoaderKitIndicator("BallPulse").frame(width: 64, height: 64)
xml
<lk:LoaderKitIndicator Indicator="BallPulse" Width="64" Height="64" />

Trên Android, indicator được vẽ bên trong padding. Trong SwiftUI, hãy gọi các modifier của LoaderKit (color, speed, ...) trước các modifier của SwiftUI như frame.

Đổi màu hay kích thước không bao giờ làm animation chạy lại từ đầu.

Phát hành theo giấy phép MIT.