Skip to content

Tùy biến giao diện Android SDK ​

Tùy biến màn hình quét chip của Android SDK CICReader — văn bản, nút bấm, icon NFC, chỉ báo loading, cửa sổ container và font tùy chỉnh — bằng cách truyền một CICUIConfig vào CICConfig của bạn.

Thêm CICUIConfig vào CICConfig ​

Truyền tham số uiConfig khi bạn khởi tạo CICConfig:

kotlin
val config = CICConfig(
  baseUrl           = "<BASE_URL>",
  connectTimeoutMs  = 60_000,
  readTimeoutMs     = 60_000,
  cacheScanStrategy = CICCacheScanStrategy.NO_CACHE,
  uiConfig          = CICUIConfig(...)
)
kotlin
class CICUIConfig {
  val cancelButton: ButtonElement? = null,
  val scanningGuide: TextElement? = null,
  val waitingForCard: TextElement? = null,
  val connectedCard: TextElement? = null,
  val verifyingCard: TextElement? = null,
  val readingText: TextElement? = null,
  val nfcIcon: ImageElement? = null,
  val loadingIndicator: ProgressBarElement? = null,
  val windowView: WindowElement? = null,
  val customFont: List<FontSource>? = null,
}

Tham số:

Tham sốKiểuBắt buộcMặc địnhMô tả
cancelButtonButtonElement?KhôngnullNút hành động hủy.
scanningGuideTextElement?KhôngnullVăn bản hướng dẫn hiển thị khi người dùng đặt thẻ.
waitingForCardTextElement?KhôngnullVăn bản hiển thị khi đang chờ thẻ vào vùng NFC.
connectedCardTextElement?KhôngnullVăn bản hiển thị ngay khi chip kết nối.
verifyingCardTextElement?KhôngnullVăn bản hiển thị trong lúc xác minh.
readingTextTextElement?KhôngnullVăn bản hiển thị trong lúc chip đang được đọc.
nfcIconImageElement?KhôngnullAsset icon NFC.
loadingIndicatorProgressBarElement?KhôngnullThanh loading.
windowViewWindowElement?KhôngnullCửa sổ container của màn hình quét.
customFontList<FontSource>?KhôngnullCác font cần đăng ký trước khi có thể được tham chiếu theo tên.

Các thành phần UI cốt lõi ​

CICUIConfig được xây dựng từ năm loại phần tử:

TrườngKiểuMô tả
TextElementclassTùy biến nội dung văn bản, kích thước, màu sắc và font.
ButtonElementclassStyle cho nút bấm — văn bản, nền, viền.
ImageElementclassĐặt một icon hoặc ảnh tùy chỉnh.
ProgressBarElementclassCấu hình màu sắc của chỉ báo loading.
WindowElementclassĐiều chỉnh nền và bán kính góc của cửa sổ.

TextElement ​

Ghi đè chuỗi mặc định và style cho một bước của màn hình quét.

kotlin
TextElement(
  text     = "My custom string",
  textSize = 12f,
  color    = Color.parseColor("#BB86FC"),
  fontName = "MyRoboto"
)
Tham sốKiểuBắt buộcMặc địnhMô tả
textStringKhôngMặc định của SDKChuỗi hiển thị.
textSizeFloatKhôngMặc định của SDKKích thước font.
colorIntKhôngMặc định của SDKMàu ARGB thông qua Color.parseColor("#rrggbb").
fontNameStringKhôngMặc định của SDKTên font đã được đăng ký thông qua customFont.

ButtonElement ​

Style cho một nút hành động.

kotlin
ButtonElement(
  text            = TextElement("Cancel", textSize = 18f),
  backgroundColor = Color.parseColor("#008000"),
  strokeColor     = Color.parseColor("#fcba03"),
  borderRadius    = 32f
)
Tham sốKiểuBắt buộcMặc địnhMô tả
textTextElementKhôngMặc định của SDKMột TextElement lồng bên trong cho nhãn nút.
backgroundColorIntKhôngMặc định của SDKMàu nền nút.
strokeColorIntKhôngMặc định của SDKMàu viền.
borderRadiusFloatKhôngMặc định của SDKBán kính góc.

ImageElement ​

Thay thế icon NFC.

kotlin
ImageElement(
  path      = "ic_android_nfc_wave.png",
  assetType = AssetType.ASSET
)
Tham sốKiểuBắt buộcMặc địnhMô tả
pathStringCó—Tên file trong assets/, hoặc một đường dẫn file tuyệt đối.
assetTypeAssetTypeCó—Loại nguồn: ASSET hoặc FILE.

ProgressBarElement ​

Thay thế spinner mặc định.

kotlin
ProgressBarElement(
  backgroundColor = Color.parseColor("#333333"),
  progressColor   = Color.parseColor("#BB86FC")
)
Tham sốKiểuBắt buộcMặc địnhMô tả
backgroundColorIntKhôngMặc định của SDKMàu track phía sau chỉ báo tiến trình.
progressColorIntKhôngMặc định của SDKMàu của chính chỉ báo tiến trình.

WindowElement ​

Điều chỉnh giao diện của container.

kotlin
WindowElement(
  backgroundColor   = Color.parseColor("#d9bd71"),
  topLeftRadius     = 32,
  topRightRadius    = 32,
  bottomLeftRadius  = 32,
  bottomRightRadius = 32
)
Tham sốKiểuBắt buộcMặc địnhMô tả
backgroundColorIntKhôngMặc định của SDKMàu nền cửa sổ.
topLeftRadiusIntKhôngMặc định của SDKBán kính góc trên-trái.
topRightRadiusIntKhôngMặc định của SDKBán kính góc trên-phải.
bottomLeftRadiusIntKhôngMặc định của SDKBán kính góc dưới-trái.
bottomRightRadiusIntKhôngMặc định của SDKBán kính góc dưới-phải.

Font tùy chỉnh ​

Đăng ký font bằng FontSource trước khi tham chiếu chúng qua fontName trên bất kỳ TextElement nào.

kotlin
CICUIConfig(
  customFont = listOf(
    FontSource.Asset(
      fontName = "MyRoboto",
      file     = "playwrite.ttf"
    ),
    FontSource.File(
      fontName = "GoogleSans",
      path     = iconWavePath
    )
  ),
  scanningGuide = TextElement(
    text     = "Please insert your card",
    textSize = 12f,
    color    = Color.parseColor("#BB86FC"),
    fontName = "MyRoboto"
  )
)
Tham sốKiểuBắt buộcMặc địnhMô tả
FontSource.Asset.fontNameStringCó—Tên dùng để đăng ký font.
FontSource.Asset.fileStringCó—Tên file font trong assets/.
FontSource.File.fontNameStringCó—Tên dùng để đăng ký font.
FontSource.File.pathStringCó—Đường dẫn tuyệt đối đến file font.

INFO

fontName trên một TextElement chỉ được resolve nếu cùng tên đó đã được đăng ký trong customFont. Một tên chưa đăng ký sẽ rơi về font mặc định của SDK thay vì báo lỗi, nên một lỗi gõ sai sẽ hiện ra như một font không đổi, chứ không phải một crash.

Ví dụ đầy đủ ​

kotlin
val uiConfig = CICUIConfig(
  customFont = listOf(
    FontSource.Asset(fontName = "MyRoboto", file = "playwrite.ttf")
  ),
  scanningGuide = TextElement(
    text     = "Đặt thẻ CCCD lên mặt sau điện thoại",
    textSize = 12f,
    color    = Color.parseColor("#BB86FC"),
    fontName = "MyRoboto"
  ),
  cancelButton = ButtonElement(
    text            = TextElement("Huỷ", textSize = 18f),
    backgroundColor = Color.parseColor("#008000"),
    strokeColor     = Color.parseColor("#fcba03"),
    borderRadius    = 32f
  ),
  nfcIcon = ImageElement(
    path      = "ic_android_nfc_wave.png",
    assetType = AssetType.ASSET
  ),
  loadingIndicator = ProgressBarElement(
    backgroundColor = Color.parseColor("#333333"),
    progressColor   = Color.parseColor("#BB86FC")
  ),
  windowView = WindowElement(
    backgroundColor   = Color.parseColor("#d9bd71"),
    topLeftRadius     = 32,
    topRightRadius    = 32,
    bottomLeftRadius  = 32,
    bottomRightRadius = 32
  )
)

val config = CICConfig(
  baseUrl           = "<BASE_URL>",
  connectTimeoutMs  = 60_000,
  readTimeoutMs     = 60_000,
  cacheScanStrategy = CICCacheScanStrategy.NO_CACHE,
  uiConfig          = uiConfig
)

Bước tiếp theo ​

  • Tạo giao dịch — cấp token mà SDK xác thực bằng
  • Đọc NFC — những gì SDK gửi lên ngay khi lần đọc chip hoàn tất

Developers