Pantrix UI

Progress Circle

Bir iş yapıldıkça dolan bir halka: bir yüklemenin ne kadarının gittiği, bir kurulumun kaç adımının geride kaldığı, bir kotanın ne kadarının kullanıldığı. Bilinen bir bütünün payını gösterir; sonu bilinmeyen iş için spinner vardır.

import com.pantrixui.components.chart.progresscircle.PantrixProgressCircle

Örnekler

Bir bütünün payı

En yalın hâli: yüzde yetmiş ikisi tamamlanmış bir iş. max verilmezse yüzdür.

PantrixProgressCircle(value = 72, contentDescription = "Yüklenen", tagKey = "plain")

Ortasında payıyla

Pay halkanın ortasına yazılı ve düğmelerle değişiyor: halka yeni değere gider. Ortadaki yazı ekran okuyucudan gizli (clearAndSetSemantics): payı halkanın kendisi söylüyor.

var done by remember { mutableStateOf(3) }
Row(
    horizontalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.md),
    verticalAlignment = Alignment.CenterVertically
) {
    PantrixProgressCircle(
        value = done,
        max = 8,
        contentDescription = "Kurulum",
        style = ProgressCircleStyle(size = 72.dp, strokeWidth = 8.dp),
        tagKey = "share"
    ) {
        PantrixText(text = "$done/8", modifier = Modifier.clearAndSetSemantics { })
    }
    PantrixButton(
        text = "Geri",
        onClick = { done = (done - 1).coerceAtLeast(0) },
        variant = ButtonVariant.Outline,
        tagKey = "progress_back"
    )
    PantrixButton(text = "İleri", onClick = { done = (done + 1).coerceAtMost(8) }, tagKey = "progress_next")
}

Boyutlar

Üç boy, ProgressCircleStyle ile: bir satırın içinde küçük, bir kartta orta, bir özetin başında büyük. Halkanın kalınlığı da boyuyla birlikte verilir.

Row(
    horizontalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.lg),
    verticalAlignment = Alignment.CenterVertically
) {
    PantrixProgressCircle(
        value = 40,
        contentDescription = "Küçük",
        style = ProgressCircleStyle(size = 32.dp, strokeWidth = 4.dp),
        tagKey = "small"
    )
    PantrixProgressCircle(value = 40, contentDescription = "Orta", tagKey = "medium")
    PantrixProgressCircle(
        value = 40,
        contentDescription = "Büyük",
        style = ProgressCircleStyle(size = 96.dp, strokeWidth = 10.dp),
        tagKey = "large"
    )
}

Renkler

Halkanın rengi neyi gösterdiğini söyleyebilir: az kalan kota uyarı renginde, dolan kota tehlike renginde. Dolu bir yüzeyin üstünde renk verilmeyen halka, yüzeyin içerik rengiyle çizilir.

val colors = PantrixTheme.colors
Row(
    horizontalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.lg),
    verticalAlignment = Alignment.CenterVertically
) {
    PantrixProgressCircle(value = 35, color = colors.success.color, contentDescription = "Kota", tagKey = "ok")
    PantrixProgressCircle(value = 80, color = colors.warning.color, contentDescription = "Kota", tagKey = "warn")
    PantrixProgressCircle(value = 97, color = colors.danger.color, contentDescription = "Kota", tagKey = "full")
    PantrixSurface(color = colors.primary.color) {
        PantrixProgressCircle(
            value = 60,
            modifier = Modifier.padding(PantrixTheme.spacing.md),
            contentDescription = "Yüklenen",
            tagKey = "on_fill"
        )
    }
}

Dışa aktarma

export = ChartExport(...) grafiğin üstüne bir dışa aktarma düğmesi koyar: bas ve türü seç (PNG, SVG ya da PDF). Grafik dosyayı üretir ve onExport'a verir; altta adı ve boyu, PNG ise resmi görünür, "Dosyayı kaydet" onu platformun yoluyla verir.

Dosyada halka dolduğu kadarıyla çizilir; ortasına content ile konan dosyaya çıkmaz. export content'ten önce gelir: sondaki lambda yine ortadaki içeriktir.

var file by remember { mutableStateOf<ChartExportFile?>(null) }
PantrixProgressCircle(
    value = 72,
    contentDescription = "Yüklenen",
    tagKey = "exported",
    export = ChartExport(fileName = "yuklenen") { file = it }
) {
    PantrixText(text = PantrixTheme.strings.percent(0.72), style = PantrixTheme.typography.caption)
}
ExportedFile(file, tagKey = "exported")

API

value

Bir iş yapıldıkça dolan bir halka: bir yüklemenin ne kadarının gittiği, bir kurulumun kaç adımının geride kaldığı, bir kotanın ne kadarının kullanıldığı. Bilinen bir bütünün payını gösterir; sonu bilinmeyen iş için spinner vardır.

ParametreTürVarsayılanNe olduğu
valueNumberne kadarının yapıldığı, sıfır ile max arasında. Sayı olmayan şey sıfır sayılır.
modifierModifierModifierhalkanın modifier'ı. Buradaki bir boyut halkanındır.
maxNumber100bütünün ne kadar olduğu: sıfırdan büyük.
colorColorColor.Unspecifiedhalkanın rengi.
trackColorColorColor.Unspecifiedhalkanın izinin rengi: doldurduğu bütün.
contentDescriptionString?nullneyin ilerlediği, bir iki sözcükle, ekran okuyucu için.
styleProgressCircleStyle?nullbu halkanın kendi geometrisi: boyu ve halkasının kalınlığı.
tagKeyString?nullhalkanın otomasyon anahtarı: halka ProgressCircle_<tagKey> olur.
exportChartExport?nullhalkayı uygulamanın dışına PNG, SVG ya da PDF olarak çıkarmayı sağlayan şey: üstündeki bir düğme onun o anki hâlinin dosyasını üretip verir (bkz. ChartExport). null, böyle bir düğme yoktur. Halkanın içinde duran, content, dosyada yoktur. content'ten önce gelir; o hep sonda kalır.
content(@Composable () -> Unit)?nullhalkanın ortasında duran. Halkanın içindeki yer onundur.

ProgressCircleStyle

PantrixProgressCircle'ın geometrisi.

ParametreTürVarsayılanNe olduğu
sizeDpDp.UnspecifiedHalkanın genişliği ve yüksekliği: bir marka ya da bir tema başkasını vermedikçe her platformda 56dp.
strokeWidthDpDp.UnspecifiedHalkanın kalınlığı: 6dp. Bir halka, dairesinin dörtte birinden kalın olmaz.

Erişilebilirlik