সিস্টেম ব্যাক এপিআই ব্যবহার করার সময়, আপনি অ্যাপের মধ্যে অ্যানিমেশন গ্রহণ করতে এবং কাস্টম ট্রানজিশন সমর্থন করতে পারেন।
সম্মতি জানানোর পর, আপনার অ্যাপ হোমপেজে ফিরে যাওয়া, বিভিন্ন অ্যাক্টিভিটির মধ্যে সমন্বয় এবং বিভিন্ন টাস্কের মধ্যে সমন্বয়ের জন্য অ্যানিমেশন প্রদর্শন করে।
ভিডিওটিতে অ্যান্ড্রয়েড সেটিংস অ্যাপ ব্যবহার করে ক্রস-অ্যাক্টিভিটি এবং ব্যাক-টু-হোম-এর জন্য প্রেডিক্টিভ ব্যাক অ্যানিমেশনের একটি সংক্ষিপ্ত উদাহরণ দেখানো হয়েছে।
- অ্যানিমেশনটিতে, ব্যবহারকারী আগের সেটিংস স্ক্রিনে ফিরে যাওয়ার জন্য পিছনে সোয়াইপ করেন—এটি একটি ক্রস-অ্যাক্টিভিটি অ্যানিমেশনের উদাহরণ।
- এখন আগের স্ক্রিনে, ব্যবহারকারী দ্বিতীয়বার পিছনে সোয়াইপ করা শুরু করেন, যার ফলে ওয়ালপেপার সহ হোম স্ক্রিনের একটি প্রিভিউ দেখা যায়—এটি ব্যাক-টু-হোম অ্যানিমেশনের একটি উদাহরণ।
- ব্যবহারকারী ডানদিকে সোয়াইপ করতে থাকলে, উইন্ডোটি ছোট হয়ে হোম স্ক্রিনের আইকনটিতে পরিণত হওয়ার একটি অ্যানিমেশন দেখা যায়।
- ব্যবহারকারী এখন সম্পূর্ণরূপে হোম স্ক্রিনে ফিরে এসেছেন।
প্রিডিক্টিভ ব্যাক জেসচারের জন্য সাপোর্ট কীভাবে যোগ করবেন সে সম্পর্কে আরও জানুন।
কাস্টম ইন-অ্যাপ ট্রানজিশন এবং অ্যানিমেশন যোগ করুন
আপনি প্রেডিক্টিভ ব্যাক জেসচারের সাহায্যে কাস্টম ইন-অ্যাপ প্রপার্টি অ্যানিমেশন ও ট্রানজিশন, কাস্টম ক্রস-অ্যাক্টিভিটি অ্যানিমেশন এবং কাস্টম ক্রস-ফ্র্যাগমেন্ট অ্যানিমেশন তৈরি করতে পারেন।
Jetpack Compose-এ কাস্টম ট্রানজিশন যোগ করুন
কাস্টম ইন-অ্যাপ ট্রানজিশন তৈরি করার জন্য আপনি Jetpack Compose-এ প্রেডিক্টিভ ব্যাক জেসচার পরিচালনা করতে PredictiveBackHandler ব্যবহার করতে পারেন। এই ফিচারটি androidx.activity:activity-compose:1.8.0-alpha01 বা তার উচ্চতর সংস্করণে উপলব্ধ।
PredictiveBackHandler একটি কলব্যাক ল্যাম্বডা প্রদান করে যা একটি Flow<BackEventCompat> প্রকাশ করে, এবং ব্যবহারকারী যখন প্রান্ত থেকে পিছনে সোয়াইপ করেন তখন এটি ইভেন্ট নির্গত করে। এই ইভেন্টগুলি ব্যবহারকারীর স্পর্শের অবস্থান, সোয়াইপের প্রান্ত এবং সবচেয়ে গুরুত্বপূর্ণভাবে progress সম্পর্কে তথ্য সরবরাহ করে, যা ব্যাক জেসচার পরিচালনার অংশ হিসাবে কম্পোনেন্টগুলিকে অ্যানিমেট করে সরিয়ে দিতে ব্যবহার করা যেতে পারে।
নিম্নলিখিত কোড স্নিপেটটিতে জেসচার প্রোগ্রেসের সাথে একটি Surface ছোট হতে ও দূরে সরে যেতে অ্যানিমেট করার জন্য PredictiveBackHandler ব্যবহারের একটি উদাহরণ দেখানো হয়েছে:
@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(x = xOffset.dp, y = 0.dp), color = Color.Blue ) {} } }