Taşıma stratejisi

Görüntülemeye dayalı mevcut bir uygulamanız varsa kullanıcı arayüzünün tamamını tek seferde yeniden yazmak istemeyebilirsiniz. Bu sayfa, mevcut uygulamanıza yeni Oluştur bileşenleri eklemenize yardımcı olur. Oluştur'u uygulamanızda kullanmaya başlamak için Mevcut bir uygulama için Oluştur'u ayarlama başlıklı makaleyi inceleyin.

Jetpack Compose, View birlikte çalışabilirliği göz önünde bulundurularak tasarlanmıştır. Bu işlev sayesinde, yeni özellikler oluşturmaya devam ederken mevcut görüntüleme tabanlı uygulamanızı Oluştur'a taşıyabilirsiniz. Compose'a geçiş yapmak için uygulamanız tamamen Compose'a geçene kadar kod tabanınızda Compose ve Görünümler'in birlikte bulunduğu kademeli bir geçiş yapmanızı öneririz.

Görüntülemeye dayalı bir uygulamanın Compose'a taşınma aşamaları
Şekil 1. Görüntülemeye dayalı bir uygulamanın Oluştur'a taşınma aşamaları

Uygulamanızı Compose'a taşımak için aşağıdaki adımları uygulayın:

  1. Oluştur ile yeni ekranlar oluşturun.
  2. Özellikler oluştururken yeniden kullanılabilir öğeleri tanımlayın ve ortak kullanıcı arayüzü bileşenleri kitaplığı oluşturmaya başlayın.
  3. Mevcut özellikleri tek ekranda değiştirin.

Oluştur ile yeni ekranlar oluşturma

Bir ekranın tamamını kapsayan yeni özellikler oluşturmak için Compose'u kullanmak, Compose'u kullanmaya başlamanızı sağlamanın en iyi yoludur. Bu stratejiyle, şirketinizin iş ihtiyaçlarını karşılarken özellik ekleyebilir ve Oluştur'un avantajlarından yararlanabilirsiniz.

Oluştur'da yazılmış yeni bir ekran
Şekil 2. Oluştur'da yazılmış yeni bir ekran

Mevcut uygulamanızda yeni ekranlar oluşturmak için Derle'yi kullandığınızda uygulamanızın mimarisinin kısıtlamaları altında çalışmaya devam edersiniz. Fragment'leri ve gezinme bileşenini kullanıyorsanız yeni bir Fragment oluşturmanız ve içeriğini Oluştur'da bulundurmanız gerekir.

Bir Fragment'te Oluştur'u kullanmak için Fragment'inizin onCreateView() yaşam döngüsü yönteminde bir ComposeView döndürün. ComposeView, bir birleşik işlev sağlayabileceğiniz bir setContent() yöntemine sahiptir.

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

Daha fazla bilgi için Fragmentlerde ComposeView başlıklı makaleyi inceleyin.

Mevcut ekranlara yeni özellikler ekleme

Görüntüleme ve Oluşturma'nın birlikte bulunduğu mevcut bir ekran
Şekil 3. Görünümler ve Oluştur'un birlikte bulunduğu mevcut bir ekran

Eklediğiniz yeni özellik mevcut bir ekranın parçasıysa Oluştur'u mevcut görüntü tabanlı bir ekranda da kullanabilirsiniz. Bunu yapmak için diğer tüm görünümlerde olduğu gibi görünüm hiyerarşisine bir ComposeView ekleyin.

Örneğin, bir LinearLayout öğesine alt görünüm eklemek istediğinizi varsayalım. Bunu XML'de aşağıdaki gibi yapabilirsiniz:

<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>

Görünüm şişirildikten sonra hiyerarşide ComposeView'e referans verebilir ve setContent()'ı çağırabilirsiniz.

ComposeView hakkında daha fazla bilgi edinmek için İşbirlikçi API'ler başlıklı makaleyi inceleyin.

Ortak kullanıcı arayüzü bileşenleri kitaplığı oluşturma

Compose ile özellik oluştururken bir bileşen kitaplığı oluşturduğunuzu kısa sürede fark edersiniz. Ortak kullanıcı arayüzü bileşenleri kitaplığı oluşturmak, uygulamanızda bu bileşenler için tek bir bilgi kaynağına sahip olmanızı ve yeniden kullanılabilirliği desteklemenizi sağlar. Bu durumda, oluşturduğunuz özellikler bu kitaplığa bağlı olabilir. Bu teknik, özellikle Oluştur'da özel bir tasarım sistemi oluşturuyorsanız yararlıdır.

Bu kitaplık, uygulamanızın boyutuna bağlı olarak ayrı bir paket, modül veya kitaplık modülü olabilir. Uygulamanızdaki modülleri düzenleme hakkında daha fazla bilgi için Android uygulaması modülerleştirme kılavuzuna göz atın.

Mevcut özellikleri Oluştur ile değiştirme

Yeni özellikler oluşturmak için Compose'u kullanmanın yanı sıra, Compose'un avantajlarından yararlanmak için uygulamanızdaki mevcut özellikleri kademeli olarak taşımanız gerekir.

Uygulamanızın yalnızca Compose'da oluşturulmasını sağlamak geliştirme sürecinizi hızlandırabilir, ayrıca uygulamanızın APK boyutunu ve derleme sürelerini azaltabilir. Daha fazla bilgi edinmek için Compose ve Görüntüleme performansını karşılaştırma başlıklı makaleyi inceleyin.

Basit ekranlar

Mevcut özellikleri Compose'a taşırken ilk bakmanız gereken yerler basit ekranlardır. Basit ekranlar; karşılama ekranı, onay ekranı veya kullanıcı arayüzünde gösterilen verilerin nispeten statik olduğu bir ayar ekranı olabilir.

Aşağıdaki XML dosyasını ele alalım:

<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>

XML dosyası, Oluştur'da birkaç satırda yeniden yazılabilir:

@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))
        }
    }
}

Karma görünüm ve Oluşturma ekranları

Zaten biraz Oluştur kodu içeren ekranlar da tamamen Oluştur'a taşınmak için iyi adaylardır. Ekranın karmaşıklığına bağlı olarak, ekranı tamamen Compose'a taşıyabilir veya parça parça taşıyabilirsiniz. Ekran, kullanıcı arayüzü hiyerarşisinin alt ağacında Oluştur ile başladıysa ekranın tamamı Oluştur'da olana kadar kullanıcı arayüzü öğelerini taşımaya devam edersiniz. Bu yaklaşıma aşağıdan yukarıya yaklaşım da denir.

Karma Görünümler ve Oluştur kullanıcı arayüzünü Oluştur&#39;a taşımak için aşağıdan yukarıya yaklaşım
Şekil 4. Karma Görünümler ve Oluştur kullanıcı arayüzünü Oluştur'a taşımak için aşağıdan yukarıya yaklaşım

Fragment'leri ve Gezinme bileşenini kaldırma

Tüm Fragment'lerinizi kaldırıp ilgili ekran düzeyinde kompozisyonlarla değiştirdikten sonra Gezinme Oluşturma'ya geçebilirsiniz. Ekran düzeyindeki birleştirilebilirler Oluştur ve Görüntüle içeriklerinin bir karışımını içerebilir ancak Navigasyon Oluştur'a geçişi etkinleştirmek için tüm gezinme hedefleri birleştirilebilir olmalıdır. O zamana kadar, karma Görüntüleme ve Oluşturma kod tabanınızda Fragment tabanlı gezinme bileşenini kullanmaya devam etmeniz gerekir. Daha fazla bilgi için Jetpack Navigation'ı Navigation Compose'a taşıma başlıklı makaleyi inceleyin.

Ek kaynaklar

Mevcut görüntüleme tabanlı uygulamanızı Oluştur'a taşıma hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynaklara göz atın:

Sonraki adımlar

Mevcut görüntüleme tabanlı uygulamanızı taşımak için uygulayabileceğiniz stratejiyi öğrendiğinize göre daha fazla bilgi edinmek için İnteroperabilite API'lerini inceleyin.