Android অ্যাপ এখন বিভিন্ন ডিভাইসে (যেমন ফোন, ট্যাবলেট, ফোল্ডেবল, ডেস্কটপ, গাড়ি এবং টিভি) এবং বড় স্ক্রিনে উইন্ডো মোডে (যেমন স্প্লিট স্ক্রিন এবং ডেস্কটপ উইন্ডো) চলে, তাই ডেভেলপারদের এমন Android অ্যাপ তৈরি করা উচিত যা ডিভাইসের ওরিয়েন্টেশন নির্বিশেষে যেকোনও স্ক্রিন এবং উইন্ডোর সাইজের সাথে মানানসই হয়। আজকের মাল্টি-ডিভাইসের যুগে ওরিয়েন্টেশন ও রিসাইজ করার সুবিধা সীমিত করার মতো প্যারাডাইম অনেক বেশি সীমাবদ্ধতা আরোপ করে।
ওরিয়েন্টেশন, রিসাইজ করার সুবিধা ও অ্যাস্পেক্ট রেশিও সংক্রান্ত বিধিনিষেধ উপেক্ষা করুন
Android 17 (API লেভেল ৩৭) বা তার পরবর্তী ভার্সনকে টার্গেট করা অ্যাপের ক্ষেত্রে, যেসব ডিসপ্লের সবচেয়ে কম প্রস্থ ৬০০ডিপি-র বেশি, সেগুলির ক্ষেত্রে ওরিয়েন্টেশন, রিসাইজ করার সুবিধা ও অ্যাস্পেক্ট রেশিও সংক্রান্ত বিধিনিষেধ আর প্রযোজ্য হয় না। অ্যাস্পেক্ট রেশিও বা ব্যবহারকারীর পছন্দের ওরিয়েন্টেশন যাই হোক না কেন, অ্যাপ সম্পূর্ণ ডিসপ্লে উইন্ডো জুড়ে দেখানো হয় এবং পিলারবক্সিং ব্যবহার করা হয় না।
Android 17-এ বড় স্ক্রিনের ডিভাইসে ওরিয়েন্টেশন ও রিসাইজ করার সীমাবদ্ধতার জন্য ডেভেলপারের সাময়িক অপ্ট-আউট সরিয়ে দেওয়া হয়েছে, যা Android 16-এ দেওয়া হয়েছিল।
এই পরিবর্তনের ফলে, প্ল্যাটফর্মের আচরণে নতুন স্ট্যান্ডার্ড চালু করা হয়েছে। Android এমন একটি মডেলের দিকে এগিয়ে যাচ্ছে যেখানে অ্যাপগুলি বিভিন্ন ওরিয়েন্টেশন, ডিসপ্লে সাইজ এবং অ্যাস্পেক্ট রেশিওর সাথে মানিয়ে নেবে বলে আশা করা হচ্ছে। ফিক্সড ওরিয়েন্টেশন বা সীমিত রিসাইজ করার মতো বিধিনিষেধ অ্যাপের অ্যাডাপ্টেবিলিটিতে বাধা সৃষ্টি করে। ব্যবহারকারীকে সবচেয়ে ভালো অভিজ্ঞতা প্রদান করতে আপনার অ্যাপকে অ্যাডাপ্টিভ করুন।
এছাড়াও, আপনি অ্যাপ কম্প্যাটিবিলিটি ফ্রেমওয়ার্ক ব্যবহার করে
এবং UNIVERSAL_RESIZABLE_BY_DEFAULT কম্প্যাট ফ্ল্যাগ চালু করে এই আচরণ পরীক্ষা করতে পারবেন।
সাধারণ ব্রেকিং পরিবর্তন
ওরিয়েন্টেশন, রিসাইজ করার সুবিধা এবং অ্যাস্পেক্ট রেশিও সংক্রান্ত বিধিনিষেধ উপেক্ষা করলে, কিছু ডিভাইসে আপনার অ্যাপের UI প্রভাবিত হতে পারে, বিশেষ করে পোর্ট্রেট ওরিয়েন্টেশনে লক করা ছোট লেআউটের জন্য ডিজাইন করা এলিমেন্ট। যেমন, অ্যাপে স্ট্রেচ করা লেআউট এবং অফ-স্ক্রিন অ্যানিমেশন ও কম্পোনেন্টের মতো সমস্যা থাকতে পারে। অ্যাস্পেক্ট রেশিও বা ওরিয়েন্টেশন সম্পর্কে আপনি কোনও অনুমান করলে, আপনার অ্যাপে ভিজ্যুয়াল সংক্রান্ত সমস্যা হতে পারে। এইসব সমস্যা কীভাবে এড়াবেন এবং আপনার অ্যাপের অ্যাডাপ্টিভ আচরণ কীভাবে উন্নত করবেন সেই সম্পর্কে আরও জানুন।
ল্যান্ডস্কেপ ফোল্ডেবল ডিভাইসে বা মাল্টি-উইন্ডো, ডেস্কটপ উইন্ডোয়িং বা কানেক্ট করা ডিসপ্লের মতো পরিস্থিতিতে অ্যাস্পেক্ট রেশিও গণনা করার সময় একটি সাধারণ সমস্যা হল, ক্যামেরা প্রিভিউ স্ট্রেচ করা, ঘোরানো বা ক্রপ করা অবস্থায় দেখা যায়। এই সমস্যাটি প্রায়শই বড় স্ক্রিন ও ফোল্ডেবল ডিভাইসে হয় কারণ অ্যাপ ধরে নেয় যে ক্যামেরার ফিচার (যেমন, অ্যাস্পেক্ট রেশিও ও সেন্সর ওরিয়েন্টেশন) ও ডিভাইসের ফিচারের (যেমন, ডিভাইস ওরিয়েন্টেশন ও ন্যাচারাল ওরিয়েন্টেশন) মধ্যে সম্পর্ক অপরিবর্তনীয়। ক্যামেরা প্রিভিউ ম্যানেজ করা সম্পর্কে আরও জানুন।
ডিভাইস রোটেট করার অনুমতি দিলে আরও অ্যাক্টিভিটি আবার তৈরি হয়, যার ফলে ব্যবহারকারীর স্টেট সঠিকভাবে সেভ না করা হলে তা হারিয়ে যেতে পারে। UI স্টেট সেভ করুন বিকল্পে গিয়ে UI স্টেট কীভাবে সঠিকভাবে সেভ করবেন তা জানুন।
প্রয়োগ সংক্রান্ত বিবরণ
ফুল-স্ক্রিন ও মাল্টি-উইন্ডো মোডে বড় স্ক্রিনের ডিভাইস জুড়ে নিম্নলিখিত ম্যানিফেস্ট অ্যাট্রিবিউট ও রানটাইম API উপেক্ষা করা হয়:
screenOrientationresizeableActivityminAspectRatiomaxAspectRatiosetRequestedOrientation()getRequestedOrientation()
screenOrientation, setRequestedOrientation() ও
getRequestedOrientation()-এর জন্য নিম্নলিখিত ভ্যালুগুলি উপেক্ষা করা হয়েছে:
portraitreversePortraitsensorPortraituserPortraitlandscapereverseLandscapesensorLandscapeuserLandscape
ডিসপ্লে রিসাইজ করার ক্ষেত্রে, android:resizeableActivity="false",
android:minAspectRatio এবং android:maxAspectRatio-এর কোনও প্রভাব নেই।
ব্যতিক্রম
Android 17-এর ওরিয়েন্টেশন, সাইজ পরিবর্তন করা ও অ্যাস্পেক্ট রেশিও সংক্রান্ত বিধিনিষেধ নিম্নলিখিত পরিস্থিতিতে প্রযোজ্য নয়:
- গেম (
android:appCategoryফ্ল্যাগের উপর ভিত্তি করে) - ব্যবহারকারী ডিভাইসের অ্যাস্পেক্ট রেশিও সেটিংসে অ্যাপের ডিফল্ট আচরণে স্পষ্টভাবে অপ্ট-ইন করছেন
- যেসব স্ক্রিনের ন্যূনতম প্রস্থ
sw600dp-এর থেকে কম