Android Studio-তে View Hierarchy হল View শ্রেণিবিন্যাস পরিদর্শনের জন্য একটি শক্তিশালী টুল, যা ডেভেলপারদের রিয়েল টাইমে অ্যাপ্লিকেশনের ইউজার ইন্টারফেসের কাঠামো বিশ্লেষণ করতে দেয়। Android Developers (2025) এর অফিসিয়াল ডকুমেন্টেশন অনুসারে, Layout Inspector প্রতিটি লেআউট উপাদান সম্পর্কে বিস্তারিত তথ্য প্রদান করে, যার মধ্যে এর মাত্রা, মার্জিন এবং বৈশিষ্ট্য অন্তর্ভুক্ত। এই টুলটি UI ডিবাগিং, ওভারল্যাপিং উপাদান খোঁজা এবং রেন্ডারিং পারফরম্যান্স অপ্টিমাইজ করার জন্য অপরিহার্য।
মূল বিষয়
View Hierarchy হল সমস্ত View উপাদানের একটি শ্রেণিবিন্যাসগত কাঠামো যা Android অ্যাপ্লিকেশনের ইউজার ইন্টারফেস গঠন করে। ইন্টারফেসের প্রতিটি উপাদান, তা বাটন, টেক্সট ফিল্ড, ইমেজ বা কন্টেইনার হোক, এই শ্রেণিবিন্যাসে একটি গাছের নোড হিসেবে উপস্থাপিত হয় এবং প্যারেন্ট-চাইল্ড সম্পর্ক লেআউট উপাদানের নেস্টিং প্রতিফলিত করে।
Android-এ, প্রতিটি স্ক্রিন ViewGroups (কন্টেইনার) এবং Views (উইজেট) থেকে নির্মিত হয়। ViewGroup-এ চাইল্ড Views থাকে এবং তাদের অবস্থান পরিচালনা করে। উদাহরণস্বরূপ, LinearLayout উপাদানগুলিকে একটি লাইনে সাজায়, যখন ConstraintLayout সেগুলিকে সীমাবদ্ধতা অনুসারে সাজায়। View Hierarchy এই কাঠামোটিকে একটি গাছ হিসেবে ভিজুয়ালাইজ করে: মূল হল রুট ViewGroup (যেমন content), এবং পাতা হল TextView বা ImageView-এর মতো টার্মিনাল উইজেট।
যখন Android একটি স্ক্রিন রেন্ডার করে, এটি View গাছকে উপরে থেকে নীচে ট্রাভার্স করে: প্যারেন্ট ViewGroup চাইল্ড উপাদানগুলিকে মাপে এবং অবস্থান নির্ধারণ করে, তারপর প্রতিটি চাইল্ড উপাদান নিজেকে Canvas-এ আঁকে। ট্রাভার্সাল ক্রম রেন্ডারিংয়ের Z-ক্রম নির্ধারণ করে — পরে যুক্ত উপাদানগুলি আগের উপাদানগুলির উপরে আঁকা হয়। এই নীতিটি বোঝা ওভারল্যাপিং উপাদান এবং ভুল অবস্থান নির্ধারণ ডিবাগ করার জন্য গুরুত্বপূর্ণ।
<!-- লেআউটে View শ্রেণিবিন্যাসের উদাহরণ -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/titleText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World" />
<Button
android:id="@+id/submitBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit" />
</androidx.constraintlayout.widget.ConstraintLayout>
Layout Inspector হল View Hierarchy-এর সাথে কাজ করার জন্য প্রধান Android Studio টুল। এটি চলমান অ্যাপ্লিকেশনের বর্তমান UI অবস্থার স্ন্যাপশট নেয় এবং ইন্টারঅ্যাকটিভ দেখার ক্ষমতা সহ সম্পূর্ণ View গাছ প্রদর্শন করে। এর জন্য API Level 14 এবং তার উপরের ডিভাইস বা এমুলেটর প্রয়োজন।
চালু হলে, Layout Inspector অ্যাপ্লিকেশন প্রক্রিয়ার সাথে সংযুক্ত হয় এবং বর্তমান WindowManager অবস্থার ডাম্প অনুরোধ করে। ফলাফলে শুধু View গাছ নয়, উপাদানের সীমানা সহ স্ক্রিনের স্ক্রিনশটও অন্তর্ভুক্ত থাকে। এটি আক্ষরিক অর্থে দেখতে দেয় যে কোন Views রেন্ডার করা হয়েছে এবং তারা কোথায় অবস্থিত, ভিজুয়াল ডিসপ্লেকে লেআউট কোডের সাথে মিলিয়ে।
Layout Inspector Live Update মোড সমর্থন করে, যেখানে UI অবস্থা পরিবর্তন হলে স্ন্যাপশট স্বয়ংক্রিয়ভাবে আপডেট হয় — উদাহরণস্বরূপ, বাটনে ক্লিক করার বা অন্য স্ক্রিনে নেভিগেট করার পরে। এটি অ্যানিমেশন এবং ডায়নামিক ইন্টারফেস পরিবর্তন ডিবাগ করার সময় বিশেষভাবে উপযোগী, যখন ব্যবহারকারীর ক্রিয়ার প্রতিক্রিয়ায় View গাছ কীভাবে পরিবর্তিত হয় তা ট্র্যাক করা প্রয়োজন।
// রানটাইমে ডায়নামিকভাবে View যোগ করার উদাহরণ
val dynamicView = TextView(this).apply {
id = View.generateViewId()
layoutParams = ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT
)
text = "Dynamic View"
}
binding.root.addView(dynamicView)
Android Studio-তে View Hierarchy ইউজার ইন্টারফেসের গভীর বিশ্লেষণের জন্য বৈশিষ্ট্যের একটি সেট প্রদান করে। টুলটি শুধু গাছ দেখা ছাড়িয়ে যায় এবং প্রোপার্টি পরিদর্শন, 3D বিশ্লেষণ এবং উপাদান ফিল্টারিং অন্তর্ভুক্ত করে।
গাছের যেকোনো View নির্বাচন করলে, Properties প্যানেল বৈশিষ্ট্যের সম্পূর্ণ তালিকা সহ খোলে: layout_width, layout_height, padding, margin, visibility, elevation, background এবং অ্যাপ্লিকেশন থিমের সমস্ত কাস্টম বৈশিষ্ট্য। মান পিক্সেল এবং dp উভয়েই প্রদর্শিত হয়, যা লেআউট কোডের সাথে মিলানো সহজ করে।
| প্রোপার্টি | বিবরণ | উদাহরণ মান |
|---|---|---|
| mLeft, mTop | প্যারেন্টের সাপেক্ষে উপরের বাম কোণের স্থানাঙ্ক | 24px (12dp) |
| mMeasuredWidth | মাপ ধাপের পরে মাপা প্রস্থ | 192px (96dp) |
| getVisibility | উপাদানের দৃশ্যমানতা: visible, invisible বা gone | visible |
| getAlpha | 0–1 পরিসরে উপাদানের স্বচ্ছতা | 1.0 |
| getElevation | ছায়া প্রদর্শনের জন্য উপাদানের উচ্চতা | 4dp |
Layout Inspector View শ্রেণিবিন্যাসের একটি ত্রিমাত্রিক দৃশ্য অফার করে, যেখানে প্রতিটি উপাদান একটি নির্দিষ্ট উচ্চতা (elevation) সহ একটি স্তর হিসেবে প্রদর্শিত হয়। এটি দেখতে দেয় যে কোন উপাদানগুলি একে অপরকে ওভারল্যাপ করে এবং রেন্ডারিংয়ের সময় কোন Z-ক্রম ব্যবহার করা হয়। এই মোডটি CardView, FloatingActionButton এবং elevation সহ অন্যান্য উপাদানের সাথে কাজ করার সময় বিশেষভাবে উপযোগী।
ডজন ডজন View সহ বড় স্ক্রিনের জন্য, id দ্বারা অনুসন্ধান এবং উপাদান টেক্সট উপলব্ধ। আপনি View প্রকার অনুসারে গাছ ফিল্টার করতে পারেন (যেমন, শুধু TextView দেখান) বা কন্টেইনার লুকাতে পারেন, শুধু টার্মিনাল উপাদান রেখে। ফিল্টারিং গভীর নেস্টিং সহ জটিল লেআউট ফাইলে নেভিগেশন দ্রুত করে। RecyclerView-এর সাথে কাজ করার সময়, ফিল্টারিং আপনাকে তার লেআউট প্যারামিটার এবং অবস্থার বিস্তারিত বিশ্লেষণের জন্য তালিকার একটি নির্দিষ্ট আইটেমকে আলাদা করতে দেয়।
View Hierarchy শুধু লেআউট প্রোপার্টি নয়, সংশ্লিষ্ট রিসোর্সও প্রদর্শন করে: background drawable, ইমেজ সোর্স, থিম রঙ। যদি View একটি VectorDrawable ব্যবহার করে, তবে রিসোর্সের সঠিক পাথ দেখা যায়। এটি ভুল drawable রেফারেন্সের সমস্যা খুঁজতে সাহায্য করে — উদাহরণস্বরূপ, যখন ডার্ক থিম একটি হালকা আইকন ব্যবহার করে, বা যখন একটি রিসোর্স রেফারেন্স একটি অস্তিত্বহীন ফাইলের দিকে নির্দেশ করে।
View Hierarchy-এর সাথে UI ডিবাগ করা নির্দিষ্ট ব্যবহারিক কাজগুলি সমাধান করে যা প্রতিটি Android ডেভেলপার সম্মুখীন হয়। টুলটি শুধু গাছ দেখা নয়, পারফরম্যান্স এবং প্রদর্শন সমস্যা খুঁজে ও ঠিক করার অনুমতি দেয়।
যখন স্ক্রিনের একটি উপাদান প্রত্যাশিত স্থানে নেই, কেবল Layout Inspector খুলুন এবং এর স্থানাঙ্ক mLeft এবং mTop দেখুন। প্রায়ই সমস্যাটি ভুল মার্জিন বা ভুলভাবে কনফিগার করা সীমাবদ্ধতায় থাকে। View Hierarchy সঠিক অবস্থান এবং প্রকৃত মাত্রা দেখাবে।
গভীরভাবে নেস্টেড লেআউট কন্টেইনার রেন্ডারিং পারফরম্যান্সকে নেতিবাচকভাবে প্রভাবিত করে, কারণ Android মাপ এবং লেআউট পাসে বেশি সময় ব্যয় করে। View Hierarchy প্রতিটি উপাদানের নেস্টিং স্তর স্পষ্টভাবে দেখায়। প্রস্তাবিত গভীরতা 10 স্তরের বেশি নয়, এবং 15 স্তর অতিক্রম করাকে গুরুতর সমস্যা হিসেবে বিবেচনা করা হয় যার জন্য ConstraintLayout বা Merge ব্যবহার করে রিফ্যাক্টরিং প্রয়োজন।
প্রোপার্টি প্যানেলে, আপনি প্রতিটি View-এর জন্য মাপ এবং লেআউট পাসের প্রকৃত সংখ্যা দেখতে পারেন। অতিরিক্ত পুনরায় অঙ্কন একটি অদক্ষ লেআউট কাঠামো নির্দেশ করে। GPU Overdraw ডিবাগিং টুল View Hierarchy-এর সাথে মিলে সম্পূর্ণ চিত্র দেয়: কোন Views অপ্রয়োজনীয়ভাবে অন্যদের উপরে আঁকা হয়, যা GPU-তে অতিরিক্ত লোড তৈরি করে। GPU Overdraw বিশ্লেষণ Layout Inspector ডেটার সাথে মিলে পুরো স্ক্রিন জুড়ে অদক্ষ অঙ্কনের সম্পূর্ণ চিত্র দেয়।
// Merge-এর সাথে গভীরতা অপ্টিমাইজেশন
// নেস্টেড LinearLayout-এর পরিবর্তে Merge ব্যবহার করুন
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="অপ্টিমাইজড কন্টেন্ট" />
</merge>
View Hierarchy কার্যকরভাবে ব্যবহার করতে, টুলটি কীভাবে শুরু করবেন, গাছটিতে কীভাবে নেভিগেট করবেন এবং বিশ্লেষণ বা রিপোর্টিংয়ের জন্য প্রাপ্ত ডেটা কীভাবে রপ্তানি করবেন তা জানা প্রয়োজন।
Layout Inspector Android Studio-তে Tools → Layout Inspector মেনু থেকে চালু করা হয়। চালু করার আগে, অ্যাপ্লিকেশনটি সংযুক্ত ডিভাইস বা এমুলেটরে চলমান থাকতে হবে। প্রক্রিয়া নির্বাচন করার পরে, তিনটি প্যানেল সহ একটি উইন্ডো উপস্থিত হয়: স্ক্রিনের স্ক্রিনশট, View গাছ এবং নির্বাচিত উপাদানের প্রোপার্টি প্যানেল। API 29 এবং তার উপরের এমুলেটরের জন্য, Live Update মোড উপলব্ধ।
View গাছ বাম প্যানেলে একটি শ্রেণিবিন্যাসগত তালিকা হিসেবে প্রদর্শিত হয়। আপনি কন্টেইনারগুলি প্রসারিত এবং সংকুচিত করতে পারেন, এবং স্ক্রিনশটে সরাসরি ক্লিক করতে পারেন — সংশ্লিষ্ট উপাদানটি গাছে স্বয়ংক্রিয়ভাবে হাইলাইট হয়। এটি দ্বিমুখী সিঙ্ক্রোনাইজেশন: গাছে নির্বাচন স্ক্রিনশটে উপাদানটিকে হাইলাইট করে, এবং এর বিপরীত। দ্রুত অনুসন্ধানের জন্য, Filter ফিল্ড ব্যবহার করুন।
পরিদর্শনের ফলাফল পরবর্তীতে দেখার বা সহকর্মীদের সাথে শেয়ার করার জন্য .li ফরম্যাটে (Layout Inspector ফাইল) সংরক্ষণ করা যেতে পারে। ফাইলটিতে View গাছ, স্ক্রিনশট এবং সমস্ত উপাদানের প্রোপার্টি সম্পর্কে সম্পূর্ণ তথ্য থাকে। রপ্তানি করতে, Layout Inspector টুলবারে Export বাটন ব্যবহার করুন। রপ্তানি করা ডেটা UI সমস্যার সহযোগী বিশ্লেষণের জন্য Android Studio সহ অন্য মেশিনে খোলা যেতে পারে।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Layout Inspector API Level 14 (Android 4.0) এবং তার উপরের ডিভাইসে কাজ করে। তবে, Live Update মোডের জন্য API Level 29 (Android 10) এবং gradle নির্ভরতায় Layout Inspector লাইব্রেরি প্রয়োজন।
কিছু Views হার্ডওয়্যার ত্বরণ ফ্ল্যাগ বা রেন্ডারিং অপ্টিমাইজেশনের কারণে লুকানো থাকতে পারে। ম্যানিফেস্টে উইন্ডোর জন্য হার্ডওয়্যার ত্বরণ নিষ্ক্রিয় করার চেষ্টা করুন বা ডিভাইসে Developer Options চালু করুন। SurfaceView এবং TextureViewও সম্পূর্ণরূপে প্রদর্শিত হয় না।
Android এমুলেটর API 29+ এ Live Update সহ Layout Inspector কে সম্পূর্ণরূপে সমর্থন করে। নিশ্চিত করুন যে এমুলেটর Google Play Services সমর্থন সহ চলছে। Play Store ছাড়া এমুলেটরের জন্য, অ্যাপ্লিকেশনের Debug বিল্ড ব্যবহার করুন।
Layout Inspector দেখার এবং বিশ্লেষণের জন্য একটি শুধু-পঠনযোগ্য টুল। প্রোপার্টির সরাসরি সম্পাদনা সমর্থিত নয়। মান পরিবর্তন করতে, আপনাকে লেআউট ফাইল বা কোড সম্পাদনা করতে হবে এবং অ্যাপ্লিকেশন পুনরায় চালু করতে হবে। রানটাইম পরিবর্তনের জন্য Hyperion-এর মতো থার্ড-পার্টি লাইব্রেরি বিদ্যমান।
View Hierarchy হল ধারণাগত উপাদান গাছ, যখন Layout Inspector এটি ভিজুয়ালাইজ এবং বিশ্লেষণ করার জন্য Android Studio টুল। কথ্য ভাষায়, এই শব্দগুলি প্রায়শই সমার্থকভাবে ব্যবহৃত হয়, কিন্তু প্রযুক্তিগতভাবে View Hierarchy ডেটা কাঠামোকে নির্দেশ করে, যখন Layout Inspector টুলকে নির্দেশ করে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন