20. Apr 2022
AndroidJetpack Compose Basics - Preview a jeho parametre
Každý Android developer, ktorý píše používateľské rozhranie, potrebuje v určitom okamihu vidieť výsledky svojho úsilia, či už ide o kontrolu, ladenie alebo polishing kódu. Jednou z možností dostupných v Jetpack Compose je použitie preview zostavy zabudovanej do Android Studio (ďalšími možnosťami môže byť zabudovanie aplikácie do zariadenia, layout inspector atď.).
Ak chcete použiť previews, jednoducho vytvorte composable funkcie s anotáciou @Preview. Keď je composable funkcia anotovaná @Preview, preview by sa mal vykresliť v dizajnovom okne Android Studio (zatiaľ integrácia v AS nie je dokonalá, ale vývojári stále pracujú na vylepšeniach. Niekedy je na vykreslenie previev potrebné viacero buildov).
Preview anotácia poskytuje mnoho spôsobov, ktorými je možné konfigurovať preview a tým zvýšiť produktivitu (napr. produktivitu ľudí, ktorí sa k projektu pridajú neskôr). Nižšie je uvedený minimálny príklad @Preview bez použitia ktoréhokoľvek z jeho parametrov. Funkciu je možné napísať ručne alebo pomocou prev live template.
@Preview
@Composable
fun ExamplePreview() {
Button(
modifier = Modifier.fillMaxWidth(),
onClick = {},
content = { Text(text = "Button") })
}
Preview parametre
Preview anotácie nachádzajúci sa v balíku ui.tooling má mnoho parametrov definujúcich spôsob, akým bude composable vyrendrovaný.
val name: String = "",
val group: String = "",
@IntRange(from = 1) val apiLevel: Int = -1,
val widthDp: Int = -1,
val heightDp: Int = -1,
val locale: String = "",
@FloatRange(from = 0.01) val fontScale: Float = 1f,
val showSystemUi: Boolean = false,
val showBackground: Boolean = false,
val backgroundColor: Long = 0,
@UiMode val uiMode: Int = 0,
@Device val device: String = Devices.DEFAULT
name
Každý preview je možné rozpoznať podľa jeho názvu, ktorý je štandardne názvom funkcie preview. Vo vyššie uvedenom príklade je názov ukážky ExamplePreview.
@Preview(name = "Some preview name")
@Composable
fun ExamplePreview() {
...
}
group
Podobné preview je možné pre lepšiu čitateľnosť zoskupiť. Môže to byť naozaj užitočné, ak existuje veľa composable previews.
@Preview(group = "Buttons")
@Composable
fun ButtonEnabledPreview() {...}
@Preview(group = "Buttons")
@Composable
fun ButtonDisabledPreview() {...}
@Preview(group = "Texts")
@Composable
fun TextBigPreview() {...}
@Preview(group = "Texts")
@Composable
fun TextSmallPreview() {...}
apiLevel
Úroveň API použitá pri renderovaní preview.
widthDP a heightDp
Štandardne má okno preview šírku a výšku použitej composable položky (správanie je podobné ako wrap_content v xml layoutoch). Toto je možné zmeniť pomocou widthDp a heightDp. Maximálna hodnota pre šírku aj výšku je 2000. Nastavenie vyššieho čísla nezväčší šírku preview.
@Preview(widthDp = 100, heightDp = 100)
@Composable
fun ExamplePreview() {...}
locale
Určuje, ktoré miestne nastavenie sa má použiť na vykreslenie preview (parameter akceptuje tento formát miestneho nastavenia). Ak sa nepoužije, použijú sa predvolené zdroje. Tento parameter môže byť užitočný, ak je vaša aplikácia viacjazyčná.
V nižšie uvedenom príklade je niekoľko vecí, na ktoré sa treba pozrieť. Na jednej composable zostave je možné použiť viacero preview anotácií, čo vedie k viacnásobným previews. Druhý preview využíva francúzske zdroje.
@Preview
@Preview(locale = "fr")
@Composable
fun ButtonPreview() {
Button(
...
content = { Text(text = stringResource(id = R.string.day_monday)) })
}
fontScale
Môže sa použiť na testovanie škálovateľnosti mierky písma.
showSystemUi
Boolean, ktorý určuje, či má byť v preview status bar a navigation bar.
showBackground a backgroundColor
Ak má showBackground boolean hodnotu true, za preview sa použije predvolená farba pozadia. Túto farbu je možné prispôsobiť parametrom backgroundColor. Mala by sa použiť farba ARGB int.
@Preview(showBackground = true, backgroundColor = 0xff0000)
@Composable
fun ExamplePreview() {...}
uiMode
Konfigurácia režimu používateľského rozhrania sa používa, ak je potrebné zobraziť preview určitých podmienok používateľského rozhrania. Toto je najužitočnejšie, ak sa chcete pozerať na composable v svetlom alebo tmavom režime (alebo v oboch).
@Preview(uiMode = UI_MODE_NIGHT_NO)
@Preview(uiMode = UI_MODE_NIGHT_YES)
@Composable
fun ExamplePreview() {...}
device
Zariadenie, ktoré sa má použiť v preview. V triede Devices je zoznam použiteľných konštánt (väčšinou zariadenia Nexus a Pixel).
@Preview(device = Devices.PIXEL_3A)
@Composable
fun ExamplePreview() {...}
Interactive Mode
Interaktívny režim je možné zapnúť tlačidlom nad preview. Umožňuje vám pracovať s preview podobne ako na zariadení. Je to jednoduchý a rýchly spôsob testovania prvkov s viacerými stavmi, ako je začiarknutie políčka alebo použitie prepínača. Interaktívny režim beží priamo vo vnútri AS, čo vedie k obmedzeniam, ako je zakázaný prístup k sieti alebo zakázaný prístup k súborom.
Ďalšie články zo série Jetpack Compose Basics:
- Vyskúšaj Scaffold a zostav niekoľko materiálových komponentov so správnym rozložením!
- Nauč sa používať Snackbar správne
- Ako načítať obrázky z Bitmapy, Vectoru, Painteru alebo z URL pomocou funkcie Coil
- Ako používať text field composables pre splnenie Material design špecifikácie
- Ako používať Backdrop Scaffold composable
- Hľadáš alternatívu k menu alebo dialógom? Skús Modal Bottom Sheet
- Ako používať a vytvoriť vlastný CompositionLocal