Pakiet interfejsu
Pakiety interfejsu to nowy, elastyczny sposób wymiany informacji z interfejsu. Projektanci używają Usługa przekaźnika dla wtyczki Figma do tworzenia pakietów UI z komponentów w Figmie. Wykonuję deklaruje on, że projekt jest gotowy do użycia przez programistów. Następnie projektanci tworzą przez podanie adresu URL pliku projektu Figma.
Deweloperzy używają wtyczki Android Studio do importowania pakietów UI z narzędzia Figma pliku projektu. W projekcie Android Studio pakiet interfejsu zawiera funkcje deklaratywne opisy zaimportowanych komponentów Figma wraz z powiązanymi zasobami, w tym pliki czcionek, obrazy i pliki SVG.
Pakiety interfejsu to trwałe artefakty i można je zatwierdzić do kontroli źródła.
Gdy deweloper zaimportuje pakiet Figma w projekcie Android Studio, pliki
dodano do projektu w folderze ui-packages
. Oto przykład zaimportowanej
Pakiet interfejsu:
Projekt z zaimportowanym pakietem interfejsu zawiera te pliki:
[component_name].json
– plik JSON opisujący komponent (np.story_card.json
).config.json
– przechowuje metadane określonego pakietu interfejsu użytkownika.fonts/
– folder, w którym przechowywane są zasoby czcionek używane przez komponent (jeśli są używane). dowolne.*.png
– komponenty z obrazem używane w komponencie (np.menu.png
), jeśli dowolne.[component_name]_preview.png
– obraz podglądu komponentu (dla np.story_card_preview.png
).*.svg
– zasoby graficzne wektorowe użyte w komponencie (np. trójkąta).FONTS.txt
– lista użytych czcionek (jeśli istnieją).DEPS.txt
– nazwy wszystkich komponentów podrzędnych.VERSION.txt
– wersja usługi Relay używana do tworzenia i importowania interfejsu użytkownika Przesyłka.
Te dane są przechowywane pod nazwą src/main/ui-packages/[package_name]
.
Usuwam pakiety interfejsu
Aby usunąć z projektu pakiet interfejsu, możesz usunąć folder w
ui-packages/
Ponowne kompilowanie projektu po usunięciu folderu spowoduje usunięcie
wygenerowany kod.
Wygenerowana struktura folderu z kodem
Podczas kompilacji projektu te pakiety UI są przekształcane w wygenerowany kod
zawierające funkcje @Composable
, które deweloper może wywołać. Są to
przechowywane w ramach subskrypcji build/generated/
. W widoku Androida są one widoczne jako java
(generated)
i res
w katalogu modułów (w tym przypadku są to moduły app
).
Poniższe zrzuty ekranu pokazują pliki w tym katalogu:
Zasoby, takie jak czcionki i obrazy, są kopiowane do:
build/generated/res/relay/
Wygenerowany kod każdego pakietu UI jest umieszczany w
build/generated/source/relay/
Folder kodu każdego wygenerowanego pakietu UI zawiera pojedynczy plik odpowiadający zaimportowanemu komponentowi. Dodatkowo zawiera jeden plik z końcówkąFonts.kt
, który zawiera odwołania do zasobów czcionek używanych przez komponent.Dostępna jest też biblioteka środowiska wykonawczego
com.google.relay.compose
, która udostępnia funkcji używanych przez wygenerowany kod.
Wygenerowana struktura kodu
Elementy kompozycyjne
Komponenty w Figmie składają się z warstw. Na przykład ten projekt zawiera warstwa ramki Hello Card, która zawiera dwie warstwy podrzędne: Obraz (obraz warstwa) i Tytuł (warstwa tekstowa):
Gdy ten projekt zostanie przekonwertowany na kod, utworzymy osobny dla każdej warstwy, gdzie nazwa warstwy Figma to nazwa funkcja kompozycyjna (zmodyfikowana zgodnie ze składnią Kotlin). Warstwy są przetłumaczone w następujący sposób:
Warstwa Hello Card:
@Composable fun HelloCard( modifier: Modifier = Modifier, title: String ) { TopLevel(modifier = modifier) { Image() Title(title = title) } ]
Warstwa obrazu:
@Composable fun Image(modifier: Modifier = Modifier) { Image(...) }
Warstwa tytułowa:
@Composable fun Title( title: String, modifier: Modifier = Modifier ) { Text(...) }
Przetłumaczone warianty i parametry Figmy
Jeśli komponent Figma ma kilka wariantów, wygenerowany kod zawiera element enum dla każdej właściwości wariantu. Wartości w każdej wyliczeniu wariantów odpowiadają wartościom wartości właściwości tego wariantu. Funkcja kompozycyjna zawiera parametr wyliczeniowa wariantów.
// Design to select for NewsCard
enum class View {
HeroItem,
ArticleItem,
AudioItem
}
/**
* This composable was generated from the UI Package 'news_card'.
* Generated code; do not edit directly
*/
@Composable
fun NewsCard(
modifier: Modifier = Modifier,
view: View = View.HeroItem,
onNewsCardTapped: () -> Unit = {},
thumbnail: Painter,
headline: String,
author: String,
date: String,
onMenuTapped: () -> Unit = {}
) {
when (view) {
View.HeroItem -> TopLevelViewHeroItem(...) {
ContentViewHeroItem { ... }
}
View.ArticleItem -> TopLevelViewArticleItem(...) {
ContentViewArticleItem { ... }
}
View.AudioItem -> TopLevelViewAudioItem(...) {
ContentViewAudioItem { ... }
}
}
}
}
Każdy parametr treści i moduł obsługi interakcji komponentu Figma
przeniesione na parametr funkcji kompozycyjnej. Element kompozycyjny NewsCard
poniżej
zawiera cztery parametry treści (jeden obraz i trzy ciągi znaków) oraz dwa interakcje.
modułów obsługi (dwóch ostatnich parametrów).
/**
* This composable was generated from the UI Package 'news_card'.
* Generated code; do not edit directly
*/
@Composable
fun NewsCard(
modifier: Modifier = Modifier,
view: View = View.HeroItem,
thumbnail: Painter,
headline: String,
author: String,
date: String,
onNewsCardTapped: () -> Unit = {},
onMenuTapped: () -> Unit = {}
) {...}
Polecane dla Ciebie
- Uwaga: tekst linku wyświetla się, gdy JavaScript jest wyłączony
- Ograniczenia i rozwiązywanie problemów
- Proces w Android Studio
- Wyświetlanie podglądu UI za pomocą funkcji kompozycyjnych