WindowManager ইনভেরিয়েন্টগুলির সাথে পরীক্ষার সম্মতি সর্বাধিক করুন

একটি সামঞ্জস্যপূর্ণ ও উচ্চ-মানের ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করতে এবং কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) ব্যর্থতার কারণ হয় এমন সমস্যা প্রতিরোধ করতে, এখানে বর্ণিত উইন্ডো ম্যানেজার (WM)-এর মূল নীতিগুলি প্রয়োগ করুন। এই নীতিগুলি কার অ্যাপের গুণমান নির্দেশিকাগুলির সাথে সঙ্গতি নিশ্চিত করতে সহায়তা করে। এই নীতিগুলি নিম্নলিখিত ক্ষেত্রে প্রযোজ্য:

  • মাল্টি-উইন্ডো আর্কিটেকচার ব্যবহারকারী অ্যান্ড্রয়েড রিলিজ, যা অ্যান্ড্রয়েড ১৪-এ শুরু হয়েছিল এবং অ্যান্ড্রয়েড ১৫-এ স্কেলেবল ইউআই-এর মাধ্যমে অব্যাহত ছিল।

  • অ্যান্ড্রয়েড স্কেলেবল UI এবং আপনার নিজস্ব কাস্টম বাস্তবায়ন

এই নীতিগুলি প্রয়োগ করে, আপনি সক্রিয়ভাবে বেশিরভাগ CTS কমপ্লায়েন্স এবং ফাংশনাল টেস্ট সংক্রান্ত সমস্যা এড়াতে পারবেন।

পরিভাষা

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

WM নীতিগুলি

CTS-এর সর্বোচ্চ পরিপালন নিশ্চিত করতে, আপনার WM বাস্তবায়নে এই নীতিগুলি প্রয়োগ করুন।

অ্যাক্টিভিটি চালু করার সময় একটি স্থিতিশীল কনফিগারেশন ব্যবহার করুন

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

প্রমিত কার্যকলাপগুলিকে বন্ধ অবস্থায় স্থানান্তর করুন

যখন ব্যবহারকারী হোম টাস্ক বা হোম সিনে যান, তখন CTS টেস্টের জন্য প্রয়োজনীয় অনুমানযোগ্য অ্যান্ড্রয়েড অ্যাপ লাইফসাইকেল বজায় রাখতে আপনাকে অবশ্যই সমস্ত চলমান স্ট্যান্ডার্ড অ্যাক্টিভিটিকে স্টপড অবস্থায় নিয়ে যেতে হবে। অটোমোটিভ পরিবেশে অ্যাপ লাইফসাইকেলের প্রত্যাশা সম্পর্কে আরও তথ্যের জন্য, “ব্যবহারকারীর অভিজ্ঞতার সীমাবদ্ধতা সক্রিয় থাকাকালীন ব্যবহার প্রতিরোধ করুন” দেখুন।

প্রমিত কার্যকলাপের বিষয়বস্তু অস্পষ্ট হওয়া প্রতিরোধ করুন।

এমন কোনো কাস্টম ডেকোরেশন বা UI এলিমেন্ট আঁকবেন না যা একটি স্ট্যান্ডার্ড অ্যাক্টিভিটির বিষয়বস্তুকে বাধা দেয়। আপনি যদি কাস্টম ওভারলে (যেমন একটি কাস্টম ক্লাইমেট কন্ট্রোল বার) আঁকেন, তবে আপনাকে অবশ্যই SystemOverlay ইনসেট ব্যবহার করে এর ডাইমেনশন সিস্টেমে জানাতে হবে। Android 15 এবং তার পরবর্তী সংস্করণগুলোর জন্য, Scalable UI-তে DecorPanel ব্যবহার করুন। অ্যাপগুলো নিরাপদে কন্টেন্ট লেআউট করার জন্য এই ইনসেটগুলোর উপর নির্ভর করে।

ইমারসিভ মোড অনুরোধে ওভারলে লুকান

যখন কোনো অ্যাপ ইমারসিভ মোডের জন্য অনুরোধ করে, তখন আপনাকে অবশ্যই যেকোনো অস্থায়ী কাস্টম UI এলিমেন্ট লুকাতে হবে এবং সেগুলোর SystemOverlay ইনসেটগুলো সরিয়ে ফেলতে হবে। স্থায়ী বাধাগুলো একটি অ্যাপের পিক্সেল প্রত্যাশায় হস্তক্ষেপ করে। অ্যাপগুলো কীভাবে ইমারসিভ মোডের জন্য অনুরোধ করে এবং তা পরিচালনা করে, সে সম্পর্কে বিস্তারিত জানতে সিস্টেম বার, ইমারসিভ মোড এবং এজ-টু-এজ রেন্ডারিং দেখুন।

শুধুমাত্র ডিসপ্লে লেভেলে গোলাকার কোণা প্রয়োগ করুন।

frameworks/base এ থাকা যথাযথ রিসোর্স কনফিগারেশন ব্যবহার করে শুধুমাত্র ডিসপ্লে লেভেলে গোলাকার কোণা প্রয়োগ করুন। কোনো স্ট্যান্ডার্ড অ্যাক্টিভিটির সারফেসে যথেচ্ছভাবে গোলাকার কোণা প্রয়োগ করবেন না।

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

ইমারসিভ মোড অনুরোধে অ্যাপের আকার বজায় রাখুন

যখন কোনো অ্যাপ ইমারসিভ মোডে প্রবেশ করার অনুরোধ করে, তখন অ্যাপটির উইন্ডোর আকার পরিবর্তন করবেন না। এমনটা করলে একটি বিঘ্ন সৃষ্টিকারী কনফিগারেশন পরিবর্তন ঘটে। এর পরিবর্তে, অ্যাপটিকে ম্যাক্সিমাইজ করার জন্য ব্যবহারকারী-নিয়ন্ত্রিত একটি ফুলস্ক্রিন বাটন দিন।