সিস্টেম ব্যাক API ব্যবহার করার সময়, আপনি অ্যাপ-মধ্যস্থ অ্যানিমেশন পেতে এবং কাস্টম ট্রানজিশন সাপোর্ট করতে অপ্ট-ইন করতে পারবেন।
চালু করার পরে, আপনার অ্যাপ ব্যাক-টু-হোম, ক্রস-অ্যাক্টিভিটি এবং ক্রস-টাস্কের জন্য অ্যানিমেশন দেখায়।
Android সেটিংস অ্যাপ ব্যবহার করে ক্রস-অ্যাক্টিভিটি এবং ব্যাক-টু-হোমের জন্য আগের ধাপে ফিরে যাওয়া সংক্রান্ত পূর্বাভাসের অ্যানিমেশনের একটি সংক্ষিপ্ত উদাহরণ ভিডিওতে দেখানো হয়েছে।
- অ্যানিমেশনে, ব্যবহারকারী আগের সেটিংস স্ক্রিনে ফিরে যেতে সোয়াইপ করেন—এটি ক্রস-অ্যাক্টিভিটি অ্যানিমেশনের একটি উদাহরণ।
- এখন আগের স্ক্রিনে, ব্যবহারকারী দ্বিতীয়বার ফিরে যাওয়ার জন্য সোয়াইপ করা শুরু করেন, ওয়ালপেপার সহ হোম স্ক্রিনের প্রিভিউ দেখানো হচ্ছে—এটি ব্যাক-টু-হোম অ্যানিমেশনের একটি উদাহরণ।
- ব্যবহারকারী ডানদিকে সোয়াইপ করা চালিয়ে যান, উইন্ডোটি ছোট হয়ে হোম স্ক্রিনে আইকন হিসেবে দেখানোর অ্যানিমেশন দেখা যায়।
- ব্যবহারকারী এখন পুরোপুরি হোম স্ক্রিনে ফিরে এসেছেন।
কীভাবে আগের ধাপে ফিরে যাওয়া সংক্রান্ত পূর্বাভাসের জেসচারের জন্য সহায়তা যোগ করবেন সেই সম্পর্কে আরও জানুন।
কাস্টম ইন-অ্যাপ ট্রানজিশন ও অ্যানিমেশন যোগ করা
আপনি কম্পোজ বা ভিউ ব্যবহার করে আগের ধাপে ফিরে যাওয়া সংক্রান্ত পূর্বাভাসের জেসচারের মাধ্যমে কাস্টম ইন-অ্যাপ প্রপার্টি অ্যানিমেশন ও ট্রানজিশন, কাস্টম ক্রস-অ্যাক্টিভিটি অ্যানিমেশন এবং কাস্টম ক্রস-ফ্র্যাগমেন্ট অ্যানিমেশন তৈরি করতে পারবেন। Views ব্যবহার করে কীভাবে ট্রানজিশন তৈরি করতে হয় তা জানতে, Views-এ প্রেডিকটিভ ব্যাক অ্যানিমেশনের জন্য সহায়তা যোগ করুন দেখুন।
Jetpack Compose-এ কাস্টম ট্রানজিশন যোগ করা
আপনি PredictiveBackHandler ব্যবহার করে
Jetpack Compose-এ আগের ধাপে ফিরে যাওয়া সংক্রান্ত পূর্বাভাসের জেসচার ম্যানেজ করতে পারবেন, যাতে কাস্টম ইন-অ্যাপ ট্রানজিশন তৈরি করা যায়। এই ফিচারটি
androidx.activity:activity-compose:1.8.0-alpha01 বা তার পরবর্তী ভার্সনে উপলভ্য।
PredictiveBackHandler একটি কলব্যাক ল্যাম্বডা প্রদান করে যা একটি
Flow<BackEventCompat> প্রকাশ করে যা ব্যবহারকারী প্রান্ত থেকে সোয়াইপ করার সাথে সাথে ইভেন্টগুলি নির্গত করে।
এইসব ইভেন্ট ব্যবহারকারীর টাচ পজিশন, সোয়াইপ এজ এবং
সবচেয়ে গুরুত্বপূর্ণ progress সম্পর্কে তথ্য প্রদান করে, যা ব্যাক জেসচার ম্যানেজ করার
অংশ হিসেবে কম্পোনেন্ট অ্যানিমেট করতে ব্যবহার করা যেতে পারে।
নিচের স্নিপেট থেকে PredictiveBackHandler ব্যবহার করার উদাহরণ দেখানো হয়েছে,
জেসচার প্রগ্রেসের সাথে Surface স্কেল ডাউন ও সরিয়ে দেওয়ার অ্যানিমেশন:
@Composable fun DetailScreen(onBack: () -> Unit) { var scale by remember { mutableFloatStateOf(1f) } var xOffset by remember { mutableFloatStateOf(0f) } val scope = rememberCoroutineScope() PredictiveBackHandler { progressFlow -> try { progressFlow.collectLatest { backEvent -> scale = 1f - backEvent.progress xOffset = backEvent.progress * 100f } // User completed gesture. onBack() } catch (e: CancellationException) { // User cancelled gesture. // Animate scale and xOffset back to 1f and 0f respectively. scope.launch { animate(scale, 1f) { value, _ -> scale = value } } scope.launch { animate(xOffset, 0f) { value, _ -> xOffset = value } } } } Box(Modifier.fillMaxSize(), contentAlignment = Alignment.Center) { Surface( modifier = Modifier .size(200.dp) .scale(scale) .offset { IntOffset(x = xOffset.dp.roundToPx(), y = 0) }, color = Color.Blue ) {} } }