সমস্ত Jetpack Compose Glimmer কম্পোনেন্টগুলো চশমার টাচপ্যাডে ট্যাপ বা সোয়াইপের মতো সাধারণ ইনপুট পদ্ধতির সাথে কাজ করার জন্য ডিজাইন করা হয়েছে। একই সাথে, এগুলো ডিসপ্লে গ্লাসের হার্ডওয়্যারের জন্য নির্দিষ্ট নিম্ন-স্তরের ইনপুট কমান্ডগুলোও গ্রহণ করতে পারে। Jetpack Compose Glimmer কম্পোনেন্টগুলো প্রয়োজনীয় ইনপুট ইভেন্টগুলো স্বয়ংক্রিয়ভাবে পরিচালনা করে।
স্ক্রল এবং ড্র্যাগের মতো সাধারণ কাজের জন্য, একটি সামঞ্জস্যপূর্ণ অভিজ্ঞতা নিশ্চিত করতে Jetpack Compose Glimmer কম্পোনেন্টগুলো ব্যবহার করুন। তবে, কাস্টম কম্পোনেন্ট বা বিশেষ ইন্টারঅ্যাকশন আচরণের জন্য, আপনি Modifier.draggable বা Modifier.scrollable মতো বিদ্যমান Compose API-গুলো ব্যবহার করতে পারেন।
পয়েন্টার ইনপুট এবং ফোকাস
ডিসপ্লে চশমায়, পয়েন্টার ইনপুট ফোকাসকে প্রভাবিত করতে পারে:
- ট্যাপ : এলিমেন্ট সক্রিয় করার জন্য সরাসরি ইন্টারঅ্যাকশন। ব্যবহারকারী যখন কোনো এলিমেন্টের সাথে ইন্টারঅ্যাক্ট করেন, তখন ফোকাস সেখানে চলে যায়।
- সোয়াইপ : নেভিগেশন এবং স্ক্রোলিংয়ের জন্য ব্যবহৃত হয়। অনিয়ন্ত্রিত সোয়াইপ অঙ্গভঙ্গি স্বয়ংক্রিয়ভাবে ফোকাস মুভমেন্টে রূপান্তরিত হয়, যার ফলে সরাসরি পয়েন্টার ইনপুট ছাড়াই নির্বিঘ্ন UI নেভিগেশন সম্ভব হয়।
জেটপ্যাক কম্পোজের একটি বৈশিষ্ট্য ব্যবহার করে, স্ক্রিন লোড হওয়ার সময় সিস্টেমটি স্বয়ংক্রিয়ভাবে প্রথম ফোকাসযোগ্য এলিমেন্টটিতে প্রাথমিক ফোকাস সেট করতে পারে, যা প্রায়শই স্ক্রিনের উপরের-বাম দিকের আইটেমটি হয়ে থাকে।
এই ফিচারটি এখনও নির্মাণাধীন এবং ডিফল্টরূপে সক্রিয় করা নেই। এই ফিচারটি সক্রিয় করতে, আপনার অ্যাক্টিভিটির onCreate() মেথডে isInitialFocusOnFocusableAvailable ফ্ল্যাগটিকে true তে সেট করুন।
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.ComposeUiFlags
class GlassesActivityExample : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
@OptIn(ExperimentalComposeUiApi::class)
ComposeUiFlags.isInitialFocusOnFocusableAvailable = true
super.onCreate(savedInstanceState)
}
}
নেভিগেশন আচরণ এবং ক্রম
ব্যবহারকারী আপনার অ্যাপে নেভিগেট করার সাথে সাথে ফোকাসের চলাচল এবং ক্রম পরিবর্তিত হয়।
ফোকাস মুভমেন্ট
স্ক্রোলযোগ্য কোনো কন্টেইনারের ক্ষেত্রে, টাচপ্যাডে সোয়াইপ করলে ফোকাস ক্রমাগত স্থানান্তরিত হয়। বোতামের সারির মতো স্বতন্ত্র উপাদানগুলোর ক্ষেত্রে, প্রতিটি সোয়াইপে ফোকাস একবারে একটি করে উপাদানে সরে যায়।
ফোকাস ক্রম
Jetpack Compose-এর মতোই, Jetpack Compose Glimmer এক-মাত্রিক ফোকাস সার্চ ব্যবহার করে। ফোকাস ট্র্যাভার্সালের ক্রম সম্পর্কে আরও জানতে, “Change focus traversal order” দেখুন।
প্রাথমিকভাবে ফোকাস করা আইটেমটি পরিবর্তন করতে, আপনি একটি টপ-লেভেল Modifier.focusGroup() যোগ করতে পারেন এবং একটি কাস্টম onEnter focusProperty নির্দিষ্ট করতে পারেন:
Modifier.focusProperties {
onEnter = {
initialFocus.requestFocus()
// Prevent focus from exiting the group
cancelFocusChange()
}
}
.focusGroup()
স্ক্রোলিং কন্টেইনার
সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতার জন্য, তালিকার মতো স্ক্রোলিং কন্টেইনারগুলোই স্ক্রিনের একমাত্র প্রধান উপাদান হওয়া উচিত। নেভিগেশন বিভ্রান্তি এড়াতে এবং মসৃণ ও অনুমানযোগ্য ফোকাস মুভমেন্ট নিশ্চিত করতে, স্ক্রোলযোগ্য তালিকা সরাসরি বাটনের মতো অন্যান্য ইন্টারেক্টিভ উপাদানের উপরে বা নীচে রাখা থেকে বিরত থাকুন।
ডিফল্ট ফোকাস অবস্থা
Jetpack Compose Glimmer তার সারফেস, কার্ড এবং লিস্ট আইটেম সহ সকল ইন্টারঅ্যাক্টেবল কম্পোনেন্টে ডিফল্ট ফোকাস স্টেট প্রয়োগ করে, যা ব্যবহারকারীর ইন্টারঅ্যাকশনের সময় সামঞ্জস্যপূর্ণ এবং স্পষ্ট ভিজ্যুয়াল ফিডব্যাক প্রদান করে।

ডিফল্ট : বাটনটির ব্যাকগ্রাউন্ড কালার
GlimmerTheme.colors.surfaceথেকে নেওয়া হয় এবং এর মূল কন্টেন্ট সেই সারফেসের কন্টেন্ট কালার নির্ধারণ করে।ফোকাসড : ফোকাস বোঝানোর জন্য বর্ডারের প্রস্থ বাড়ানো হয়।
ফোকাসড + প্রেসড : এর নির্বাচিত অবস্থা বোঝানোর জন্য ব্যাকগ্রাউন্ডটি
GlimmerTheme.colors.surfaceএর বর্ধিত অপাসিটিতে সেট করা হয়েছে।