Gauge
Bir gösterge: bir ölçekte tek bir değer, bir yayın ne kadarını dolandığıyla. Bir hız, bir yük, bir kotanın payı: olabileceği en aza ve en çoğa göre okunan bir değer.
import com.pantrixui.components.chart.gauge.PantrixGauge
- Ölçek.
minvemaxölçeğin uçlarıdır. Ucu aşan değer o uçta durur ve olduğu gibi yazılır. Değeri olmayan gösterge (null) yalnızca ölçeğini gösterir. - Aralıklar.
segments, ölçeğin parçalarına bir renk ve bir ad verir: iyi olan aralık, fazla olan aralık. HerGaugeSegmentnerede bittiğini söyler (upTo); ilki ölçeğin başından başlar, ötekiler bir öncekinin bittiği yerden. Yay, değerin ulaştığı aralığın rengiyle dolar; aralıkların kendisi soluk renkleriyle altında durur. - İbre.
needleile ortadan değere bir ibre uzanır ve değer ibrenin altına yazılır. Hem ibresi hem aralıkları olan göstergede aralıklar tam renkleriyle çizilir ve yay dolmaz: ibre onlara göre okunur. - Yazım.
formatdeğerin ve ölçeğin iki ucunun nasıl yazılacağını söyler; verilmezse temanın diliyle sayı olarak yazılırlar.centerdeğerin yazısının yerine kendi içeriğini koyar. - Boyut ve hareket. Gösterge verilen yer kadar geniş, grafik stilinin söylediği kadar yüksektir; yay bu yere sığan en büyük yaydır. Değer değişince yay ve ibre yeni değere gider; sistem azaltılmış hareket istiyorsa gitmez, orada olur.
- Yön. Ölçek sağdan sola okunan dilde de aynı yöne döner.
- Dışa aktarma.
exportgrafiğin üstüne bir düğme koyar: grafik ekrandaki hâliyle, gösterilen yer ve tooltip olmadan, PNG, SVG ya da PDF dosyası olarak üretilir ve uygulamaya verilir. - Otomasyon.
Gauge_<tagKey>.
Örnekler
Bir ölçekte bir değer
En yalın hâli: bir değer ve ölçeğin sonu. Elli gigabaytlık bir depolamanın otuz ikisi dolu; format değeri ve ölçeğin iki ucunu birimiyle yazar.
PantrixGauge(
value = 32,
max = 50,
format = { "${it.toInt()} GB" },
description = "Kullanılan depolama",
tagKey = "plain"
)
Aralıklar
Ölçeğin üç aralığı var: altmışa kadar olağan, seksen beşe kadar yüksek, ondan sonra kritik. Yay, değerin ulaştığı aralığın rengiyle dolar; aralıklar soluk renkleriyle altında görünür.
Bir değer seç: yay oraya gider ve rengi ulaştığı aralığa göre değişir. Ekran okuyucu değerden sonra aralığın adını da söyler: "%72, Yüksek". Değeri format temanın diliyle yazıyor (PantrixTheme.strings.percent).
Aralıklar burada renklerini kendileri söylüyor: temanın başarı, uyarı ve tehlike renkleri. Rengi verilmeyen aralık temanın sıradaki grafik rengini alır; o renkler bir anlam taşımaz.
var load by remember { mutableStateOf(72) }
val strings = PantrixTheme.strings
PantrixSegmentButton(
options = loadReadings(),
selected = load,
onSelect = { load = it },
fullWidth = false,
tagKey = "gauge_load"
)
PantrixGauge(
value = load,
segments = loadRanges(),
format = { strings.percent(it / 100) },
description = "İşlemci yükü",
tagKey = "segments"
)
@Composable
private fun loadRanges(): List<GaugeSegment> {
val colors = PantrixTheme.colors
return listOf(
GaugeSegment(upTo = 60, color = colors.success.color, name = "Olağan"),
GaugeSegment(upTo = 85, color = colors.warning.color, name = "Yüksek"),
GaugeSegment(upTo = 100, color = colors.danger.color, name = "Kritik")
)
}
@Composable
private fun loadReadings(): List<SegmentOption<Int>> {
val strings = PantrixTheme.strings
return listOf(40 to "low", 72 to "high", 93 to "critical").map { (load, key) ->
SegmentOption(value = load, label = strings.percent(load / 100.0), tagKey = key)
}
}
İbre
İbreli gösterge: ortadan değere bir ibre uzanır, değer ibrenin altına yazılır. Aralıklar tam renkleriyle çizilir ve yay dolmaz: ibre onlara göre okunur.
var load by remember { mutableStateOf(40) }
val strings = PantrixTheme.strings
PantrixSegmentButton(
options = loadReadings(),
selected = load,
onSelect = { load = it },
fullWidth = false,
tagKey = "gauge_needle_load"
)
PantrixGauge(
value = load,
segments = loadRanges(),
needle = true,
format = { strings.percent(it / 100) },
description = "İşlemci yükü",
tagKey = "needle"
)
@Composable
private fun loadRanges(): List<GaugeSegment> {
val colors = PantrixTheme.colors
return listOf(
GaugeSegment(upTo = 60, color = colors.success.color, name = "Olağan"),
GaugeSegment(upTo = 85, color = colors.warning.color, name = "Yüksek"),
GaugeSegment(upTo = 100, color = colors.danger.color, name = "Kritik")
)
}
@Composable
private fun loadReadings(): List<SegmentOption<Int>> {
val strings = PantrixTheme.strings
return listOf(40 to "low", 72 to "high", 93 to "critical").map { (load, key) ->
SegmentOption(value = load, label = strings.percent(load / 100.0), tagKey = key)
}
}
Sıfırdan başlamayan ölçek
Aralıksız, ibreli bir gösterge: yay değere kadar dolar ve ibre de değeri gösterir. Ölçek sıfırdan başlamak zorunda değildir: bu termometre eksi yirmiden kırka gider.
val strings = PantrixTheme.strings
PantrixGauge(
value = 7.5,
min = -20,
max = 40,
needle = true,
format = { "${strings.decimal(it, fractionDigits = 1)}°" },
description = "Dış sıcaklık",
tagKey = "below_zero"
)
Ortada kendi içeriğin
center, değerin yazısının yerine kendi içeriğini koyar: burada değerin altında birimi. İçerik, yayın ortasında bıraktığı yere sığar.
Ekran okuyucu değeri göstergenin kendisinden duyar (description ve format); ortadaki yazılar gözün içindir.
PantrixGauge(
value = 86,
max = 120,
format = { "${it.toInt()} km/sa" },
center = {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
PantrixText(text = "86", style = PantrixTheme.typography.headline)
PantrixText(text = "km/sa", color = PantrixTheme.colors.textSecondary)
}
},
description = "Hız",
tagKey = "own_center"
)
Kendi ölçülerin
Bir göstergenin kendi ölçüleri: yay daha ince (gaugeWidth) ve gösterge daha alçak (height). Aralıkların arası kapalı (sliceGap). Verilmeyen alan temanınki kalır.
val strings = PantrixTheme.strings
PantrixGauge(
value = 54,
segments = loadRanges(),
format = { strings.percent(it / 100) },
description = "İşlemci yükü",
style = ChartStyle(gaugeWidth = 8.dp, height = 160.dp, sliceGap = 0.dp),
tagKey = "own_look"
)
@Composable
private fun loadRanges(): List<GaugeSegment> {
val colors = PantrixTheme.colors
return listOf(
GaugeSegment(upTo = 60, color = colors.success.color, name = "Olağan"),
GaugeSegment(upTo = 85, color = colors.warning.color, name = "Yüksek"),
GaugeSegment(upTo = 100, color = colors.danger.color, name = "Kritik")
)
}
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.
Ortadaki değer dosyada da yazılıdır; ortaya center ile konan bir içerik ise dosyaya çıkmaz.
var file by remember { mutableStateOf<ChartExportFile?>(null) }
PantrixGauge(
value = 32,
max = 50,
format = { "${it.toInt()} GB" },
description = "Kullanılan depolama",
tagKey = "exported",
export = ChartExport(fileName = "depolama") { file = it }
)
ExportedFile(file, tagKey = "exported")
API
value
Bir gösterge: bir ölçekte tek bir değer, bir yayın ne kadarını dolandığıyla. Bir hız, bir yük, bir kotanın payı: olabileceği en aza ve en çoğa göre okunan bir değer.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
value | Number? | ölçüm. null ve sayı olmayan şey ölçüm değildir: gösterge ölçeğini gösterir, üstünde hiçbir şey göstermez. | |
modifier | Modifier | Modifier | göstergenin modifier'ı. Buradaki bir yükseklik göstergenindir. |
min | Number | 0 | ölçeğin başladığı yer. |
max | Number | 100 | ölçeğin bittiği yer: min'den büyük. |
segments | List<GaugeSegment> | emptyList() | ölçeğin bir rengi ve bir adı olan parçaları, ölçek boyunca durdukları sırayla; her biri bir öncekinin bittiği yerden ötede biter. Hiç yoksa yay grafiğin renklerinin ilkiyle çizilir. |
needle | Boolean | false | değeri bir ibrenin gösterip göstermediği. |
format | ((Double) -> String)? | null | bir değerin nasıl yazıldığı: ölçüm ve ölçeğin iki ucu. Verilmezse temanın diliyle sayı olarak yazılırlar. |
center | (@Composable () -> Unit)? | null | göstergede, yazıldığı hâliyle ölçümün yerinde duran: altında birimiyle ölçüm, bir ikon. Yayın ortasında bıraktığı yer onundur; göstergenin ibresi varsa yayın iki ucunun arasındaki yer. |
description | String? | null | göstergenin neyi ölçtüğü, birkaç sözcükle, ekran okuyucu için: gösterge hakkında söylediği ilk şey. |
style | ChartStyle? | null | bu göstergenin kendi geometrisi: burada verilen alanlar, gerisi temanınkiyle. |
colors | ChartColors? | null | bu göstergenin kendi renkleri, temanınkiler olmadıkları yerde. |
tagKey | String? | null | göstergenin otomasyon anahtarı: gösterge Gauge_<tagKey> olur. |
export | ChartExport? | null | grafiği uygulamanın dışına PNG, SVG ya da PDF olarak çıkarmayı sağlayan şey: grafiğin üstündeki bir düğme onun o anki hâlinin dosyasını üretip verir (bkz. ChartExport). null, grafikte böyle bir düğme yoktur. Ortada duran, center, dosyada yoktur; göstergenin oraya kendi yazdığı değer vardır. |
ChartStyle
Bir grafiğin geometrisi: hiçbir şey söylemediğinde ne kadar yüksek olduğu, çizgilerinin ne kadar kalın, işaretlerinin ne kadar büyük olduğu ve parçalarının arasındaki boşluk; ve dolgularının renklerinin yanında desen alıp almadığı.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
height | Dp | Dp.Unspecified | Grafiğin modifier'ı ona bir yükseklik vermediğinde çizim alanının, eksenleriyle birlikte, ne kadar yüksek olduğu. Çizim alanının üstündeki ya da altındaki bir lejant kendi yüksekliğini ekler. |
lineWidth | Dp | Dp.Unspecified | Bir serinin çizgisinin kalınlığı. |
markerSize | Dp | Dp.Unspecified | Bir noktadaki işaretin genişliği ve yüksekliği. |
selectedMarkerSize | Dp | Dp.Unspecified | Aynısı, gösterilen noktadaki işaret için. |
gridWidth | Dp | Dp.Unspecified | Kılavuz çizgilerinin, eksenler boyunca çizilen çizgilerin ve gösterilen yeri işaretleyen çizginin kalınlığı. Sıfır hiçbirini çizmez. |
labelGap | Dp | Dp.Unspecified | Çizim alanıyla yanına ve altına yazılanın arası, ve onunla bir eksenin başlığının arası. |
tickSpacing | Dp | Dp.Unspecified | Değerlerin ekseni boyunca işaretlenen iki değerin arasındaki en az boşluk: eksen söylemediğinde kaç tanesinin işaretleneceğine karar veren şey. |
legendGap | Dp | Dp.Unspecified | Lejantla yanında durduğu grafiğin arası. |
legendItemGap | Dp | Dp.Unspecified | Lejantın bir kaydıyla sonrakinin arası. |
swatchSize | Dp | Dp.Unspecified | Bir serinin lejanttaki ve tooltip'teki örneğinin ne kadar geniş olduğu: çizgisinin kısa bir parçası ya da dolgusunun bir yaması. |
swatchGap | Dp | Dp.Unspecified | O örnekle ardındaki adın arası. |
tooltipShape | ShapeSpec | ShapeSpec.Unspecified | Tooltip'in köşeleri: markanın şekil ölçeğinin bir basamağı ya da sabit bir şekil. |
tooltipHorizontalPadding | Dp | Dp.Unspecified | Tooltip'in yanlarıyla içindekinin arası. |
tooltipVerticalPadding | Dp | Dp.Unspecified | Üstü ve altıyla içindekinin arası, ve başlığıyla satırlarının arası. |
tooltipGap | Dp | Dp.Unspecified | Gösterilen yerle yanındaki tooltip'in arası. |
tooltipElevation | Dp | Dp.Unspecified | Tooltip'in gölgesi. |
barGap | Dp | Dp.Unspecified | Bir yerde yan yana duran iki çubuğun arası. Bunun için fazla ince olan çubuklar daha yakın durur. |
barMaxWidth | Dp | Dp.Unspecified | Bir çubuğun en fazla ne kadar geniş olduğu, yerinin ne kadar yeri olursa olsun: üç yerli bir grafik üç kalas değildir. |
barRadius | Dp | Dp.Unspecified | Bir çubuğun ucunun, sıfırdan uzak ucunun, köşelerinin ne kadar yuvarlak olduğu. |
sliceGap | Dp | Dp.Unspecified | Bir pastanın yan yana duran iki dilimi arasında; pastanın ortasından kenarına kadar aynı genişlikte. |
selectedSliceOffset | Dp | Dp.Unspecified | Bir pastanın gösterilen diliminin, pastanın kenarından ne kadar dışarı taştığı. Pasta çevresinde bu kadar yer bırakır: dilimin duracağı yer olsun. |
gaugeWidth | Dp | Dp.Unspecified | Bir göstergenin yayının kalınlığı. Bir yay, yarıçapının yarısından kalın olmaz. |
meterHeight | Dp | Dp.Unspecified | Bir ölçüm grubunun çubuğunun yüksekliği. |
trackerHeight | Dp | Dp.Unspecified | Bir durum izleyicinin bloklarının yüksekliği. |
bubbleMinSize | Dp | Dp.Unspecified | Bir saçılım grafiğinin en küçük balonunun genişliği: büyüklüğü hiç olmayan ya da bir alan olarak görülemeyecek kadar az olan nokta da bir noktadır. |
bubbleMaxSize | Dp | Dp.Unspecified | En büyük balonunun genişliği: büyüklüğü grafiğin en büyüğü olanın. |
navigatorHeight | Dp | Dp.Unspecified | Zoom'unda gezgin şeridi olan bir grafikte, çizim alanının altındaki şeridin yüksekliği: grafiğin görünen kısmı onun üstünde işaretlenir ve kaydırılır. Yerleri yanından aşağı dizilen grafikte şerit çizim alanının yanında durur ve bu onun genişliğidir. |
barBandShare | Float | Float.NaN | Bir yerin çubuklarının bandından aldığı pay, sıfırdan çok ve en fazla bir: kalanı bir yerin çubuklarıyla sonrakininkiler arasındaki boşluktur. Çubuklar yine de barMaxWidth'ten geniş olmaz. |
markLineWidth | Dp | Dp.Unspecified | Bir işaretin çizgisinin kalınlığı: bir hedefin, bir sınırın, bir günün. Sıfır çizgi çizmez; işaretin yazısı yine yazılır. |
markBandAlpha | Float | Float.NaN | Bir işaretin bandının renginin ne kadarıyla çizildiği, sıfırdan bire: bant serilerin arkasında durur ve bir tondur. |
patterns | Boolean? | null | Bir grafiğin serilerinin, dilimlerinin ve karolarının dolgularının renklerinin yanında desenlerle, çizgilerinin de sırayla kesik çizilip çizilmediği (ChartPattern): renkleri ayırt edemeyen bir okuyucu için onları ayıran şey. Verilmezse sistemin ayarına uyulur: sistem şeyleri renksiz ayırt etmeye ayarlıysa açık (iOS'ta "Differentiate Without Color", Android'de renk düzeltme), değilse kapalı. |
nodeWidth | Dp | Dp.Unspecified | Bir sankey düğümünün ne kadar geniş olduğu. |
nodeGap | Dp | Dp.Unspecified | Bir sankey kolonunun iki düğümü arası. |
ChartColors
Temanın renklerini almayan bir grafik için, onun neyle boyandığı: verilen renk kullanılır, verilmeyen temanınki kalır.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
series | List<Color> | emptyList() | Serilerin çizildiği renkler, dağıtıldıkları sırayla, kendi rengini söylemeyen seriler için. Boşsa temanın grafik renkleridir. |
grid | Color | Color.Unspecified | Bir eksenin işaretlerinde grafik boyunca çizilen çizgiler. Temanın divider'ı. |
axis | Color | Color.Unspecified | Bir eksen boyunca çizilen çizgi. Temanın border'ı. |
label | Color | Color.Unspecified | Eksenlerin yanına yazılanlar: değerler, yerler ve eksenlerin başlıkları, bir de lejanttaki adlar. Temanın textSecondary'si. |
crosshair | Color | Color.Unspecified | Gösterilen yeri işaretleyen çizgi. Temanın borderHover'ı: içinden geçtiği kılavuz çizgilerinden güçlü, arkasında durduğu serilerden sessiz. |
tooltipContainer | Color | Color.Unspecified | Tooltip'in dolgusu. Temanın surface'i. |
tooltipBorder | Color | Color.Unspecified | Tooltip'in kenarı. Temanın border'ı. |
tooltipText | Color | Color.Unspecified | Tooltip'in başlığı ve değerleri. Temanın textPrimary'si. |
tooltipLabel | Color | Color.Unspecified | Tooltip'teki seri adları. Temanın textSecondary'si. |
rising | Color | Color.Unspecified | Yukarı giden bir değerin çizildiği renk: bir şelalenin ekleyen adımı. Temanın success'i. |
falling | Color | Color.Unspecified | Aşağı giden bir değerin çizildiği renk: bir şelalenin götüren adımı. Temanın danger'ı. |
Erişilebilirlik
- Ekran okuyucu. Gösterge tek bir şeydir:
description'ı, ardından yazıldığı gibi değer ve, adı varsa, içinde olduğu aralığın adı.