মাইগ্রেশন কৌশল

আপনার যদি একটি বিদ্যমান ভিউ-ভিত্তিক অ্যাপ থাকে, তাহলে আপনি হয়ত এর সম্পূর্ণ UI একবারে পুনরায় লিখতে চাইবেন না। এই পৃষ্ঠাটি আপনাকে আপনার বিদ্যমান অ্যাপে নতুন রচনা উপাদান যোগ করতে সহায়তা করে। আপনার অ্যাপে রচনা ব্যবহার শুরু করতে, একটি বিদ্যমান অ্যাপের জন্য রচনা সেট আপ দেখুন।

জেটপ্যাক কম্পোজ শুরু থেকেই ভিউ ইন্টারঅপারেবিলিটির সাথে ডিজাইন করা হয়েছিল। এই কার্যকারিতার অর্থ হল আপনি আপনার বিদ্যমান ভিউ-ভিত্তিক অ্যাপটিকে কম্পোজে স্থানান্তর করতে পারেন যখন এখনও নতুন বৈশিষ্ট্যগুলি তৈরি করতে সক্ষম হন৷ রচনায় স্থানান্তরিত করার জন্য, আমরা একটি ক্রমবর্ধমান স্থানান্তরের সুপারিশ করি যেখানে আপনার অ্যাপটি সম্পূর্ণরূপে রচনায় না আসা পর্যন্ত আপনার কোডবেসে রচনা এবং দৃশ্য সহ-অবস্তিত থাকে৷

কম্পোজে ভিউ-ভিত্তিক অ্যাপের মাইগ্রেশনের ধাপ
চিত্র 1 । কম্পোজে ভিউ-ভিত্তিক অ্যাপের মাইগ্রেশনের ধাপ

রচনায় আপনার অ্যাপ স্থানান্তর করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. রচনার মাধ্যমে নতুন স্ক্রিন তৈরি করুন।
  2. আপনি বৈশিষ্ট্যগুলি তৈরি করার সময়, পুনরায় ব্যবহারযোগ্য উপাদানগুলি সনাক্ত করুন এবং সাধারণ UI উপাদানগুলির একটি লাইব্রেরি তৈরি করা শুরু করুন৷
  3. বিদ্যমান বৈশিষ্ট্যগুলি একবারে একটি স্ক্রীন প্রতিস্থাপন করুন।

রচনার মাধ্যমে নতুন স্ক্রিন তৈরি করুন

একটি সম্পূর্ণ স্ক্রীনকে ঘিরে নতুন বৈশিষ্ট্যগুলি তৈরি করতে রচনা ব্যবহার করা আপনার রচনাকে গ্রহণ করার সর্বোত্তম উপায়। এই কৌশলটির সাহায্যে, আপনি বৈশিষ্ট্য যোগ করতে পারেন এবং আপনার কোম্পানির ব্যবসার চাহিদা মেটাতে গিয়ে রচনার সুবিধার সুবিধা নিতে পারেন।

রচনা লিখিত একটি নতুন পর্দা
চিত্র ২ । রচনা লিখিত একটি নতুন পর্দা

আপনি যখন আপনার বিদ্যমান অ্যাপে নতুন স্ক্রিন তৈরি করতে রচনা ব্যবহার করেন, তখনও আপনি আপনার অ্যাপের আর্কিটেকচারের সীমাবদ্ধতার মধ্যে কাজ করছেন। আপনি যদি ফ্র্যাগমেন্ট এবং নেভিগেশন কম্পোনেন্ট ব্যবহার করেন, তাহলে আপনাকে একটি নতুন ফ্র্যাগমেন্ট তৈরি করতে হবে এবং কম্পোজে এর বিষয়বস্তু থাকতে হবে।

একটি ফ্র্যাগমেন্টে কম্পোজ ব্যবহার করতে, আপনার ফ্র্যাগমেন্টের onCreateView() লাইফসাইকেল পদ্ধতিতে একটি ComposeView ফেরত দিন। ComposeView একটি setContent() পদ্ধতি আছে যেখানে আপনি একটি কম্পোজযোগ্য ফাংশন প্রদান করতে পারেন।

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

আরও জানতে খণ্ডে ComposeView দেখুন।

বিদ্যমান স্ক্রিনে নতুন বৈশিষ্ট্য যোগ করুন

মিশ্র দৃশ্য এবং রচনা সহ একটি বিদ্যমান স্ক্রীন
চিত্র 3 । মিশ্র দৃশ্য এবং রচনা সহ একটি বিদ্যমান স্ক্রীন

আপনি একটি বিদ্যমান ভিউ-ভিত্তিক স্ক্রিনে রচনা ব্যবহার করতে পারেন যদি আপনি যে নতুন বৈশিষ্ট্যটি যোগ করছেন তা একটি বিদ্যমান স্ক্রিনের অংশ হয়। এটি করার জন্য, ভিউ হায়ারার্কিতে একটি ComposeView যোগ করুন, অন্য যেকোন ভিউয়ের মতো।

উদাহরণস্বরূপ, বলুন আপনি একটি LinearLayout একটি চাইল্ড ভিউ যোগ করতে চান। আপনি 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/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>

একবার ভিউটি স্ফীত হয়ে গেলে, আপনি পরে অনুক্রমের মধ্যে ComposeView উল্লেখ করতে পারেন এবং setContent() কল করতে পারেন।

ComposeView সম্পর্কে আরও জানতে, ইন্টারঅপারেবিলিটি APIs দেখুন।

সাধারণ UI উপাদানগুলির একটি লাইব্রেরি তৈরি করুন

আপনি যখন রচনার সাথে বৈশিষ্ট্যগুলি তৈরি করছেন, আপনি দ্রুত বুঝতে পারবেন যে আপনি উপাদানগুলির একটি লাইব্রেরি তৈরি করেছেন৷ সাধারণ UI উপাদানগুলির একটি লাইব্রেরি তৈরি করা আপনাকে আপনার অ্যাপে এই উপাদানগুলির জন্য সত্যের একটি একক উত্স থাকতে দেয় এবং পুনরায় ব্যবহারযোগ্যতা প্রচার করে৷ আপনি যে বৈশিষ্ট্যগুলি তৈরি করেন তা এই লাইব্রেরির উপর নির্ভর করতে পারে। এই কৌশলটি বিশেষভাবে উপযোগী যদি আপনি কম্পোজে একটি কাস্টম ডিজাইন সিস্টেম তৈরি করেন।

আপনার অ্যাপের আকারের উপর নির্ভর করে, এই লাইব্রেরিটি একটি পৃথক প্যাকেজ, মডিউল বা লাইব্রেরি মডিউল হতে পারে। আপনার অ্যাপে মডিউল সংগঠিত করার বিষয়ে আরও তথ্যের জন্য, অ্যান্ড্রয়েড অ্যাপ মডুলারাইজেশনের গাইডটি দেখুন।

কম্পোজ দিয়ে বিদ্যমান বৈশিষ্ট্যগুলি প্রতিস্থাপন করুন

নতুন বৈশিষ্ট্যগুলি তৈরি করতে রচনা ব্যবহার করার পাশাপাশি, আপনি রচনার সুবিধা নিতে আপনার অ্যাপে বিদ্যমান বৈশিষ্ট্যগুলিকে ধীরে ধীরে স্থানান্তর করতে চাইবেন৷

আপনার অ্যাপটি শুধুমাত্র রচনার জন্য থাকলে তা আপনার বিকাশকে ত্বরান্বিত করতে পারে এবং আপনার অ্যাপের APK আকার এবং বিল্ড টাইমও কমাতে পারে। আরও জানার জন্য তুলনা রচনা এবং কর্মক্ষমতা দেখুন দেখুন।

সরল পর্দা

কম্পোজে বিদ্যমান বৈশিষ্ট্যগুলি স্থানান্তরিত করার সময় প্রথম স্থানগুলি দেখতে হবে সাধারণ স্ক্রিনগুলি৷ সাধারণ স্ক্রিনগুলি একটি স্বাগত স্ক্রিন, একটি নিশ্চিতকরণ স্ক্রীন বা একটি সেটিং স্ক্রীন হতে পারে যেখানে UI-তে প্রদর্শিত ডেটা তুলনামূলকভাবে স্থির থাকে৷

নিম্নলিখিত 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>

XML ফাইলটি কম্পোজে কয়েকটি লাইনে পুনরায় লেখা যেতে পারে:

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

মিশ্র দৃশ্য এবং রচনা পর্দা

একটি স্ক্রীন যা ইতিমধ্যেই কিছুটা রচনা কোড ধারণ করে তা সম্পূর্ণরূপে কম্পোজে স্থানান্তরিত করার জন্য আরেকটি ভাল প্রার্থী। স্ক্রিনের জটিলতার উপর নির্ভর করে, আপনি হয় এটিকে সম্পূর্ণরূপে কম্পোজে স্থানান্তর করতে পারেন, অথবা টুকরো টুকরো করতে পারেন। যদি স্ক্রীনটি UI অনুক্রমের একটি সাবট্রিতে কম্পোজ দিয়ে শুরু হয়, আপনি UI উপাদানগুলি স্থানান্তর করা চালিয়ে যাবেন যতক্ষণ না পুরো স্ক্রীনটি রচনা করা হয়। এই পদ্ধতিকে বটম-আপ অ্যাপ্রোচও বলা হয়।

একটি মিশ্র দৃশ্য স্থানান্তরিত করার নীচের-আপ পদ্ধতি এবং রচনা করার জন্য UI রচনা করুন৷
চিত্র 4 । একটি মিশ্র দৃশ্য স্থানান্তরিত করার নীচের-আপ পদ্ধতি এবং রচনা করার জন্য UI রচনা করুন৷

টুকরা এবং নেভিগেশন উপাদান অপসারণ

একবার আপনি আপনার সমস্ত টুকরো মুছে ফেলতে এবং সংশ্লিষ্ট স্ক্রীন-স্তরের কম্পোজেবলগুলির সাথে প্রতিস্থাপন করতে সক্ষম হলে আপনি নেভিগেশন রচনায় স্থানান্তর করতে পারেন। স্ক্রীন-স্তরের কম্পোজেবলগুলিতে রচনা এবং দেখুন সামগ্রীর মিশ্রণ থাকতে পারে, তবে নেভিগেশন রচনা স্থানান্তর সক্ষম করতে সমস্ত নেভিগেশন গন্তব্যগুলি অবশ্যই কম্পোজযোগ্য হতে হবে৷ ততক্ষণ পর্যন্ত, আপনার মিশ্র ভিউ এবং কম্পোজ কোডবেসে ফ্র্যাগমেন্ট-ভিত্তিক নেভিগেশন উপাদান ব্যবহার করা চালিয়ে যাওয়া উচিত। আরও তথ্যের জন্য জেটপ্যাক নেভিগেশন নেভিগেশন কম্পোজে মাইগ্রেট করুন দেখুন।

অতিরিক্ত সম্পদ

আপনার বিদ্যমান ভিউ-ভিত্তিক অ্যাপটিকে রচনায় স্থানান্তরিত করার বিষয়ে আরও জানতে নিম্নলিখিত অতিরিক্ত সংস্থানগুলি দেখুন:

পরবর্তী পদক্ষেপ

আপনার বিদ্যমান ভিউ-ভিত্তিক অ্যাপ স্থানান্তর করার জন্য আপনি যে কৌশলটি নিতে পারেন তা এখন আপনি জানেন, আরও জানতে ইন্টারঅপারেবিলিটি API গুলি অন্বেষণ করুন৷

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}