ঘূর্ণমান ইনপুট বলতে ঘড়ির টুকরো থেকে আসা ইনপুট বোঝায় যা ঘড়িটি ঘুরতে বা ঘোরাতে সাহায্য করে। গড়ে, ব্যবহারকারীরা তাদের ঘড়ির সাথে ইন্টারঅ্যাক্ট করতে মাত্র কয়েক সেকেন্ড সময় ব্যয় করে। রোটারি ইনপুট ব্যবহার করে আপনি আপনার ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন যাতে আপনার ব্যবহারকারী দ্রুত বিভিন্ন কাজ সম্পন্ন করতে পারেন।
বেশিরভাগ ঘড়িতে ঘূর্ণায়মান ইনপুটের তিনটি প্রধান উৎসের মধ্যে রয়েছে ঘূর্ণায়মান পার্শ্ব বোতাম (RSB), এবং হয় একটি শারীরিক বেজেল অথবা একটি স্পর্শ বেজেল, যা স্ক্রিনের চারপাশে একটি বৃত্তাকার স্পর্শ অঞ্চল। যদিও প্রত্যাশিত আচরণ ইনপুটের ধরণের উপর নির্ভর করে পরিবর্তিত হতে পারে, তবে সমস্ত প্রয়োজনীয় মিথস্ক্রিয়ার জন্য ঘূর্ণায়মান ইনপুট সমর্থন করতে ভুলবেন না।
স্ক্রোল করুন
বেশিরভাগ ব্যবহারকারী আশা করেন যে অ্যাপগুলি স্ক্রোল জেসচার সমর্থন করবে। স্ক্রিনে কন্টেন্ট স্ক্রোল করার সাথে সাথে, ঘূর্ণায়মান ইন্টারঅ্যাকশনের প্রতিক্রিয়ায় ব্যবহারকারীদের ভিজ্যুয়াল প্রতিক্রিয়া দিন। ভিজ্যুয়াল প্রতিক্রিয়ায় উল্লম্ব স্ক্রোল বা পৃষ্ঠা সূচকের জন্য স্ক্রোলিং সূচক অন্তর্ভুক্ত থাকতে পারে।
ScalingLazyColumn , TransformingLazyColumn এবং Picker ডিফল্টভাবে স্ক্রোল জেসচার সমর্থন করে, যতক্ষণ না আপনাকে AppScaffold এবং ScreenScaffold ভিতরে সেই উপাদানগুলি রাখতে হবে এবং ScreenScaffold এবং উপাদানের মধ্যে তালিকার অবস্থা পাস করতে হবে, যেমন একটি TransformingLazyColumn ।
AppScaffold এবং ScreenScaffold Wear OS অ্যাপগুলির জন্য মৌলিক লেআউট কাঠামো প্রদান করে এবং ইতিমধ্যেই একটি ডিফল্ট বাস্তবায়ন সহ একটি স্ক্রোল সূচকের জন্য একটি স্লট রয়েছে। স্ক্রলিং অগ্রগতি কাস্টমাইজ করতে, তালিকার অবস্থা বস্তুর উপর ভিত্তি করে একটি স্ক্রোল সূচক তৈরি করুন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
val listState = rememberTransformingLazyColumnState() ScreenScaffold( scrollState = listState, scrollIndicator = { ScrollIndicator(state = listState) } ) { // ... }
আপনি ScalingLazyColumnDefaults.snapFlingBehavior ব্যবহার করে ScalingLazyColumn এর জন্য একটি স্ন্যাপ আচরণ কনফিগার করতে পারেন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
val listState = rememberScalingLazyListState() ScreenScaffold( scrollState = listState, scrollIndicator = { ScrollIndicator(state = listState) } ) { val state = rememberScalingLazyListState() ScalingLazyColumn( modifier = Modifier.fillMaxWidth(), state = state, flingBehavior = ScalingLazyColumnDefaults.snapFlingBehavior(state = state) ) { // Content goes here // ... } }
কাস্টম অ্যাকশন
আপনি আপনার অ্যাপে রোটারি ইনপুটের প্রতিক্রিয়া জানাতে কাস্টম অ্যাকশনও তৈরি করতে পারেন। উদাহরণস্বরূপ, জুম ইন এবং আউট করতে অথবা মিডিয়া অ্যাপে ভলিউম নিয়ন্ত্রণ করতে রোটারি ইনপুট ব্যবহার করুন।
যদি আপনার কম্পোনেন্টটি ভলিউম নিয়ন্ত্রণের মতো স্ক্রোলিং ইভেন্টগুলিকে স্থানীয়ভাবে সমর্থন না করে, তাহলে আপনি নিজেই স্ক্রোল ইভেন্টগুলি পরিচালনা করতে পারেন।
// VolumeScreen.kt
val focusRequester: FocusRequester = remember { FocusRequester() }
Column(
modifier = Modifier
.fillMaxSize()
.onRotaryScrollEvent {
// handle rotary scroll events
true
}
.focusRequester(focusRequester)
.focusable(),
) { ... }
একটি কাস্টম স্টেট ম্যানেজড ইন ভিউ মডেল তৈরি করুন এবং একটি কাস্টম কলব্যাক তৈরি করুন যা রোটারি স্ক্রোল ইভেন্টগুলি প্রক্রিয়া করতে ব্যবহৃত হয়।
// VolumeViewModel.kt
object VolumeRange(
public val max: Int = 10
public val min: Int = 0
)
val volumeState: MutableStateFlow<Int> = ...
fun onVolumeChangeByScroll(pixels: Float) {
volumeState.value = when {
pixels > 0 -> min (volumeState.value + 1, VolumeRange.max)
pixels < 0 -> max (volumeState.value - 1, VolumeRange.min)
}
}
সরলতার জন্য, পূর্ববর্তী উদাহরণে পিক্সেল মান ব্যবহার করা হয়েছে, যা বাস্তবে ব্যবহার করা হলে অতিরিক্ত সংবেদনশীল হওয়ার সম্ভাবনা বেশি।
নিম্নলিখিত স্নিপেটে দেখানো ইভেন্টগুলি পাওয়ার পরে কলব্যাক ব্যবহার করুন।
val focusRequester: FocusRequester = remember { FocusRequester() }
val volumeState by volumeViewModel.volumeState.collectAsState()
Column(
modifier = Modifier
.fillMaxSize()
.onRotaryScrollEvent {
volumeViewModel
.onVolumeChangeByScroll(it.verticalScrollPixels)
true
}
.focusRequester(focusRequester)
.focusable(),
) { ... }
আপনার জন্য প্রস্তাবিত
- দ্রষ্টব্য: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট প্রদর্শিত হয়।
- ফোকাস আচরণ পরিবর্তন করুন
- জেটপ্যাক কম্পোজের সাহায্যে কীবোর্ড, মাউস, ট্র্যাকপ্যাড এবং স্টাইলাস সাপোর্ট যোগ করুন
- Wear OS Codelab-এর জন্য রচনা করুন