সিস্টেম ব্যাক API ব্যবহার করার সময়, আপনি অ্যাপ-মধ্যস্থ অ্যানিমেশন ও কাস্টম ট্রানজিশন পাওয়ার জন্য অপ্ট-ইন করতে পারবেন।
চালু করার পরে, আপনার অ্যাপে ব্যাক-টু-হোম, ক্রস-অ্যাক্টিভিটি এবং ক্রস-টাস্কের জন্য অ্যানিমেশন দেখানো হয়।
Android সেটিংস অ্যাপ ব্যবহার করে ক্রস-অ্যাক্টিভিটি ও ব্যাক-টু-হোমের জন্য প্রেডিক্টিভ ব্যাক অ্যানিমেশনের একটি সংক্ষিপ্ত উদাহরণ ভিডিওতে দেখানো হয়েছে।
- অ্যানিমেশনে, ব্যবহারকারী আগের সেটিংস স্ক্রিনে ফিরে যেতে সোয়াইপ করে—এটি ক্রস-অ্যাক্টিভিটি অ্যানিমেশনের একটি উদাহরণ।
- এখন আগের স্ক্রিনে, ব্যবহারকারী দ্বিতীয়বার পিছনের দিকে সোয়াইপ করা শুরু করেন, এর ওয়ালপেপার সহ হোম স্ক্রিনের প্রিভিউ দেখানো হয়—এটি হোমে-ফিরে-আসা অ্যানিমেশনের একটি উদাহরণ।
- ব্যবহারকারী ডানদিকে সোয়াইপ করা চালিয়ে যান, এর ফলে উইন্ডোটি ছোট হয়ে হোম স্ক্রিনের আইকনে পরিণত হওয়ার অ্যানিমেশন দেখানো হয়।
- ব্যবহারকারী এখন সম্পূর্ণভাবে হোম স্ক্রিনে ফিরে এসেছেন।
কীভাবে পূর্বাভাসমূলক ব্যাক জেসচারের জন্য সহায়তা যোগ করতে হয় সেই সম্পর্কে আরও জানুন।
ইন-অ্যাপ কাস্টম ট্রানজিশন ও অ্যানিমেশন যোগ করা
আপনি Compose বা Views ব্যবহার করে কাস্টম ইন-অ্যাপ প্রপার্টি অ্যানিমেশন ও ট্রানজিশন, কাস্টম ক্রস-অ্যাক্টিভিটি অ্যানিমেশন এবং কাস্টম ক্রস-ফ্র্যাগমেন্ট অ্যানিমেশন তৈরি করতে পারবেন। এর সাথে, আপনি ব্যাক জেসচারও ব্যবহার করতে পারবেন। Views ব্যবহার করে কীভাবে ট্রানজিশন তৈরি করতে হয় তা জানতে, Views-এ প্রেডিকটিভ ব্যাক অ্যানিমেশনের জন্য সহায়তা যোগ করুন দেখুন।
Jetpack Compose-এ কাস্টম ট্রানজিশন যোগ করা
কাস্টম ইন-অ্যাপ ট্রানজিশন তৈরি করার জন্য
Jetpack Compose-এ আপনি PredictiveBackHandler ব্যবহার করে 'প্রেডিক্টিভ ব্যাক' জেসচার ম্যানেজ করতে পারবেন। এই ফিচারটি 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 ) {} } }