মতামত সহ প্রতিক্রিয়াশীল/অভিযোজিত নকশা

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

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

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

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

কনস্ট্রেইন্টলেআউট

একটি রেসপন্সিভ লেআউট তৈরি করার সেরা উপায় হলো আপনার UI-এর ভিত্তি লেআউট হিসেবে ConstraintLayout ব্যবহার করা। ConstraintLayout আপনাকে লেআউটের অন্যান্য ভিউগুলির সাথে স্থানিক সম্পর্ক অনুযায়ী প্রতিটি ভিউয়ের অবস্থান এবং আকার নির্দিষ্ট করতে সক্ষম করে। এর ফলে, প্রদর্শনের স্থান পরিবর্তনের সাথে সাথে সমস্ত ভিউ একসাথে চলাচল ও আকার পরিবর্তন করতে পারে।

ConstraintLayout ব্যবহার করে লেআউট তৈরি করার সবচেয়ে সহজ উপায় হলো অ্যান্ড্রয়েড স্টুডিও-এর লেআউট এডিটর ব্যবহার করা। লেআউট এডিটর আপনাকে লেআউটে নতুন ভিউ ড্র্যাগ করে আনতে, প্যারেন্ট ও সিবলিং ভিউ-এর সাপেক্ষে কনস্ট্রেইন্ট প্রয়োগ করতে এবং ভিউ প্রোপার্টি সেট করতে সাহায্য করে—এই সবকিছুই হাতে কোনো XML ফাইল এডিট না করেই করা যায়।

চিত্র ৩. অ্যান্ড্রয়েড স্টুডিওর লেআউট এডিটর, যেখানে একটি 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-এর জন্য স্লাইডিংপেনলেআউট

একটি লিস্ট-ডিটেইল 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 SlidingPaneLayout অন্তর্ভুক্ত দুটি ভিউ-এর layout_width এবং layout_weight অ্যাট্রিবিউটগুলো এর আচরণ নির্ধারণ করে। উদাহরণস্বরূপ, যদি উইন্ডোটি উভয় ভিউ প্রদর্শনের জন্য যথেষ্ট বড় (কমপক্ষে 580dp চওড়া) হয়, তবে প্যানগুলো পাশাপাশি প্রদর্শিত হয়। কিন্তু, যদি উইন্ডোর প্রস্থ 580dp-এর চেয়ে কম হয়, তবে প্যানগুলো একে অপরের উপর দিয়ে স্লাইড করে সম্পূর্ণ অ্যাপ উইন্ডোটি পৃথকভাবে দখল করে নেয়।

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

বিকল্প বিন্যাস সংস্থান

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

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

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

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

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

সর্বনিম্ন প্রস্থ কোয়ালিফায়ার

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

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

উদাহরণস্বরূপ, আপনি বিভিন্ন ডিরেক্টরিতে ফাইলটির বিভিন্ন সংস্করণ তৈরি করার মাধ্যমে ফোন এবং ট্যাবলেটের জন্য অপ্টিমাইজ করা 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)

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

অন্যান্য সর্বনিম্ন প্রস্থের মানগুলো সাধারণ স্ক্রিনের আকারের সাথে কীভাবে সামঞ্জস্যপূর্ণ, তা নিচে দেওয়া হলো:

  • 320dp: ছোট ফোনের স্ক্রিন (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, ইত্যাদি)
  • 480dp: বড় ফোনের স্ক্রিন ~৫" (480x800 mdpi)
  • ৬০০ডিপি: ৭" ট্যাবলেট (৬০০x১০২৪ এমডিপিআই)
  • 720dp: 10" ট্যাবলেট (720x1280 mdpi, 800x1280 mdpi, ইত্যাদি)

নিম্নলিখিত চিত্রটিতে বিভিন্ন স্ক্রিন ডিপি প্রস্থ কীভাবে বিভিন্ন স্ক্রিন আকার এবং অভিমুখের সাথে সামঞ্জস্যপূর্ণ, তার একটি আরও বিশদ চিত্র প্রদান করা হয়েছে।

চিত্র ৬. বিভিন্ন স্ক্রিন সাইজ সমর্থন করার জন্য প্রস্তাবিত প্রস্থের সীমা।

সর্বনিম্ন প্রস্থ কোয়ালিফায়ারের মান হলো dp, কারণ এখানে মূল বিষয় হলো পিক্সেল ঘনত্ব বিবেচনা করার পর উপলব্ধ ডিসপ্লে স্পেসের পরিমাণ (কাঁচা পিক্সেল রেজোলিউশন নয়)।

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

উপলব্ধ প্রস্থ নির্ণায়ক

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

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)

আপনার অ্যাপের জন্য উপলব্ধ উচ্চতা একটি বিবেচ্য বিষয় হলে, আপনি ' available height' কোয়ালিফায়ারটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যেসব স্ক্রিনের উচ্চতা কমপক্ষে 600dp, সেগুলোর জন্য 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 আচরণের অপ্রয়োজনীয় পুনরাবৃত্তি না ঘটে। এরপর আপনি বড় স্ক্রিনে মাল্টি-পেন লেআউট তৈরি করতে ফ্র্যাগমেন্টগুলোকে একত্রিত করতে পারেন, অথবা ছোট স্ক্রিনে সেগুলোকে আলাদা অ্যাক্টিভিটিতে রাখতে পারেন।

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

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

কার্যকলাপ এম্বেডিং

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

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

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

ডিভাইসটি ঘোরানো বা ভাঁজ ও খোলার সাথে সাথে অ্যাক্টিভিটি এমবেডিং ডিভাইসের দিক পরিবর্তন এবং ভাঁজযোগ্য ডিভাইস, স্ট্যাকিং ও আনস্ট্যাকিং অ্যাক্টিভিটি সমর্থন করে।

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

স্ক্রিনের আকার এবং আকৃতির অনুপাত

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

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

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

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

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

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

অতিরিক্ত সম্পদ