রৈখিক, আপেক্ষিক, সীমাবদ্ধতা, টেবিল, ফ্রেম এবং আরও অনেক কিছু। আপনি যখন আপনার অ্যাপ্লিকেশন ডিজাইন করতে চান তখন থেকে চয়ন করার জন্য অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে লেআউটগুলির একটি সম্পূর্ণ গুচ্ছ রয়েছে৷ প্রশ্ন হল, কোনটি সেরা?
আমরা বিভিন্ন লেআউটের বিশদ বিবরণে যাওয়ার আগে, আমরা প্রথমে ভিউ অবজেক্ট হায়ারার্কি এবং অ্যান্ড্রয়েডের অঙ্কন প্রক্রিয়ার উপর যাব।
দেখুন এবং ভিউগ্রুপ
৷ভিউগ্রুপকে যেকোন ভিউয়ের প্যারেন্ট ক্লাস এবং লেআউটের জন্য বেস ক্লাস হিসাবে ভাবুন। এটি এমন একটি বস্তুর প্রতিনিধিত্ব করে যা অন্যান্য দর্শনের ধারক। উদাহরণস্বরূপ, একটি লিনিয়ারলেআউট একটি ভিউগ্রুপ যেহেতু এতে ভিউ এবং অন্যান্য লেআউটও থাকতে পারে।
অন্যদিকে, ভিউ হল UI উপাদানগুলির মৌলিক বিল্ডিং ব্লক। ভিউ একটি ভিউগ্রুপের একটি অংশ হতে পারে। উদাহরণস্বরূপ, একটি টেক্সটভিউ একটি দর্শন .
পরিমাপ -> বিন্যাস -> অঙ্কন -> পুনরাবৃত্তি
লেআউটগুলি অ্যান্ড্রয়েডে XML ফাইল হিসাবে সংরক্ষণ করা হয়। কিন্তু কিভাবে তারা পর্দায় আমরা দেখতে বস্তুতে রূপান্তরিত হয়? প্রতিটি XML ফাইল ইনস্ট্যান্টিয়েটেড হয় (পড়ুন:স্ফীত) এবং একটি ভিউ হায়ারার্কি ট্রি গঠিত হয়। এর মানে হল যে যদি আপনার লেআউট B থাকে যা লেআউট A-এর মধ্যে নেস্টেড থাকে, তাহলে তাদের একটি সন্তান থাকবে — পিতামাতার সম্পর্ক (লেআউট A হল লেআউট B-এর প্যারেন্ট)। একবার গাছটি তৈরি হয়ে গেলে, 3টি পর্যায় ঘটবে:পরিমাপ, বিন্যাস এবং অঙ্কন। এই পর্যায়গুলির প্রতিটি একটি গভীরতার প্রথম অনুসন্ধানের ক্রমে গাছকে অতিক্রম করে।
পরিমাপ
প্রথম পর্যায়ে, প্রতিটি অভিভাবক নোড তার সন্তানদের তাদের আকার সম্পর্কিত নির্দিষ্ট সীমাবদ্ধতাগুলি চিহ্নিত করে। এটি তার শিশুদের কাছে এই সীমাবদ্ধতাগুলিকে নিম্নগামী করে দেয়, যেখানে প্রতিটি শিশু তার নিজস্ব আকার (এটি কত বড় হতে চায়) মূল্যায়ন করবে এবং এটি দেওয়া সীমাবদ্ধতা এবং তার শিশুদের সীমাবদ্ধতাগুলি বিবেচনা করবে৷
লেআউট
এখানে, প্রতিটি নোড স্ক্রিনে তার প্রতিটি সন্তানের চূড়ান্ত আকার এবং অবস্থান নির্ধারণ করবে।
আঁকুন
রুট নোড থেকে শুরু করে, যা নিজেই আঁকে, তারপরে এটি তার বাচ্চাদের নিজেদের আঁকতে বলে। এই পদ্ধতিতে, যা হয় তা হল একজন পিতামাতাকে আঁকতে হবে এবং তার সন্তানদের তার উপরে আঁকা হবে।
উপরের প্রক্রিয়াটি মাথায় রেখে, আপনার আবেদনের বিন্যাস যতটা সম্ভব অগভীর রাখার চেষ্টা করা উচিত যাতে ভিউ হায়ারার্কি অতিক্রম করতে যে সময় লাগে তা কমাতে হয়
লেআউট ব্রেকডাউন
লিনিয়ার
উল্লম্ব বা অনুভূমিক একটি স্থিতিবিন্যাস সঙ্গে একটি সারিতে তার শিশুদের সংগঠিত. মানে, ভিউগুলি হয় এক সারি বা এক কলামে হবে। আপনি android:orientation ব্যবহার করে দিকনির্দেশ নির্দিষ্ট করতে পারেন বৈশিষ্ট্য।
লিনিয়ার লেআউটের একটি আকর্ষণীয় বৈশিষ্ট্য হল লেআউট_ওয়েট বৈশিষ্ট্য এটি লিনিয়ার লেআউট বলতে ব্যবহৃত হয় কিভাবে চাইল্ড ভিউ এর মধ্যে স্পেস ভাগ করতে হয়। যখন আপনি আপনার লেআউটটিকে ডিভাইস এবং ওরিয়েন্টেশনের মধ্যে সামঞ্জস্যপূর্ণ করতে চান তখন এটি দরকারী৷
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="World!"
/>
</LinearLayout>
ধরা যাক আপনি হ্যালো, শব্দটি সম্বলিত প্রথম টেক্সটভিউ চেয়েছিলেন সর্বদা স্ক্রিনের প্রস্থের 3/4 নিতে হবে। এটি করার জন্য, আমরা layout_weight বৈশিষ্ট্যটি ব্যবহার করতে পারি।
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="4" // <-- We added a total weight for our layout (4)
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="3" // <-- Will have a weight of 3 out of 4 (3/4)
android:text="Hello" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="World!"
android:layout_weight="1" // <-- Will have a weight of 1 out of 4 (1/4)
/>
</LinearLayout>
আপেক্ষিক
নাম থেকে বোঝা যায়, এই লেআউটটি তার অভ্যন্তরীণ শিশুর মতামতকে আপেক্ষিক অবস্থানে সেট করবে। এটি কোনও নেস্টেড ভিউ গ্রুপ ছাড়াই আপনার লেআউট শ্রেণিবিন্যাসকে সমতল রাখতে পারে। একই সময়ে, যাইহোক, প্রতিটি আপেক্ষিক লেআউটকে দুটি পরিমাপ পাসের একটি প্রক্রিয়ার মধ্য দিয়ে যেতে হবে, যা কর্মক্ষমতাকে প্রভাবিত করতে পারে।
RelativeLayout এর একটি দরকারী বৈশিষ্ট্য হল centerInParent ব্যবহার করে একটি শিশুর দৃশ্যকে কেন্দ্রীভূত করার ক্ষমতা বৈশিষ্ট্য।
সীমাবদ্ধতা
একটি সীমাবদ্ধতা একটি সংযোগ বা উপাদানের সাথে একটি প্রান্তিককরণ যা সীমাবদ্ধতার সাথে আবদ্ধ। আপনি উপস্থিত অন্যান্য দৃষ্টিভঙ্গির তুলনায় প্রতিটি শিশুর দৃষ্টিভঙ্গির জন্য বিভিন্ন সীমাবদ্ধতা সংজ্ঞায়িত করেন। এটি আপনাকে ফ্ল্যাট ভিউ হায়ারার্কির সাথে জটিল লেআউট তৈরি করার ক্ষমতা দেয় (কোন নেস্টেড ভিউগ্রুপ নেই)। RelativeLayout এর মতো, এই লেআউটটির জন্যও দুটি পরিমাপ পাসের প্রয়োজন।
ফ্রেম
এই লেআউটটি শুধুমাত্র একটি একক চাইল্ড ভিউ ধরে রাখতে ব্যবহার করা হয়, এইভাবে লেআউটের অন্য কোন ভিউ ব্লক করা হয়। লেআউটটি নিজেই এর সবচেয়ে বড় চাইল্ড ভিউ (দৃশ্যমান বা না) এবং কিছু প্যাডিংয়ের মতো বড় হবে।
একটি FrameLayout-এর মধ্যে একাধিক শিশুর দৃষ্টিভঙ্গি থাকা এড়িয়ে চলুন কারণ একে অপরকে ওভারল্যাপ করা থেকে শিশুর মতামত এড়ানো কঠিন হবে। আপনি লেআউট_গ্রাভিটি বরাদ্দ করে এই শিশুর দৃষ্টিভঙ্গির অবস্থান নিয়ন্ত্রণ করতে পারেন প্রতিটি শিশুর গুণাবলী।
তালিকা ভিউ/গ্রিড ভিউ
আপনার যখন স্ক্রিনে বেশ কিছু আইটেম উপস্থাপন করার প্রয়োজন হয় তখন ব্যবহার করুন (যেমন রেস্তোরাঁর মেনুতে)। লিস্ট ভিউ হল একটি একক কলামের তালিকা যা ব্যবহারকারী স্ক্রোল করতে পারে। আপনি একাধিক কলাম সহ গ্রিড ভিউকে একটি তালিকা দৃশ্য হিসাবে ভাবতে পারেন৷
৷এই লেআউটগুলি সম্পর্কে যা জানা গুরুত্বপূর্ণ তা হল ভিউগুলি গতিশীল এবং রানটাইমে তৈরি করা হয়। রানটাইমে আইটেমগুলিকে পপুলেট করতে, আপনাকে একটি অ্যাডাপ্টারভিউ ব্যবহার করতে হবে৷
৷টেবললেআউট
গ্রিড ভিউর মতোই, এই লেআউটটি তার বাচ্চাদের সারি এবং কলামে সাজিয়েছে। প্রতিটি লেআউটে বেশ কয়েকটি টেবিলরো অবজেক্ট থাকবে, প্রতিটি একটি সারি সংজ্ঞায়িত করবে।
যতক্ষণ না আপনি আপনার জন্য সবচেয়ে ভাল কাজ করে এমন একটি খুঁজে না পাওয়া পর্যন্ত বিভিন্ন লেআউট চেষ্টা করতে ভয় পাবেন না। কোন লেআউটটি আপনার জন্য সবচেয়ে উপযোগী এবং কেন তা নীচের মন্তব্যে আমাকে নির্দ্বিধায় জানান৷
৷