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

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

WindowInsets সিস্টেম UI সম্পর্কে তথ্য প্রদান করে যাতে আপনার অ্যাপ সঠিক জায়গায় ড্র করে এবং সিস্টেম UI-এর কারণে আপনার UI অস্পষ্ট না হয়ে যায়।

সিস্টেম বারের পিছনে আঁকার জন্য এজ-টু-এজ যাওয়া
ছবি ১. সিস্টেম বারের পিছনে ড্র করার জন্য এজ-টু-এজ মোড ব্যবহার করা।

Android 14 (API লেভেল 34) এবং তার আগের ভার্সনে, আপনার অ্যাপের UI ডিফল্ট হিসেবে সিস্টেম বার এবং ডিসপ্লে কাটআউটের নিচে ড্র করে না।

Android 15 (API লেভেল 35) এবং তার পরবর্তী ভার্সনে, আপনার অ্যাপ SDK 35 টার্গেট করলে, সিস্টেম বার এবং ডিসপ্লে কাটআউটের নিচে আপনার অ্যাপ ড্র করে। এর ফলে ব্যবহারকারী আরও নির্বিঘ্ন অভিজ্ঞতা পান এবং আপনার অ্যাপ উপলভ্য উইন্ডো স্পেসের সম্পূর্ণ সুবিধা নিতে পারে।

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

ইনসেট ফান্ডামেন্টাল

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

সিস্টেম UI-এর সাইজ এবং এটি কোথায় প্লেস করা হয়েছে সেই সম্পর্কিত তথ্য ইনসেট ব্যবহার করে নির্দিষ্ট করা হয়।

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

এইসব বিল্ট-ইন Android ইনসেটের ধরন 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.safeContent-কে WindowInsets.safeDrawing ও WindowInsets.safeGestures-এর কম্বিনেশন হিসেবে ব্যবহার করুন যাতে কন্টেন্টে কোনও ভিজ্যুয়াল ওভারল্যাপ ও জেসচার ওভারল্যাপ না থাকে।