উইন্ডো ইনসেট সম্পর্কে

অ্যান্ড্রয়েড প্ল্যাটফর্ম সিস্টেম ইউআই (UI), যেমন স্ট্যাটাস বার এবং নেভিগেশন বার, প্রদর্শনের জন্য দায়ী। ব্যবহারকারী কোন অ্যাপ ব্যবহার করছেন তা নির্বিশেষে এই সিস্টেম ইউআইটি প্রদর্শিত হয়।

WindowInsets সিস্টেম UI সম্পর্কে তথ্য প্রদান করে, যাতে আপনার অ্যাপটি সঠিক স্থানে ড্র হয় এবং আপনার UI সিস্টেম UI দ্বারা আবৃত না হয়ে যায়।

সিস্টেম বারের পিছনে আঁকতে প্রান্ত থেকে প্রান্ত পর্যন্ত যাওয়া
চিত্র ১। সিস্টেম বারগুলোর পেছনে আঁকার জন্য প্রান্ত থেকে প্রান্ত পর্যন্ত যাওয়া।

অ্যান্ড্রয়েড ১৪ (এপিআই লেভেল ৩৪) এবং এর নিচের সংস্করণগুলোতে, আপনার অ্যাপের ইউআই সিস্টেম বারের নিচে প্রদর্শিত হয় না এবং ডিফল্টভাবে কাটআউট দেখায়।

অ্যান্ড্রয়েড ১৫ (এপিআই লেভেল ৩৫) এবং এর পরবর্তী সংস্করণগুলোতে, আপনার অ্যাপটি এসডিকে ৩৫ টার্গেট করলে তা সিস্টেম বার এবং ডিসপ্লে কাটআউটের নিচে প্রদর্শিত হয়। এর ফলে ব্যবহারকারী আরও নির্বিঘ্ন অভিজ্ঞতা লাভ করেন এবং আপনার অ্যাপটি উইন্ডোতে উপলব্ধ সম্পূর্ণ জায়গার সদ্ব্যবহার করতে পারে।

সিস্টেম UI-এর পিছনে কন্টেন্ট প্রদর্শন করাকে 'গোয়িং এজ-টু-এজ' বলা হয়। এই পৃষ্ঠায়, আপনি বিভিন্ন ধরণের ইনসেট, কীভাবে 'গোয়িং এজ-টু-এজ' করতে হয় এবং আপনার UI-কে অ্যানিমেট করতে ও আপনার অ্যাপের কন্টেন্ট যাতে সিস্টেম UI এলিমেন্ট দ্বারা আবৃত না হয় তা নিশ্চিত করতে ইনসেট API কীভাবে ব্যবহার করতে হয়, সে সম্পর্কে জানতে পারবেন।

ইনসেট মৌলিক বিষয়গুলি

যখন কোনো অ্যাপ স্ক্রিনের এক প্রান্ত থেকে অন্য প্রান্ত পর্যন্ত বিস্তৃত হয়, তখন আপনাকে নিশ্চিত করতে হবে যেন গুরুত্বপূর্ণ বিষয়বস্তু এবং ইন্টারঅ্যাকশনগুলো সিস্টেম UI দ্বারা আবৃত না হয়ে যায়। উদাহরণস্বরূপ, যদি কোনো বাটন নেভিগেশন বারের পিছনে রাখা হয়, তাহলে ব্যবহারকারী হয়তো সেটি ক্লিক করতে পারবেন না।

সিস্টেম UI-এর আকার এবং এর অবস্থান সম্পর্কিত তথ্য ইনসেট-এর মাধ্যমে নির্দিষ্ট করা হয়।

সিস্টেম UI-এর প্রতিটি অংশের একটি সংশ্লিষ্ট ধরনের ইনসেট থাকে, যা এর আকার এবং অবস্থান বর্ণনা করে। উদাহরণস্বরূপ, স্ট্যাটাস বার ইনসেটগুলো স্ট্যাটাস বারের আকার ও অবস্থান নির্ধারণ করে, অন্যদিকে নেভিগেশন বার ইনসেটগুলো নেভিগেশন বারের আকার ও অবস্থান নির্ধারণ করে। প্রতিটি ধরনের ইনসেট চারটি পিক্সেল ডাইমেনশন নিয়ে গঠিত: টপ, লেফট, রাইট এবং বটম। এই ডাইমেনশনগুলো নির্দিষ্ট করে যে, অ্যাপ উইন্ডোর সংশ্লিষ্ট দিকগুলো থেকে সিস্টেম UI কতদূর পর্যন্ত বিস্তৃত হবে। সুতরাং, সেই ধরনের সিস্টেম UI-এর সাথে ওভারল্যাপ এড়ানোর জন্য, অ্যাপ UI-কে অবশ্যই সেই পরিমাণ ইনসেট করতে হবে।

এই বিল্ট-ইন অ্যান্ড্রয়েড ইনসেট টাইপগুলো WindowInsets মাধ্যমে পাওয়া যায়:

WindowInsets.statusBars

ইনসেটগুলোতে স্ট্যাটাস বারগুলোর বর্ণনা দেওয়া হয়েছে। এগুলো হলো সিস্টেমের উপরের UI বার, যেগুলোতে নোটিফিকেশন আইকন এবং অন্যান্য নির্দেশক থাকে।

WindowInsets.statusBarsIgnoringVisibility

স্ট্যাটাস বার ইনসেটগুলো দৃশ্যমান থাকাকালীন প্রদর্শিত হয়। যদি স্ট্যাটাস বারগুলো বর্তমানে লুকানো থাকে (ইমারসিভ ফুল স্ক্রিন মোডে প্রবেশের কারণে), তাহলে মূল স্ট্যাটাস বার ইনসেটগুলো খালি থাকবে, কিন্তু এই ইনসেটগুলো খালি থাকবে না।

WindowInsets.navigationBars

নেভিগেশন বারগুলো বর্ণনা করে এমন ইনসেটগুলো। এগুলো হলো ডিভাইসের বাম, ডান বা নিচের দিকের সিস্টেম UI বার, যা টাস্কবার বা নেভিগেশন আইকনগুলো প্রদর্শন করে। ব্যবহারকারীর পছন্দের নেভিগেশন পদ্ধতি এবং টাস্কবারের সাথে মিথস্ক্রিয়ার ওপর ভিত্তি করে এগুলো রানটাইমে পরিবর্তিত হতে পারে।

WindowInsets.navigationBarsIgnoringVisibility

নেভিগেশন বার ইনসেটগুলো দৃশ্যমান থাকাকালীন ব্যবহৃত হয়। যদি নেভিগেশন বারগুলো বর্তমানে লুকানো থাকে (ইমারসিভ ফুল স্ক্রিন মোডে প্রবেশের কারণে), তাহলে মূল নেভিগেশন বারের ইনসেটগুলো খালি থাকবে, কিন্তু এই ইনসেটগুলো খালি থাকবে না।

WindowInsets.captionBar

যদি উইন্ডোটি একটি ফ্রিফর্ম উইন্ডো হয়, যেমন টপ টাইটেল বার, তাহলে এর ভেতরের ইনসেটটি সিস্টেম UI উইন্ডোর সজ্জা বর্ণনা করে।

WindowInsets.captionBarIgnoringVisibility

ক্যাপশন বারগুলো দৃশ্যমান থাকাকালীন ইনসেটগুলো। যদি ক্যাপশন বারগুলো বর্তমানে লুকানো থাকে, তাহলে মূল ক্যাপশন বারের ইনসেটগুলো খালি থাকবে, কিন্তু এই ইনসেটগুলো খালি থাকবে না।

WindowInsets.systemBars

সিস্টেম বার ইনসেটগুলোর সমষ্টি, যার মধ্যে স্ট্যাটাস বার, নেভিগেশন বার এবং ক্যাপশন বার অন্তর্ভুক্ত।

WindowInsets.systemBarsIgnoringVisibility

সিস্টেম বার ইনসেটগুলো দৃশ্যমান থাকাকালীন ব্যবহৃত হয়। যদি সিস্টেম বারগুলো বর্তমানে লুকানো থাকে (ইমারসিভ ফুল স্ক্রিন মোডে প্রবেশের কারণে), তাহলে মূল সিস্টেম বার ইনসেটগুলো খালি থাকবে, কিন্তু এই ইনসেটগুলো খালি থাকবে না।

WindowInsets.ime

ইনসেটগুলো নিচের দিকে সফটওয়্যার কিবোর্ডটি যে পরিমাণ জায়গা দখল করে, তা বর্ণনা করে।

WindowInsets.imeAnimationSource

বর্তমান কীবোর্ড অ্যানিমেশনের আগে সফটওয়্যার কীবোর্ডটি যে পরিমাণ জায়গা দখল করেছিল, তা এই ইনসেটগুলোতে বর্ণনা করা হয়েছে।

WindowInsets.imeAnimationTarget

বর্তমান কিবোর্ড অ্যানিমেশনের পরে সফটওয়্যার কিবোর্ডটি যে পরিমাণ জায়গা দখল করবে, তা এই ইনসেটগুলোতে বর্ণনা করা হয়েছে।

WindowInsets.tappableElement

এক ধরনের ইনসেট যা নেভিগেশন UI সম্পর্কে আরও বিস্তারিত তথ্য বর্ণনা করে এবং সেই স্থানের পরিমাণ নির্দেশ করে যেখানে "ট্যাপ" অ্যাপের পরিবর্তে সিস্টেম দ্বারা পরিচালিত হবে। জেসচার নেভিগেশন সহ স্বচ্ছ নেভিগেশন বারের ক্ষেত্রে, সিস্টেমের নেভিগেশন UI-এর মাধ্যমে অ্যাপের কিছু উপাদানে ট্যাপ করা যায়।

WindowInsets.tappableElementIgnoringVisibility

ট্যাপযোগ্য এলিমেন্টগুলো দৃশ্যমান থাকাকালীন তাদের ইনসেট। যদি ট্যাপযোগ্য এলিমেন্টগুলো বর্তমানে লুকানো থাকে (ইমারসিভ ফুল স্ক্রিন মোডে প্রবেশের কারণে), তাহলে মূল ট্যাপযোগ্য এলিমেন্ট ইনসেটগুলো খালি থাকবে, কিন্তু এই ইনসেটগুলো খালি থাকবে না।

WindowInsets.systemGestures

এই ইনসেটগুলো সেই পরিমাণকে নির্দেশ করে যেখানে সিস্টেম নেভিগেশনের জন্য জেসচার ইন্টারসেপ্ট করবে। অ্যাপগুলো Modifier.systemGestureExclusion এর মাধ্যমে ম্যানুয়ালি এই জেসচারগুলোর একটি সীমিত পরিমাণ হ্যান্ডেল করার বিষয়টি নির্দিষ্ট করতে পারে।

WindowInsets.mandatorySystemGestures

সিস্টেম জেসচারগুলোর একটি উপসেট যা সিস্টেম দ্বারা সর্বদা পরিচালিত হবে, এবং যা Modifier.systemGestureExclusion এর মাধ্যমে বাদ দেওয়া যায় না।

WindowInsets.displayCutout

ডিসপ্লে কাটআউটের (নচ বা পিনহোল) সাথে ওভারল্যাপ এড়ানোর জন্য প্রয়োজনীয় ফাঁকা স্থানের পরিমাণ এই ইনসেটগুলো দ্বারা বোঝানো হয়েছে।

WindowInsets.waterfall

ইনসেটগুলো একটি ওয়াটারফল ডিসপ্লের বক্রাকার অংশগুলোকে উপস্থাপন করে। একটি ওয়াটারফল ডিসপ্লেতে স্ক্রিনের কিনারা বরাবর বক্রাকার অংশ থাকে, যেখানে স্ক্রিনটি ডিভাইসের পাশ বরাবর মোড়ানো শুরু করে।

এই প্রকারগুলোকে তিনটি "নিরাপদ" ইনসেট টাইপের মাধ্যমে সংক্ষিপ্ত করা হয়, যা নিশ্চিত করে যে বিষয়বস্তু আবৃত না হয়:

এই "নিরাপদ" ইনসেট প্রকারগুলি অন্তর্নিহিত প্ল্যাটফর্ম ইনসেটগুলির উপর ভিত্তি করে বিভিন্ন উপায়ে বিষয়বস্তু সুরক্ষিত করে:

  • যেসব কন্টেন্ট কোনো সিস্টেম UI-এর নিচে আঁকা উচিত নয়, সেগুলোকে সুরক্ষিত রাখতে WindowInsets.safeDrawing ব্যবহার করুন। ইনসেটের সবচেয়ে সাধারণ ব্যবহার হলো: সিস্টেম UI দ্বারা (আংশিকভাবে বা সম্পূর্ণরূপে) আবৃত কন্টেন্টের অঙ্কন রোধ করা।
  • জেসচারযুক্ত কন্টেন্ট সুরক্ষিত করতে WindowInsets.safeGestures ব্যবহার করুন। এর ফলে সিস্টেম জেসচার এবং অ্যাপ জেসচারের (যেমন বটম শীট, ক্যারোসেল বা গেমের জেসচার) মধ্যে সংঘর্ষ এড়ানো যায়।
  • কন্টেন্টের মধ্যে যেন কোনো ভিজ্যুয়াল ওভারল্যাপ বা জেসচার ওভারল্যাপ না থাকে, তা নিশ্চিত করতে WindowInsets.safeDrawing এবং WindowInsets.safeGestures এর সমন্বয়ে WindowInsets.safeContent ব্যবহার করুন।
{% হুবহু %} {% endverbatim %} {% হুবহু %} {% endverbatim %}