ভিউ সহ রেসপন্সিভ/অ্যাডাপ্টিভ ডিজাইন

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-এ রেসপন্সিভ লেআউট নিয়ে কীভাবে কাজ করতে হয় তা জানুন।

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

প্রতিক্রিয়াশীল ডিজাইন

বিভিন্ন ডিভাইস ফর্ম ফ্যাক্টরকে সাপোর্ট করার প্রথম ধাপ হল এমন একটি লেআউট তৈরি করা যা আপনার অ্যাপের জন্য উপলভ্য ডিসপ্লে স্পেসের পরিমাণের তারতম্যের সাথে মানানসই।

ConstraintLayout

রেসপন্সিভ লেআউট তৈরি করার সবচেয়ে ভালো উপায় হল আপনার UI-এর বেস লেআউট হিসেবে ConstraintLayout ব্যবহার করা। ConstraintLayout আপনাকে লেআউটে অন্যান্য ভিউয়ের সাথে স্পেশিয়াল রিলেশনশিপ অনুযায়ী প্রতিটি ভিউয়ের পজিশন ও সাইজ নির্দিষ্ট করতে দেয়। ডিসপ্লে স্পেস পরিবর্তন হওয়ার সাথে সাথে সব ভিউ একসাথে সরানো ও ছোট-বড় করা যাবে।

ConstraintLayout-এর সাহায্যে লেআউট তৈরি করার সবচেয়ে সহজ উপায় হল Android Studio-তে লেআউট এডিটর ব্যবহার করা। লেআউট এডিটর আপনাকে লেআউটে নতুন ভিউ টেনে আনতে, পেরেন্ট ও সিবলিং ভিউয়ের সাথে সম্পর্কিত সীমাবদ্ধতা প্রয়োগ করতে এবং ভিউয়ের প্রপার্টি সেট করতে দেয়—এইসব কিছু XML ম্যানুয়ালি এডিট না করেই করা যায়।

ছবি ৩. Android Studio-তে লেআউট এডিটর ConstraintLayout দেখাচ্ছে।

আরও তথ্যের জন্য, ConstraintLayout-এর মাধ্যমে রেসপন্সিভ UI তৈরি করুন।

রেসপন্সিভ প্রস্থ ও উচ্চতা

আপনার লেআউট যাতে বিভিন্ন ডিসপ্লে সাইজের সাথে মানানসই হয় তা নিশ্চিত করতে, হার্ড-কোডেড ভ্যালুর পরিবর্তে ভিউ কম্পোনেন্টের প্রস্থ ও উচ্চতার জন্য wrap_content, match_parent বা 0dp (match constraint) ব্যবহার করুন:

  • wrap_content: ভিউতে যে কন্টেন্ট আছে তার সাথে মানানসই সাইজ ভিউ সেট করে।
  • match_parent: পেরেন্ট ভিউয়ের মধ্যে ভিউ যতটা সম্ভব বড় করা হয়।
  • 0dp (match constraint): ConstraintLayout-এ, match_parent-এর মতো। ভিউয়ের সীমাবদ্ধতার মধ্যে ভিউটি উপলভ্য সব স্পেস নিয়ে নেয়।

যেমন:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/lorem_ipsum" />

ডিভাইসের ওরিয়েন্টেশন অনুযায়ী ডিসপ্লের প্রস্থ পরিবর্তন হলে, TextView-এর প্রস্থ ও উচ্চতা কীভাবে অ্যাডজাস্ট হয় তা ৪ নম্বর ছবিতে দেখানো হয়েছে।

ছবি ৪. একটি রেসপন্সিভ TextView।

TextView উপলভ্য সব জায়গা (match_parent) পূরণ করার জন্য এর প্রস্থ সেট করে এবং এর উচ্চতা ঠিক ততটাই সেট করে যতটা জায়গা টেক্সটের উচ্চতার (wrap_content) জন্য প্রয়োজন, যা বিভিন্ন ডিসপ্লে ডাইমেনশন এবং বিভিন্ন পরিমাণ টেক্সটের সাথে ভিউকে মানিয়ে নিতে সাহায্য করে।

আপনি LinearLayout ব্যবহার করলে, লেআউট ওয়েট-এর ভিত্তিতে চাইল্ড ভিউ বড় করতে পারবেন যাতে ভিউগুলি উপলভ্য স্পেস সমানুপাতিকভাবে পূরণ করে। তবে, নেস্ট করা LinearLayout-এ ওয়েট ব্যবহার করলে, প্রতিটি ভিউয়ের সাইজ নির্ধারণ করার জন্য সিস্টেমকে একাধিক লেআউট পাস করতে হয়, যার ফলে UI-এর পারফর্ম্যান্স স্লো হয়ে যায়।

ConstraintLayout, পারফর্ম্যান্সের উপর প্রভাব না ফেলে, LinearLayout-এর মাধ্যমে সম্ভাব্য প্রায় সব লেআউট তৈরি করতে পারে, তাই আপনার নেস্টেড LinearLayout-কে ConstraintLayout-এ পরিবর্তন করুন। তারপর আপনি কনস্ট্রেন্ট চেনের মাধ্যমে ওয়েটেড লেআউট নির্ধারণ করতে পারবেন।

অ্যাডাপ্টিভ ডিজাইন

আপনার অ্যাপের লেআউট সবসময় বিভিন্ন ডিসপ্লে সাইজের সাথে মানানসই হতে হবে। তবে, রেসপন্সিভ লেআউটও প্রতিটি ডিভাইস বা মাল্টি‑উইন্ডো মোড ডিসপ্লেতে ব্যবহারকারীকে সেরা অভিজ্ঞতা প্রদান করতে পারে না। যেমন, ফোনের জন্য ডিজাইন করা UI, ট্যাবলেটে ব্যবহারকারীকে সেরা অভিজ্ঞতা প্রদান করতে পারে না। অ্যাডাপ্টিভ ডিজাইন বিভিন্ন ডিসপ্লে ডাইমেনশনের জন্য অপ্টিমাইজ করা বিকল্প লেআউট প্রদান করে।

তালিকা-বিবরণ UI-এর জন্য SlidingPaneLayout

তালিকা-বিবরণ UI সাধারণত বিভিন্ন আকারের স্ক্রিনে ব্যবহারকারীকে আলাদা আলাদা অভিজ্ঞতা প্রদান করে। বড় স্ক্রিনে, তালিকা ও বিবরণ প্যানেল সাধারণত পাশাপাশি থাকে। তালিকার কোনও আইটেম বেছে নেওয়া হলে, UI পরিবর্তন না করেই আইটেমের তথ্য বিবরণ প্যানে দেখানো হয়—দুটি প্যান পাশাপাশি থাকে। তবে, ছোট স্ক্রিনে, দুটি প্যানেল আলাদাভাবে দেখানো হয়, প্রতিটি প্যানেল সম্পূর্ণ ডিসপ্লে এলাকা দখল করে। তালিকা প্যানে কোনও আইটেম বেছে নেওয়া হলে, তালিকা প্যানের পরিবর্তে বিস্তারিত বিবরণ প্যান (যেখানে বেছে নেওয়া আইটেমের তথ্য থাকে) দেখানো হয়। ব্যাক নেভিগেশন তালিকার সাথে বিশদ বিবরণ ফলক প্রতিস্থাপন করে।

SlidingPaneLayout বর্তমান উইন্ডোর সাইজের জন্য দুটি ব্যবহারকারীর অভিজ্ঞতার মধ্যে কোনটি উপযুক্ত তা নির্ধারণ করার জন্য লজিক ম্যানেজ করে:

<?xml version="1.0" encoding="utf-8"?>
<androidx.slidingpanelayout.widget.SlidingPaneLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start" />

    <androidx.fragment.app.FragmentContainerView
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        app:defaultNavHost="true"
        app:navGraph="@navigation/item_navigation" />

</androidx.slidingpanelayout.widget.SlidingPaneLayout>

SlidingPaneLayout-এ থাকা দুটি ভিউয়ের layout_width ও layout_weight অ্যাট্রিবিউট SlidingPaneLayout-এর আচরণ নির্ধারণ করে। উদাহরণে, উইন্ডোটি যদি দুটি ভিউ দেখানোর জন্য যথেষ্ট বড় হয় (অন্তত ৫৮০ডিপি চওড়া), তাহলে পেনগুলি পাশাপাশি দেখানো হয়। কিন্তু, উইন্ডোর প্রস্থ ৫৮০ডিপি-এর চেয়ে কম হলে, পেনগুলি একে অপরের উপর স্লাইড করে যাতে আলাদাভাবে সম্পূর্ণ অ্যাপ উইন্ডো দখল করতে পারে।

উইন্ডোর প্রস্থ যদি মোট নির্দিষ্ট করা ন্যূনতম প্রস্থের (৫৮০ডিপি) থেকে বেশি হয়, তাহলে দুটি পেনের সাইজ সমানুপাতিক করতে layout_weight মান ব্যবহার করা যেতে পারে। উদাহরণে, তালিকা প্যানটি সর্বদা 280dp চওড়া কারণ এতে কোনও ওজন নেই। তবে, ভিউয়ের layout_weight সেটিংসের কারণে, বিবরণ প্যানেল সবসময় ৫৮০ডিপি-র বেশি যেকোনও অনুভূমিক স্পেস পূরণ করে।

বিকল্প লেআউট রিসোর্স

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

ছবি ৫. একই অ্যাপ বিভিন্ন ডিসপ্লে সাইজের জন্য বিভিন্ন লেআউট ব্যবহার করছে।

আপনার অ্যাপের সোর্স কোডে অতিরিক্ত res/layout/ ডিরেক্টরি তৈরি করে আপনি অ্যাডাপ্টিভ, স্ক্রিন‑নির্দিষ্ট লেআউট প্রদান করতে পারেন। প্রতিটি স্ক্রিন কনফিগারেশনের জন্য একটি ডিরেক্টরি তৈরি করুন যার জন্য আলাদা লেআউট প্রয়োজন। তারপর layout ডিরেক্টরির নামের সাথে স্ক্রিন কনফিগারেশন কোয়ালিফায়ার যোগ করুন (যেমন, layout-w600dp, যে স্ক্রিনের প্রস্থ 600dp)।

কনফিগারেশন কোয়ালিফায়ার আপনার অ্যাপ UI-এর জন্য উপলভ্য দৃশ্যমান ডিসপ্লে স্পেসকে প্রতিনিধিত্ব করে। আপনার অ্যাপের জন্য লেআউট বেছে নেওয়ার সময় সিস্টেমটি যেকোনও সিস্টেম ডেকোরেশন (যেমন নেভিগেশন বার) এবং উইন্ডো কনফিগারেশন পরিবর্তন (যেমন মাল্টি‑উইন্ডো মোড) বিবেচনা করে।

Android Studio-তে বিকল্প লেআউট তৈরি করতে, ভিউ সহ UI ডেভেলপ করুন-এর মধ্যে বিভিন্ন স্ক্রিনের জন্য অপ্টিমাইজ করতে লেআউট ভেরিয়েন্ট ব্যবহার করুন দেখুন।

সবচেয়ে ছোট প্রস্থের কোয়ালিফায়ার

সবচেয়ে কম প্রস্থ স্ক্রিন সাইজ কোয়ালিফায়ার আপনাকে এমন ডিসপ্লের জন্য বিকল্প লেআউট প্রদান করতে দেয় যার ন্যূনতম প্রস্থ ঘনত্ব-নিরপেক্ষ পিক্সেল (dp)-এ পরিমাপ করা হয়।

dp-এর পরিমাপ হিসেবে স্ক্রিনের সাইজ বর্ণনা করার মাধ্যমে, Android আপনাকে এমন লেআউট তৈরি করতে দেয় যা নির্দিষ্ট ডিসপ্লে ডাইমেনশনের জন্য ডিজাইন করা হয়েছে এবং বিভিন্ন পিক্সেল ঘনত্ব নিয়ে চিন্তা করতে হয় না।

যেমন, আপনি main_activity নামের একটি লেআউট তৈরি করতে পারেন যা ফোন ও ট্যাবলেটের জন্য অপ্টিমাইজ করা হয়েছে। এর জন্য আপনাকে বিভিন্ন ডিরেক্টরিতে ফাইলের বিভিন্ন ভার্সন তৈরি করতে হবে:

res/layout/main_activity.xml           # For phones (smaller than 600dp smallest width)
res/layout-sw600dp/main_activity.xml   # For 7" tablets (600dp wide or wider)

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

অন্যান্য সবচেয়ে ছোট প্রস্থের ভ্যালু কীভাবে সাধারণ স্ক্রিন সাইজের সাথে মানানসই হয় তা এখানে দেওয়া হল:

  • ৩২০dp: ছোট ফোনের স্ক্রিন (২৪০x৩২০ ldpi, ৩২০x৪৮০ mdpi, ৪৮০x৮০০ hdpi, ইত্যাদি)
  • ৪৮০ডিপি: বড় ফোন স্ক্রিন ~৫" (৪৮০x৮০০ এমডিপিআই)
  • 600dp: ৭" ট্যাবলেট (600x1024 mdpi)
  • 720dp: 10" ট্যাবলেট (720x1280 mdpi, 800x1280 mdpi, ইত্যাদি)

নিচের ছবিতে আরও বিস্তারিতভাবে দেখানো হয়েছে যে কীভাবে বিভিন্ন স্ক্রিন ডিপি প্রস্থ বিভিন্ন স্ক্রিন সাইজ এবং ওরিয়েন্টেশনের সাথে মানানসই হয়।

ছবি ৬. বিভিন্ন স্ক্রিন সাইজ সাপোর্ট করার জন্য সাজেস্ট করা প্রস্থের ব্রেকপয়েন্ট।

সবচেয়ে কম প্রস্থ কোয়ালিফায়ারের ভ্যালু ডিপি-তে দেখানো হয়, কারণ সিস্টেম পিক্সেল ডেনসিটি (র পিক্সেল রেজোলিউশন নয়) হিসেব করার পরে কতটা ডিসপ্লে স্পেস উপলভ্য আছে সেটিই গুরুত্বপূর্ণ।

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

উপলভ্য প্রস্থ কোয়ালিফায়ার

ডিসপ্লের সবচেয়ে কম প্রস্থের উপর ভিত্তি করে লেআউট পরিবর্তন করার পরিবর্তে, আপনি কতটা প্রস্থ বা উচ্চতা উপলভ্য আছে তার উপর ভিত্তি করে লেআউট পরিবর্তন করতে চাইতে পারেন। যেমন, স্ক্রিনের প্রস্থ কমপক্ষে ৬০০ ডিপি হলে আপনি হয়ত দুই-পেন লেআউট ব্যবহার করতে চাইবেন, যা ডিভাইস ল্যান্ডস্কেপ নাকি পোর্ট্রেট ওরিয়েন্টেশনে আছে তার উপর নির্ভর করে পরিবর্তিত হতে পারে। সেই ক্ষেত্রে, আপনাকে নিম্নলিখিত উপায়ে উপলভ্য প্রস্থ কোয়ালিফায়ার ব্যবহার করতে হবে:

res/layout/main_activity.xml         # For phones (smaller than 600dp available width)
res/layout-w600dp/main_activity.xml  # For 7" tablets or any screen with 600dp available width
                                     # (possibly landscape phones)

আপনার অ্যাপের জন্য উপলভ্য উচ্চতা নিয়ে কোনও সমস্যা থাকলে, আপনি উপলভ্য উচ্চতা কোয়ালিফায়ার ব্যবহার করতে পারেন। যেমন, স্ক্রিনের উচ্চতা কমপক্ষে ৬০০ডিপি হলে layout-h600dp।

ওরিয়েন্টেশন কোয়ালিফায়ার

আপনি শুধুমাত্র সবচেয়ে কম প্রস্থ এবং উপলভ্য প্রস্থ কোয়ালিফায়ারের কম্বিনেশন ব্যবহার করে সব সাইজের ভেরিয়েশন সাপোর্ট করতে পারলেও, ব্যবহারকারী পোর্ট্রেট ও ল্যান্ডস্কেপ ওরিয়েন্টেশনের মধ্যে সুইচ করলে আপনি ব্যবহারকারীর অভিজ্ঞতা পরিবর্তন করতে চাইতে পারেন।

তার জন্য, আপনার লেআউট ডিরেক্টরির নামে port বা land কোয়ালিফায়ার যোগ করতে পারেন। শুধু নিশ্চিত করুন যে ওরিয়েন্টেশন কোয়ালিফায়ার যেন সাইজ কোয়ালিফায়ারের পরে আসে। যেমন:

res/layout/main_activity.xml                # For phones
res/layout-land/main_activity.xml           # For phones in landscape
res/layout-sw600dp/main_activity.xml        # For 7" tablets
res/layout-sw600dp-land/main_activity.xml   # For 7" tablets in landscape

সব স্ক্রিন কনফিগারেশন কোয়ালিফায়ার সম্পর্কে আরও জানতে, অ্যাপ রিসোর্স ওভারভিউ দেখুন।

উইন্ডো সাইজ ক্লাস

উইন্ডো সাইজ ক্লাস হল ভিউপোর্ট ব্রেকপয়েন্ট যা আপনাকে অ্যাডাপ্টিভ লেআউট তৈরি করতে সাহায্য করে। ব্রেকপয়েন্ট আপনার অ্যাপের জন্য উপলভ্য ডিসপ্লে এরিয়াকে কমপ্যাক্ট, মিডিয়াম বা এক্সপ্যান্ডেড হিসেবে শনাক্ত করে। প্রস্থ ও উচ্চতা আলাদাভাবে উল্লেখ করা হয়, তাই আপনার অ্যাপে সবসময় প্রস্থের জন্য একটি উইন্ডো সাইজ ক্লাস এবং উচ্চতার জন্য একটি উইন্ডো সাইজ ক্লাস থাকে।

প্রোগ্রাম্যাটিক্যালি অ্যাডাপ্টিভ লেআউট প্রয়োগ করতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:

  • উইন্ডো সাইজ ক্লাস ব্রেকপয়েন্টের উপর ভিত্তি করে লেআউট রিসোর্স তৈরি করুন
  • Jetpack WindowManager লাইব্রেরি থেকে WindowSizeClass#compute() ফাংশন ব্যবহার করে আপনার অ্যাপের প্রস্থ ও উচ্চতা উইন্ডো সাইজ ক্লাস গণনা করুন
  • বর্তমান উইন্ডো সাইজ ক্লাসের জন্য লেআউট রিসোর্স ইনফ্লেট করুন

আরও তথ্যের জন্য, উইন্ডো সাইজ ক্লাস দেখুন।

ফ্র্যাগমেন্ট ব্যবহার করে মডিউলারাইজ করা UI কম্পোনেন্ট

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

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

আরও জানতে, ফ্র্যাগমেন্ট ওভারভিউ দেখুন।

অ্যাক্টিভিটি এম্বেড করা

আপনার অ্যাপে একাধিক অ্যাক্টিভিটি থাকলে, অ্যাক্টিভিটি এম্বেডিং আপনাকে সহজেই একটি অ্যাডাপ্টিভ UI তৈরি করতে সাহায্য করে।

অ্যাক্টিভিটি এম্বেডিং কোনও অ্যাপ্লিকেশনের টাস্ক উইন্ডোতে একই সাথে একাধিক অ্যাক্টিভিটি বা একই অ্যাক্টিভিটির একাধিক ইনস্ট্যান্স দেখায়। বড় স্ক্রিনে, অ্যাক্টিভিটি পাশাপাশি দেখানো যেতে পারে; ছোট স্ক্রিনে, একটির উপরে আরেকটি দেখানো হয়।

XML কনফিগারেশন ফাইল তৈরি করে আপনার অ্যাপ কীভাবে তার অ্যাক্টিভিটি দেখাবে তা আপনি নির্ধারণ করেন। ডিসপ্লে সাইজের উপর ভিত্তি করে উপযুক্ত প্রেজেন্টেশন নির্ধারণ করতে সিস্টেম এই ফাইল ব্যবহার করে। বিকল্প হিসেবে, আপনি Jetpack WindowManager API কল করতে পারেন।

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

আরও তথ্যের জন্য, অ্যাক্টিভিটি এম্বেডিং দেখুন।

স্ক্রিন সাইজ ও অ্যাস্পেক্ট রেশিও

আপনার UI যাতে সঠিকভাবে স্কেল করে তা নিশ্চিত করতে বিভিন্ন স্ক্রিন সাইজ এবং অ্যাস্পেক্ট রেশিওতে আপনার অ্যাপ পরীক্ষা করুন।

Android 10 (API লেভেল ২৯) এবং তার পরবর্তী ভার্সনে বিভিন্ন ধরনের অ্যাস্পেক্ট রেশিও কাজ করে। ফোল্ডেবল ফর্ম ফ্যাক্টর লম্বা, সরু স্ক্রিন থেকে শুরু করে, যেমন ফোল্ড করা অবস্থায় ২১:৯, আনফোল্ড করা অবস্থায় ১:১ বর্গাকার অ্যাস্পেক্ট রেশিও পর্যন্ত হতে পারে।

যত বেশি সম্ভব ডিভাইসের সাথে মানানসই কিনা তা নিশ্চিত করতে, আপনার অ্যাপগুলি নিম্নলিখিত স্ক্রিন অ্যাস্পেক্ট রেশিওর যত বেশি সম্ভব রেশিওর জন্য পরীক্ষা করুন:

ছবি ৭. বিভিন্ন স্ক্রিন অ্যাস্পেক্ট রেশিও।

আপনি পরীক্ষা করতে চান এমন সব বিভিন্ন স্ক্রিন সাইজের ডিভাইসে আপনার অ্যাক্সেস না থাকলে, আপনি প্রায় যেকোনও স্ক্রিন সাইজ এমুলেট করতে Android এমুলেটর ব্যবহার করতে পারেন।

আপনি যদি কোনও আসল ডিভাইসে পরীক্ষা করতে চান কিন্তু আপনার কাছে ডিভাইসটি না থাকে, তাহলে আপনি Google ডেটা সেন্টারে ডিভাইস অ্যাক্সেস করতে Firebase Test Lab ব্যবহার করতে পারেন।

অতিরিক্ত রিসোর্স