আপনি ভিউস বা কম্পোজ ব্যবহার করে কাস্টম ইন-অ্যাপ প্রপার্টি অ্যানিমেশন ও ট্রানজিশন, কাস্টম ক্রস-অ্যাক্টিভিটি অ্যানিমেশন এবং প্রেডিক্টিভ ব্যাক জেসচার সহ কাস্টম ক্রস-ফ্র্যাগমেন্ট অ্যানিমেশন তৈরি করতে পারেন। কম্পোজ পদ্ধতিটি চেষ্টা করার জন্য, “প্রেডিক্টিভ ব্যাক অ্যানিমেশনের জন্য সমর্থন যোগ করুন” দেখুন।
Progress API ব্যবহার করে কাস্টম ট্রানজিশন যোগ করুন
AndroidX Activity 1.8.0-alpha01 বা তার উচ্চতর সংস্করণের সাথে, আপনি আপনার অ্যাপের প্রেডিক্টিভ ব্যাক জেসচারের জন্য কাস্টম অ্যানিমেশন তৈরি করতে প্রেডিক্টিভ ব্যাক প্রোগ্রেস এপিআই ব্যবহার করতে পারেন। প্রোগ্রেস এপিআই ভিউ অ্যানিমেট করার জন্য সহায়ক, কিন্তু ফ্র্যাগমেন্টের মধ্যে ট্রানজিশন অ্যানিমেট করার ক্ষেত্রে এর সীমাবদ্ধতা রয়েছে। OnBackPressedCallback এর মধ্যে আমরা handleOnBackProgressed , handleOnBackCancelled এবং handleOnBackStarted মেথডগুলো চালু করেছি, যা ব্যবহারকারী সোয়াইপ ব্যাক করার সময় অবজেক্টগুলোকে অ্যানিমেট করে। সিস্টেম দ্বারা প্রদত্ত ডিফল্ট অ্যানিমেশন বা ম্যাটেরিয়াল কম্পোনেন্ট অ্যানিমেশনের চেয়ে বেশি কাস্টমাইজ করার প্রয়োজন হলে এই মেথডগুলো ব্যবহার করুন।
আমরা আশা করি বেশিরভাগ অ্যাপই ব্যাকওয়ার্ড কম্প্যাটিবল AndroidX API ব্যবহার করবে, তবে Android 14 এবং তার পরবর্তী সংস্করণগুলোতে পরীক্ষার জন্য OnBackAnimationCallback ইন্টারফেসের মধ্যে অনুরূপ প্ল্যাটফর্ম API-ও উপলব্ধ রয়েছে।
AndroidX ট্রানজিশনের সাথে Progress API ব্যবহার করুন
Android 14 এবং তার পরবর্তী সংস্করণগুলিতে Predictive Back ট্রানজিশন তৈরি করার জন্য Progress API-গুলি AndroidX Transitions 1.5.0-alpha01 বা তার উচ্চতর সংস্করণের সাথে ব্যবহার করা যেতে পারে।
- ব্যবহারকারী যখন পিছনে সোয়াইপ করে তখন ট্রানজিশনগুলি প্লে করার জন্য
beginDelayedTransitionএর পরিবর্তেTransitionManager#controlDelayedTransitionব্যবহার করুন। -
handleOnBackStartedএর মধ্যে ট্রানজিশনটি তৈরি করুন। -
handleOnBackProgressedমধ্যে back ইভেন্ট ব্যবহার করে ট্রানজিশনটি চালান এবং এর জন্যcurrentFractionকেBackEvent.progressএর সাথে সম্পর্কিত করুন, যা ব্যবহারকারী কতটুকু পিছনে সোয়াইপ করেছেন তা প্রকাশ করে। -
handleOnBackPressedএ ব্যবহারকারী ব্যাক জেসচারটি সম্পন্ন করার পর ট্রানজিশনটি শেষ করুন। - অবশেষে,
handleOnBackCancelledমধ্যে ট্রানজিশনটির অবস্থা রিসেট করুন।
নিম্নলিখিত ভিডিও, কোটলিন কোড এবং এক্সএমএল-এ OnBackPressedCallback ব্যবহার করে দুটি বক্সের মধ্যে একটি কাস্টম ট্রানজিশন দেখানো হয়েছে:
class MyFragment : Fragment() { val transitionSet = TransitionSet().apply { addTransition(Fade(Fade.MODE_OUT)) addTransition(ChangeBounds()) addTransition(Fade(Fade.MODE_IN)) } ... override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val callback = object : OnBackPressedCallback(enabled = false) { var controller: TransitionSeekController? = null @RequiresApi(34) override fun handleOnBackStarted(backEvent: BackEvent) { // Create the transition controller = TransitionManager.controlDelayedTransition( binding.card, transitionSet ) changeTextVisibility(ShowText.SHORT) } @RequiresApi(34) override fun handleOnBackProgressed(backEvent: BackEvent) { // Play the transition as the user swipes back if (controller?.isReady == true) { controller?.currentFraction = backEvent.progress } } override fun handleOnBackPressed() { // Finish playing the transition when the user commits back controller?.animateToEnd() this.isEnabled = false } @RequiresApi(34) override fun handleOnBackCancelled() { // If the user cancels the back gesture, reset the state transition(ShowText.LONG) } } binding.shortText.setOnClickListener { transition(ShowText.LONG) callback.isEnabled = true } this.requireActivity().onBackPressedDispatcher.addCallback(callback) } private fun transition(showText: ShowText) { TransitionManager.beginDelayedTransition( binding.card, transitionSet ) changeTextVisibility(showText) } enum class ShowText { SHORT, LONG } private fun changeTextVisibility(showText: ShowText) { when (showText) { ShowText.SHORT -> { binding.shortText.isVisible = true binding.longText.isVisible = false } ShowText.LONG -> { binding.shortText.isVisible = false binding.longText.isVisible = true } } } }
<?xml version="1.0" encoding="utf-8"?>
...
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...>
<TextView
android:id="@+id/short_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
... />
<TextView
android:id="@+id/long_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
.../>
</androidx.constraintlayout.widget.ConstraintLayout>
Predictive Back ট্রানজিশন নিয়ে কাজ করার সময় নিম্নলিখিত বিষয়গুলো মনে রাখবেন:
- ট্রানজিশনটি প্রেডিক্টিভ ব্যাক সমর্থন করে কিনা তা পরীক্ষা করতে
isSeekingSupportedব্যবহার করুন। - আপনার কাস্টম ট্রানজিশনগুলোর জন্য
isSeekingSupportedওভাররাইড করে true রিটার্ন করান। - প্রতিটি অ্যানিমেশনের জন্য একটি করে কন্ট্রোলার তৈরি করুন।
- প্রেডিক্টিভ ব্যাক ট্রানজিশন AndroidX ট্রানজিশনের সাথে সমর্থিত, কিন্তু ফ্রেমওয়ার্ক ট্রানজিশনের সাথে নয়। ফ্রেমওয়ার্ক ট্রানজিশন ছেড়ে দিয়ে এর পরিবর্তে
Animatorএবং AndroidX ট্রানজিশন ব্যবহার করুন। - প্রেডিক্টিভ ব্যাক ট্রানজিশন শুধুমাত্র অ্যান্ড্রয়েড ১৪ এবং তার পরবর্তী সংস্করণ চালিত ডিভাইসগুলিতে সমর্থিত এবং এটি পূর্ববর্তী সংস্করণের সাথে সামঞ্জস্যপূর্ণ নয়।
- XML সিন দিয়ে তৈরি ট্রানজিশনগুলোও সমর্থিত।
handleOnBackStartedএ,controlDelayedTransitionএর ফলাফলের পরিবর্তে আপনারTransitionSeekControllerTransitionManager.createSeekControllerএর ফলাফলে সেট করুন।
অতিরিক্ত সম্পদ
- ভবিষ্যদ্বাণীমূলক ব্যাক কোড নমুনা
- সিস্টেম ব্যাক ভিডিওর জন্য মৌলিক বিষয়সমূহ
- অ্যান্ড্রয়েড ভিডিওর ভবিষ্যৎ গড়ার লক্ষ্যে