Strategia migracji

Jeśli masz już aplikację opartą na widoku, możesz nie chcieć przepisywać jej całej Cały interfejs jednocześnie. Ta strona pomoże Ci dodać nowe komponenty tworzenia wiadomości do istniejącej aplikacji. Aby zacząć korzystać z funkcji tworzenia wiadomości w aplikacji, zobacz Konfigurowanie funkcji tworzenia wiadomości dla istniejącej aplikacji.

Jetpack Compose od samego początku projektowano z funkcją interoperacyjności w trybie wyświetlania. Ta funkcja oznacza, że możesz przenieść istniejącą aplikację opartą na widoku do narzędzia Compose a jednocześnie tworzyć nowe funkcje. Aby przejść do funkcji Compose, zalecamy stopniową migrację, w której funkcje tworzenia i wyświetlania bazy kodu aż do momentu, gdy aplikacja będzie w pełni dostępna w narzędziu Compose.

Etapy migracji aplikacji wykorzystującej widoki do tworzenia wiadomości
Rysunek 1. Etapy migracji aplikacji wykorzystującej widoki do tworzenia wiadomości

Aby przenieść aplikację do usługi Compose, wykonaj te czynności:

  1. Twórz nowe ekrany za pomocą funkcji Utwórz.
  2. Podczas tworzenia funkcji zidentyfikuj elementy wielokrotnego użytku i zacznij je tworzyć biblioteki typowych komponentów interfejsu użytkownika.
  3. Zastępuj istniejące funkcje jeden ekran po drugim.

Tworzenie nowych ekranów za pomocą funkcji Utwórz

Korzystanie z Utwórz, by tworzyć nowe funkcje zajmujące cały ekran, aby zachęcić użytkowników do zapoznania się z funkcją Compose. Dzięki tej strategii możesz dodawać nowe funkcje i korzystaj z zalet funkcji tworzenia wiadomości, jednocześnie dbając o na potrzeby firmy.

Nowy ekran napisany w funkcji Utwórz
Rysunek 2. Nowy ekran zapisany w funkcji tworzenia wiadomości

Gdy używasz funkcji Utwórz do tworzenia nowych ekranów w swojej istniejącej aplikacji, działać zgodnie z ograniczeniami architektury aplikacji. Jeśli używasz Fragmenty i komponent Nawigacja, musisz utworzyć nowy fragment i zawartość w narzędziu Compose.

Aby użyć funkcji Utwórz we fragmencie, zwróć ComposeView w parametrze onCreateView() metoda cyklu życia Twojego fragmentu. ComposeView ma Metoda setContent(), w której można podać funkcję kompozycyjną.

class NewFeatureFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        return ComposeView(requireContext()).apply {
            setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
            setContent {
                NewFeatureScreen()
            }
        }
    }
}

Zobacz ComposeView we fragmentach, aby dowiedzieć się więcej.

Dodawanie nowych funkcji na dotychczasowych ekranach

Istniejący ekran z różnymi widokami i tworzeniem wiadomości
Rysunek 3. Istniejący ekran z różnymi widokami i tworzeniem wiadomości

Możesz również skorzystać z przycisku Utwórz na istniejącym ekranie w widoku, jeśli nowa funkcja są częścią istniejącego ekranu. Aby to zrobić, dodaj ComposeView do Pozwala wyświetlać hierarchię tak samo jak każdy inny widok.

Załóżmy na przykład, że chcesz dodać widok dziecka do elementu LinearLayout. Możesz to zrobić w pliku XML w następujący sposób:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <TextView
      android:id="@+id/text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" />

  <androidx.compose.ui.platform.ComposeView
      android:id="@+id/compose_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent" />
</LinearLayout>

Po zwiększeniu widoku możesz później odwołać się do ComposeView w i wywołać setContent().

Aby dowiedzieć się więcej o ComposeView, zapoznaj się z artykułem o interfejsach API współdziałania.

Utwórz bibliotekę typowych komponentów UI

Tworząc funkcje w Compose, szybko zdasz sobie sprawę, że tworząc bibliotekę komponentów. Tworzenie biblioteki typowych komponentów UI zapewnia jedno źródło wiarygodnych danych dla komponentów aplikacji ułatwiają ponowne wykorzystanie. Kompilowane funkcje mogą wtedy zależeć od tej biblioteki. Ten jest szczególnie przydatna, jeśli tworzysz system projektowania niestandardowego Utwórz.

W zależności od rozmiaru aplikacji ta biblioteka może być osobnym pakietem, modułem, lub moduł biblioteczny. Więcej informacji o porządkowaniu modułów w aplikacji znajdziesz w znajdziesz w przewodniku po modularyzacji aplikacji na Androida.

Zastępowanie istniejących funkcji funkcją Utwórz

Możesz nie tylko tworzyć nowe funkcje w funkcji Utwórz, ale też stopniowo przenieść istniejące funkcje aplikacji, aby móc korzystać z funkcji tworzenia wiadomości.

Aplikacja tylko w trybie tworzenia może przyspieszyć programowanie. zmniejsz rozmiar pliku APK i czas kompilacji aplikacji. Zobacz Porównanie funkcji tworzenia i wyświetlania skuteczność reklam, aby dowiedzieć się więcej.

Proste ekrany

Pierwsze kroki podczas migracji istniejących funkcji do Compose są proste ekrany. Może to być ekran powitalny, na ekranie ustawień, na którym dane wyświetlane w interfejsie są względnie statyczne.

Skopiuj ten plik XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <TextView
      android:id="@+id/title_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/title"
      android:textAppearance="?attr/textAppearanceHeadline2" />

  <TextView
      android:id="@+id/subtitle_text"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="@string/subtitle"
      android:textAppearance="?attr/textAppearanceHeadline6" />

  <TextView
      android:id="@+id/body_text"
      android:layout_width="wrap_content"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:text="@string/body"
      android:textAppearance="?attr/textAppearanceBody1" />

  <Button
      android:id="@+id/confirm_button"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="@string/confirm"/>
</LinearLayout>

Plik XML można przepisać w funkcji Compose w kilku wierszach:

@Composable
fun SimpleScreen() {
    Column(Modifier.fillMaxSize()) {
        Text(
            text = stringResource(R.string.title),
            style = MaterialTheme.typography.headlineMedium
        )
        Text(
            text = stringResource(R.string.subtitle),
            style = MaterialTheme.typography.headlineSmall
        )
        Text(
            text = stringResource(R.string.body),
            style = MaterialTheme.typography.bodyMedium
        )
        Spacer(modifier = Modifier.weight(1f))
        Button(onClick = { /* Handle click */ }, Modifier.fillMaxWidth()) {
            Text(text = stringResource(R.string.confirm))
        }
    }
}

Widok mieszany i ekrany tworzenia

Ekran, który zawiera już fragment kodu tworzenia wiadomości, za pełną migrację do Compose. W zależności od stopnia złożoności ekranu możesz przenieść go w całości do Compose lub zrobić to pojedynczo. Jeśli na ekranie rozpoczynającym się od tworzenia wiadomości w poddrzewie hierarchii UI, kontynuowano przenosić elementy interfejsu do momentu, aż cały ekran znajdzie się w narzędziu Compose. To podejście metodzie od dołu.

Podejście od dołu do migracji mieszanego interfejsu widoków danych i tworzenia wiadomości do usługi Compose
Rysunek 4. Podejście od dołu do migracji mieszanych interfejsów widoków danych i tworzenia wiadomości do usługi Compose

Usuwanie fragmentów i komponentu Nawigacja

Gdy usuniesz wszystkie elementy mapy, możesz przejść do Narzędzia nawigacji i zastąp je odpowiednimi elementami kompozycyjnymi na poziomie ekranu. Na poziomie ekranu elementy kompozycyjne mogą zawierać mieszankę zawartości tworzenia i wyświetlania, ale wszystkie Aby można było włączyć funkcję Navigation Compose, miejsca docelowe nawigacji muszą być kompozycyjne migracji danych. Do tego czasu nadal używaj Komponent nawigacji oparty na fragmentach w mieszanym widoku i tworzeniu bazy kodu. Przeczytaj artykuł Migracja Jetpack Navigation do Navigation Compose, aby uzyskać instrukcje. znajdziesz więcej informacji.

Dodatkowe materiały

Zapoznaj się z dodatkowymi materiałami, by dowiedzieć się więcej o migracji istniejąca aplikacja Widokowa do tworzenia wiadomości:

Dalsze kroki

Znasz już strategię migracji istniejących kampanii opartych na wyświetleniach aplikacji, zapoznaj się z informacjami na temat interfejsów API współdziałania, aby dowiedzieć się więcej.