Card Skeleton
İçeriği henüz gelmemiş bir PantrixCard: kartın kendi yüzeyi, başlığının, gövdesinin ve eylemlerinin geleceği yerde çubuklarla.
import com.pantrixui.components.container.card.PantrixCardSkeleton
- Üç varyant.
variantkartın durduğu yerden nasıl ayrıldığını söyler:Elevatedbir gölgeyle,Filledbir dolguyla,Outlinedince bir kenarla. - Yuvalar.
headergövdenin üstünde,footeraltında durur;mediahepsinin üstünde, kartın iç boşluğunu almadan kenardan kenara çizilir. Gövdedeki satırların arasında temanın küçük boşluğu (spacing.sm) vardır. - Yükseklik. Yükseklik verilen kartın gövdesi onu doldurur:
footerkartın dibinde durur ve gövdedeweightalan bir çocuk aradaki yeri alır. Bir satırın kartları böylece aynı boyda olur. - Tek bir düğme.
onClickverilen kartın tamamı tek bir düğmedir: ekran okuyucu tek bir hedef duyar.footer'daki bir düğme kendi basışını korur. - Basılamayan kart.
onClick'i olan veenabled'ı false olan kart, içindekilere temanın devre dışı rengini verir; kendi rengini veren bir çocuk onu korur. - İçerik rengi. Temanın
surface'ı üstünde, yaniElevatedveOutlinedkartta, kart içindekilere renk vermez: her çocuk kendi varsayılanıyla çizilir.Filledkart ve bir rolün dolgusu verilen kart, o dolguda okunan rengi verir. - Kendi renkleri.
CardColorsdolguyu, içeriğin rengini ve kenarı verir; verilmeyen varyantınki kalır. - Platform. Köşeler ve gölge platforma göredir (
CardStyle): Android'de orta köşe ve 2dp gölge, iOS'ta büyük köşe ve gölgesiz, masaüstünde ve web'de küçük köşe ve 1dp gölge. - İskelet.
PantrixCardSkeletonverisi gelmemiş bir kartın yerini tutar: kartın kendi yüzeyi, içinde başlığın, satırların ve düğmelerin yerinde çubuklar. Ekran okuyucuya bir kez, kartın tamamı için duyurulur. - Otomasyon.
tagKeykartaCard_<tagKey>etiketini verir; bir basış, varyantıyla birlikteCardolayı olarak bildirilir.
Örnekler
Veri gelene kadar: iskelet
"Yenile"ye bas: iki kart iki saniyeliğine iskeletleriyle yer değiştirir. PantrixCardSkeleton bir karta benzetilerek çizilmez, kartın kendi şekli, dolgusu, gölgesi, iç boşluğu ve aralıklarıyla kurulur. Çubukları, yerini tuttukları şeyin kapladığı yeri kaplar: veri gelince kartın yüksekliği değişmez ve altındaki hiçbir şey yerinden oynamaz.
İskelet kartın içinde ne olduğunu bilemez: showHeader, lines, footerButtons ve mediaHeight yerine geçtiği karta göre verilir. İlk kartın bir başlığı, bir satırı ve iki düğmesi var: lines = 1, footerButtons = 2.
"Kampanya" kartının dolgusu ve içeriğinin rengi dışarıdan verildi. İskeleti de kartın renklerini colors ile alır; çubukları skeletonColors ile verilen renkte çizilir.
val own = ownColors()
val campaign = CardColors(container = own.container, content = own.onContainer)
var loading by remember { mutableStateOf(false) }
LaunchedEffect(loading) {
if (loading) {
delay(2_000)
loading = false
}
}
if (loading) {
PantrixCardSkeleton(modifier = Modifier.fillMaxWidth(), lines = 1, footerButtons = 2)
} else {
PantrixCard(
modifier = Modifier.fillMaxWidth(),
header = {
PantrixText(
text = "Sipariş #1042",
style = PantrixTheme.typography.title,
role = TextRole.Heading(level = 3)
)
},
footer = {
PantrixButton(
text = "Yenile",
onClick = { loading = true },
variant = ButtonVariant.Text,
tagKey = "reload"
)
PantrixButton(text = "Takip et", onClick = {}, tagKey = "track")
}
) {
PantrixText(text = "İki ürün, perşembe günü teslim")
}
}
if (loading) {
PantrixCardSkeleton(
modifier = Modifier.fillMaxWidth(),
variant = CardVariant.Filled,
colors = campaign,
skeletonColors = SkeletonColors(base = own.onContainer.copy(alpha = 0.3f), highlight = own.container),
lines = 1
)
} else {
PantrixCard(
modifier = Modifier.fillMaxWidth(),
variant = CardVariant.Filled,
colors = campaign,
tagKey = "campaign"
) {
PantrixText(text = "Kampanya", style = PantrixTheme.typography.title)
PantrixText(text = "Dolgusu ve içeriğinin rengi dışarıdan verildi")
}
}
Yüklenen liste
Yüklenen bir liste: iki kenarlı kartın iskeleti. mediaHeight kartın göstereceği görselin yerini tutar, lines gövdenin satırlarının, footerButtons eylemlerin.
Tek başına duran iskelet ekran okuyucuya bir kez, kartın tamamı için duyurulur: temanın "yükleniyor" sözüyle. Zaten yüklendiğini söyleyen bir şeyin içinde bu söz kapatılır: burada yüklendiğini liste bir kez söyler, iskeletlere contentDescription = null verildi.
val loading = PantrixTheme.strings.loading
Column(
modifier = Modifier.widthIn(max = 360.dp).semantics { contentDescription = loading },
verticalArrangement = Arrangement.spacedBy(PantrixTheme.spacing.md)
) {
repeat(2) {
PantrixCardSkeleton(
modifier = Modifier.fillMaxWidth(),
variant = CardVariant.Outlined,
lines = 2,
footerButtons = 1,
mediaHeight = 96.dp,
contentDescription = null
)
}
}
API
modifier
İçeriği henüz gelmemiş bir PantrixCard: kartın kendi yüzeyi, başlığının, gövdesinin ve eylemlerinin geleceği yerde çubuklarla.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
modifier | Modifier | Modifier | İskeletin modifier'ı. |
variant | CardVariant | CardVariant.Elevated | Yerine geçtiği kartın varyantı: aynı dolgu, gölge ve kenar. |
style | CardStyle? | null | Bu çağrının kendi CardStyle'ı: çevresindeki her stili ezer, yoğunluk ona da uygulanır. Eylemlerin çubukları temanın düğme şeklini korur. |
shape | Shape | PantrixTheme.style(CardStyle, style).shape.toShape() | Kartın köşeleri: varsayılanı, geçerli stilin köşeleridir. Burada verilen şekil, style'ın köşelerinin önüne geçer. |
colors | CardColors? | null | Yerine geçtiği kartın renkleri, o kartın kendi renkleri varsa: aynı dolgu ve kenar. |
skeletonColors | SkeletonColors? | null | Çubukların, temadan gelmeyen kendi renkleri. |
contentPadding | PaddingValues | PaddingValues(PantrixTheme.spacing.lg) | Çubukların çevresindeki boşluk; bir kartın içeriğinin çevresindeki gibidir. |
showHeader | Boolean | true | Başlığın yerini bir çubuğun tutup tutmayacağı: temanın title stilinde bir satır kadar. |
lines | Int | 3 | Çubukların kaç satır metnin yerini tuttuğu; metin, bir PantrixText'in stil verilmediğinde yazıldığı stildedir. |
footerButtons | Int | 0 | Eylemlerin çubuklarının kaç düğmenin yerini tuttuğu. |
mediaHeight | Dp? | null | Kartın, içeriğinin üstünde göstereceği görselin yüksekliği; görseli olmayan bir kart için null. |
contentDescription | String? | PantrixTheme.strings.loading | Ekran okuyucunun iskeletin tamamı için söylediği; zaten yüklendiğini söyleyen bir şeyin içinde null. |
tagKey | String? | null | iskeletin otomasyon anahtarı: iskelet CardSkeleton_<tagKey>'dır, çubuklarının kendi etiketleri yoktur. Anahtar yoksa etiketi olmaz. |
CardStyle
PantrixCard'ın geometrisi: köşeleri ve yükseltilmiş varyantının gölgesi.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
shape | ShapeSpec | ShapeSpec.Unspecified | Kartın köşeleri: Android'de orta, iOS'ta büyük, masaüstünde ve web'de küçük. |
elevation | Dp | Dp.Unspecified | CardVariant.Elevated'ın altındaki gölge: Android'de 2dp, iOS'ta yok, masaüstünde ve web'de 1dp. Öteki varyantlar gölge çizmez. |
CardColors
Varyantının renklerini almayan bir PantrixCard'ın boyandığı renkler: verilen renk kullanılır, verilmeyen varyantınki kalır.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
container | Color | Color.Unspecified | Kartın dolgusu. Temanın surface'ıdır; bir CardVariant.Filled kartta nötr rolün container'ıdır. |
content | Color | Color.Unspecified | Kartın içindekilerin, bir çocuk kendi rengini vermedikçe, çizildiği renk: container üstünde okunan renk. Temanın surface'ı üstünde yoktur: orada her çocuk kendi varsayılanıyla çizilir, bir metin textPrimary ile. Dolgulu bir kartta nötr rolün onContainer'ıdır. |
border | Color | Color.Unspecified | Kartın çevresindeki ince kenar. Bir CardVariant.Outlined kartta temanın divider'ıdır; o karta temanın zeminlerinden olmayan, o çizginin okunmayacağı bir dolgu verildiğinde ise orada yazılan rengin bir payıdır: Subtle düğmenin kenarı gibi. Öteki varyantların, burada verilmedikçe, ince kenarı yoktur. |