Taşıma stratejisi

Mevcut bir View tabanlı uygulamanız varsa kullanıcı arayüzünün tamamını aynı anda yeniden yazmak istemeyebilirsiniz. Bu sayfa, mevcut uygulamanıza yeni Compose bileşenleri eklemenize yardımcı olur. Uygulamanızda Compose'u kullanmaya başlamak için Mevcut bir uygulama için Compose'u ayarlama bölümüne bakın.

Jetpack Compose, daha en baştan View birlikte çalışabilirlik özelliğiyle tasarlandı. Bu işlev sayesinde, yeni özellikler geliştirmeye devam ederken mevcut Görünüm tabanlı uygulamanızı Compose'a taşıyabilirsiniz. Compose'a geçmek için uygulamanız tam olarak Compose'da kullanıma sunulana kadar Compose ve Görünümler kod tabanınızda birlikte bulunan artımlı taşıma işlemini öneririz.

View tabanlı bir uygulamanın Compose'a taşıma sürecinin aşamaları
Şekil 1. View tabanlı bir uygulamanın Compose'a taşıma sürecinin aşamaları

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

  1. Compose ile yeni ekranlar oluşturun.
  2. Özellikler oluştururken yeniden kullanılabilir öğeleri belirleyin ve ortak kullanıcı arayüzü bileşenlerinden oluşan bir kitaplık oluşturmaya başlayın.
  3. Mevcut özellikleri tek seferde bir ekranla değiştirin.

Compose ile yeni ekranlar oluşturun

Ekranın tamamını kapsayan yeni özellikler oluşturmak için Oluştur'u kullanmak, Compose'u kullanmanızı sağlayan en iyi yöntemdir. Bu stratejiyle, şirketinizin iş ihtiyaçlarını karşılamaya devam ederken özellik ekleyebilir ve Compose'un avantajlarından yararlanabilirsiniz.

Compose'da yeni ekran
Şekil 2. Compose'da yeni bir ekran

Mevcut uygulamanızda yeni ekranlar oluşturmak için Compose'u kullandığınızda uygulamanızın mimarisinin kısıtlamalarıyla çalışmaya devam edersiniz. Parçalar ve Gezinme bileşenini kullanıyorsanız yeni bir Parça oluşturmanız ve içeriğini Oluşturma'da tutmanız gerekir.

Bir Parçada Oluştur'u kullanmak için Parçanızın onCreateView() yaşam döngüsü yönteminde ComposeView değerini döndürün. ComposeView, composable işlev sağlayabileceğiniz bir setContent() yöntemi sunar.

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 edinmek için Parçalarda ComposeView bölümüne bakın.

Mevcut ekranlara yeni özellikler ekleme

Karma Görünümler ve Oluştur özelliklerine sahip mevcut bir ekran
Şekil 3. Karma Görünümler ve Oluştur'a sahip mevcut bir ekran

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

Örneğin, bir LinearLayout öğesine alt görünüm eklemek istediğinizi düşünelim. Bunu XML’de şu şekilde 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 öğesine başvurabilir ve setContent() öğesini çağırabilirsiniz.

ComposeView hakkında daha fazla bilgi edinmek için Birlikte çalışabilirlik API'leri başlıklı makaleyi inceleyin.

Ortak kullanıcı arayüzü bileşenlerinden oluşan bir kitaplık derleme

Compose ile özellik oluştururken bileşenlerden oluşan bir kitaplık oluşturduğunuzu hemen fark edeceksiniz. Ortak kullanıcı arayüzü bileşenlerinden oluşan bir kitaplık oluşturmak, uygulamanızda bu bileşenler için tek bir doğruluk kaynağına sahip olmanıza ve yeniden kullanılabilirliği tanıtmanıza olanak tanır. Derlediğiniz özellikler bu kitaplığa bağlı olabilir. Bu teknik, özellikle Compose'da özel tasarım sistemi oluşturuyorsanız yararlı olur.

Uygulamanızın boyutuna bağlı olarak bu kitaplık 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 uygulama modülerleştirme rehberi'ne göz atın.

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

Yeni özellikler oluşturmak için Compose'u kullanmaya ek olarak, Compose'un avantajlarından yararlanmak için uygulamanızdaki mevcut özellikleri kademeli olarak taşıyın.

Uygulamanızın yalnızca yazma özelliğini kullanması, geliştirme sürecinizi hızlandırabilir ve uygulamanızın APK boyutunu ve derleme sürelerini kısaltabilir. Daha fazla bilgi edinmek için Oluşturma ve Görüntüleme performansını karşılaştırma bölümüne bakın.

Basit ekranlar

Mevcut özellikler Compose'a taşınırken ilk bakılacak yer basit ekranlardır. Basit ekranlar bir karşılama ekranı, onay ekranı veya kullanıcı arayüzünde görüntülenen verilerin nispeten statik olduğu bir ayar ekranı olabilir.

Aşağıdaki XML dosyasını alın:

<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ı, Compose'da birkaç satır içinde 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ı

Biraz Oluştur kodu içeren bir ekran da tamamen Compose'a geçiş için iyi bir adaydır. Ekranın karmaşıklığına bağlı olarak, ekranı tamamen Oluştur'a taşıyabilir veya tek tek yapabilirsiniz. Ekran, kullanıcı arayüzü hiyerarşisinin bir alt ağacında Oluştur ile başladıysa tüm ekran Compose'a girene 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ü Compose&#39;a taşımaya yönelik aşağıdan yukarı yaklaşım
Şekil 4. Karma Görünümler ve Oluşturma kullanıcı arayüzünü Compose'a taşımaya yönelik aşağıdan yukarı yaklaşım

Parçaları ve Gezinme bileşenini kaldırma

Tüm Parçalarınızı kaldırıp ilgili ekran düzeyinde composable'larla değiştirebildiğinizde Gezinme Oluşturma'ya geçebilirsiniz. Ekran düzeyinde composable'lar Oluşturma ve Görüntüleme İçeriği karması içerebilir ancak Gezinme Oluşturma Taşıma işleminin etkinleştirilmesi için tüm gezinme hedeflerinin composable olması gerekir. O zamana kadar, karma Görünüm ve Oluştur kod tabanınızda Parça Tabanlı Gezinme bileşenini kullanmaya devam etmelisiniz. Daha fazla bilgi için Jetpack Gezinmeyi Gezinme Oluşturmaya Taşıma bölümüne bakın.

Ek kaynaklar

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

Sonraki adımlar

Mevcut View tabanlı uygulamanızı taşımak için hangi stratejiyi uygulayabileceğinizi öğrendiğinize göre, daha fazla bilgi edinmek amacıyla Birlikte çalışabilirlik API'lerini keşfedebilirsiniz.