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

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

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

সিস্টেম বারের পিছনে আঁকতে প্রান্ত থেকে প্রান্তে যাওয়া
চিত্র 1. সিস্টেম বারের পিছনে আঁকতে প্রান্ত থেকে প্রান্তে যাচ্ছে।

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

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

সিস্টেম UI এর পিছনে সামগ্রী প্রদর্শন করাকে বলা হয় এজ-টু-এজ । এই পৃষ্ঠায়, আপনি বিভিন্ন ধরণের ইনসেট সম্পর্কে শিখবেন, কীভাবে এজ-টু-এজ যেতে হবে এবং কীভাবে আপনার UI অ্যানিমেট করতে ইনসেট APIগুলি ব্যবহার করবেন এবং আপনার অ্যাপের সামগ্রী সিস্টেম 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 এর সংমিশ্রণ হিসাবে কনটেন্টের কোনও ভিজ্যুয়াল ওভারল্যাপ নেই এবং কোনও অঙ্গভঙ্গি ওভারল্যাপ নেই।
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}