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

আপনার অ্যাপটি Compose-এ স্থানান্তর করতে, এই ধাপগুলো অনুসরণ করুন:
- Compose ব্যবহার করে নতুন স্ক্রিন তৈরি করুন।
- ফিচার তৈরি করার সময়, পুনরায় ব্যবহারযোগ্য উপাদানগুলো শনাক্ত করুন এবং সাধারণ UI কম্পোনেন্টগুলোর একটি লাইব্রেরি তৈরি করা শুরু করুন।
- বিদ্যমান বৈশিষ্ট্যগুলো একেকটি স্ক্রিন করে প্রতিস্থাপন করুন।
Compose দিয়ে নতুন স্ক্রিন তৈরি করুন
পুরো স্ক্রিন জুড়ে থাকা নতুন ফিচার তৈরি করতে কম্পোজ ব্যবহার করাই হলো এর ব্যবহার বাড়ানোর সেরা উপায়। এই কৌশলের মাধ্যমে, আপনি আপনার কোম্পানির ব্যবসায়িক চাহিদা মেটানোর পাশাপাশি কম্পোজের সুবিধাসমূহ কাজে লাগিয়ে নতুন ফিচার যোগ করতে পারবেন।

যখন আপনি আপনার বিদ্যমান অ্যাপে নতুন স্ক্রিন তৈরি করতে Compose ব্যবহার করেন, তখনও আপনি আপনার অ্যাপের আর্কিটেকচারের সীমাবদ্ধতার মধ্যেই কাজ করেন। যদি আপনি Fragments এবং Navigation কম্পোনেন্ট ব্যবহার করেন, তাহলে আপনাকে একটি নতুন Fragment তৈরি করতে হবে এবং Compose-এ তার বিষয়বস্তু রাখতে হবে।
একটি Fragment-এ Compose ব্যবহার করতে, আপনার Fragment-এর 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() } } } }
আরও জানতে Fragments-এর ComposeView দেখুন।
বিদ্যমান স্ক্রিনগুলিতে নতুন বৈশিষ্ট্য যোগ করুন

আপনি একটি বিদ্যমান ভিউ-ভিত্তিক স্ক্রিনেও কম্পোজ ব্যবহার করতে পারেন, যদি আপনি যে নতুন ফিচারটি যোগ করছেন তা কোনো বিদ্যমান স্ক্রিনের অংশ হয়। এটি করার জন্য, অন্য যেকোনো ভিউ-এর মতোই ভিউ হায়ারার্কিতে একটি 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 সম্পর্কে আরও জানতে, Interoperability API-গুলো দেখুন।
সাধারণ UI উপাদানগুলির একটি লাইব্রেরি তৈরি করুন
Compose ব্যবহার করে ফিচার তৈরি করার সময় আপনি দ্রুতই বুঝতে পারবেন যে, এর ফলে আপনি কম্পোনেন্টের একটি লাইব্রেরি তৈরি করে ফেলছেন। সাধারণ UI কম্পোনেন্টগুলোর একটি লাইব্রেরি তৈরি করলে আপনার অ্যাপে এই কম্পোনেন্টগুলোর জন্য একটি নির্ভরযোগ্য উৎস থাকে এবং এর মাধ্যমে পুনঃব্যবহারযোগ্যতা বৃদ্ধি পায়। এরপর আপনার তৈরি করা ফিচারগুলো এই লাইব্রেরির উপর নির্ভর করতে পারে। আপনি যদি Compose-এ একটি কাস্টম ডিজাইন সিস্টেম তৈরি করেন, তবে এই কৌশলটি বিশেষভাবে কার্যকর।
আপনার অ্যাপের আকারের উপর নির্ভর করে, এই লাইব্রেরিটি একটি আলাদা প্যাকেজ, মডিউল বা লাইব্রেরি মডিউল হতে পারে। আপনার অ্যাপে মডিউলগুলো সাজানোর বিষয়ে আরও তথ্যের জন্য, "অ্যান্ড্রয়েড অ্যাপ মডিউলারাইজেশন গাইড" দেখুন।
বিদ্যমান বৈশিষ্ট্যগুলিকে কম্পোজ দিয়ে প্রতিস্থাপন করুন
নতুন ফিচার তৈরি করতে Compose ব্যবহার করার পাশাপাশি, আপনি আপনার অ্যাপের বিদ্যমান ফিচারগুলোকেও ধীরে ধীরে Compose-এর সুবিধা নেওয়ার জন্য স্থানান্তর করতে চাইবেন।
আপনার অ্যাপকে শুধুমাত্র Compose-ভিত্তিক করলে তা আপনার ডেভেলপমেন্টের গতি বাড়াতে পারে এবং সেই সাথে আপনার অ্যাপের APK সাইজ ও বিল্ড টাইমও কমাতে পারে। আরও জানতে Compose এবং View-এর পারফরম্যান্স তুলনা দেখুন।
সাধারণ স্ক্রিন
বিদ্যমান ফিচারগুলোকে কম্পোজে স্থানান্তরিত করার সময় প্রথমেই যে জায়গাগুলোতে নজর দিতে হবে, সেগুলো হলো সাধারণ স্ক্রিন। সাধারণ স্ক্রিনগুলো হতে পারে একটি ওয়েলকাম স্ক্রিন, একটি কনফার্মেশন স্ক্রিন, বা একটি সেটিং স্ক্রিন, যেখানে 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 ফাইলটি Compose-এ কয়েকটি লাইনে পুনরায় লেখা যেতে পারে:
@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)) } } }
মিশ্র দৃশ্য এবং কম্পোজ স্ক্রিন
যে স্ক্রিনে আগে থেকেই কিছু Compose কোড রয়েছে, সেটিকে সম্পূর্ণরূপে Compose-এ স্থানান্তরিত করার জন্য আরেকটি ভালো বিকল্প হতে পারে। স্ক্রিনের জটিলতার উপর নির্ভর করে, আপনি এটিকে সম্পূর্ণরূপে Compose-এ স্থানান্তরিত করতে পারেন, অথবা অংশ-অংশ করে করতে পারেন। যদি স্ক্রিনটি UI হায়ারার্কির একটি সাবট্রি-তে Compose দিয়ে শুরু হয়ে থাকে, তাহলে আপনি UI এলিমেন্টগুলো ততক্ষণ পর্যন্ত স্থানান্তরিত করতে থাকবেন যতক্ষণ না পুরো স্ক্রিনটি Compose-এ চলে আসে। এই পদ্ধতিকে বটম-আপ অ্যাপ্রোচও বলা হয়।

খণ্ডাংশ এবং নেভিগেশন উপাদান অপসারণ করা
আপনার সমস্ত ফ্র্যাগমেন্ট সরিয়ে সেগুলোকে সংশ্লিষ্ট স্ক্রিন-লেভেল কম্পোজেবল দিয়ে প্রতিস্থাপন করতে পারলেই আপনি নেভিগেশন কম্পোজে মাইগ্রেট করতে পারবেন। স্ক্রিন-লেভেল কম্পোজেবলগুলোতে কম্পোজ এবং ভিউ কন্টেন্টের মিশ্রণ থাকতে পারে, কিন্তু নেভিগেশন কম্পোজ মাইগ্রেশন সক্ষম করার জন্য সমস্ত নেভিগেশন ডেস্টিনেশন অবশ্যই কম্পোজেবল হতে হবে। ততদিন পর্যন্ত, আপনার মিশ্র ভিউ এবং কম্পোজ কোডবেসে ফ্র্যাগমেন্ট-ভিত্তিক নেভিগেশন কম্পোনেন্ট ব্যবহার করা চালিয়ে যাওয়া উচিত। আরও তথ্যের জন্য "জেটপ্যাক নেভিগেশন থেকে নেভিগেশন কম্পোজে মাইগ্রেট করুন" দেখুন।
অতিরিক্ত সম্পদ
আপনার বিদ্যমান ভিউ-ভিত্তিক অ্যাপটিকে কম্পোজে স্থানান্তরিত করার বিষয়ে আরও জানতে নিম্নলিখিত অতিরিক্ত রিসোর্সগুলো দেখুন:
- কোডল্যাব
- জেটপ্যাক কম্পোজে স্থানান্তর : এই কোডল্যাবে শিখুন কিভাবে সানফ্লাওয়ার অ্যাপের অংশবিশেষ কম্পোজে স্থানান্তর করতে হয়।
- ব্লগ পোস্ট
- সানফ্লাওয়ারকে জেটপ্যাক কম্পোজে স্থানান্তর : এই পৃষ্ঠায় বর্ণিত কৌশল ব্যবহার করে কীভাবে সানফ্লাওয়ারকে কম্পোজে স্থানান্তর করা হয়েছিল তা জানুন।
- জেটপ্যাক কম্পোজ ইন্টারঅপ: RecyclerView-তে কম্পোজের ব্যবহার :
RecyclerViewতে কীভাবে দক্ষতার সাথে কম্পোজ ব্যবহার করতে হয় তা শিখুন।
পরবর্তী পদক্ষেপ
আপনার বিদ্যমান ভিউ-ভিত্তিক অ্যাপটি মাইগ্রেট করার কৌশল সম্পর্কে এখন যেহেতু আপনি জানেন, আরও জানতে ইন্টারঅপারেবিলিটি এপিআইগুলো অন্বেষণ করুন।
{% হুবহু %}আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলেও লিঙ্কের লেখা প্রদর্শিত হয়।
- ভিউতে কম্পোজ ব্যবহার করা
- স্ক্রোল করুন
-
RecyclerViewLazy list-এ স্থানান্তর করুন