আমরা Android-এ Screen Density (Density Buckets) এর সারাংশ ব্যাখ্যা করছি — পিক্সেল ঘনত্ব অনুযায়ী স্ক্রিনের শ্রেণীবিভাগ: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi। Screen Density নির্ধারণ করে স্ক্রিনের এক ইঞ্চিতে কতগুলি ফিজিক্যাল পিক্সেল ফিট হয় এবং এটি সরাসরি প্রভাবিত করে কিভাবে বিভিন্ন ডিভাইসে ইমেজ এবং ইন্টারফেস প্রদর্শিত হয়। Google Android Compatibility Definition (2025) অনুযায়ী, Android 6টি প্রধান Density Buckets এবং ভাঁজযোগ্য ডিভাইসের জন্য 8টি অতিরিক্ত Buckets সমর্থন করে।
মূল পয়েন্ট
Screen Density হল স্ক্রিনের প্রতি ইঞ্চিতে ফিজিক্যাল পিক্সেলের সংখ্যা (ppi — পিক্সেল প্রতি ইঞ্চি, বা dpi — ডট প্রতি ইঞ্চি)। Android Density Buckets-এর ধারণা ব্যবহার করে — একই রকম ঘনত্বের স্ক্রিনের গ্রুপ যা একই স্কেলিং ফ্যাক্টর ব্যবহার করে। রেজোলিউশন (প্রস্থ এবং উচ্চতায় পিক্সেলের সংখ্যা) থেকে ভিন্ন, ঘনত্ব স্ক্রিনে একটি পিক্সেলের ফিজিক্যাল আকার নির্ধারণ করে। Google Pixel Team (2025) অনুযায়ী, আধুনিক ফ্ল্যাগশিপের ঘনত্ব 450-550 ppi, যা xxhdpi-xxxhdpi bucket-এর সাথে সামঞ্জস্যপূর্ণ।
Density Buckets সিস্টেম Android 1.6 Donut (2009)-এ 160 dpi (mdpi) বিশিষ্ট প্রথম ডিভাইসগুলোর সাথে আবির্ভূত হয়। স্ক্রিন রেজোলিউশন বাড়ার সাথে সাথে নতুন buckets যুক্ত করা হয়: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4)। প্রতিটি নতুন bucket আগেরটির তুলনায় 1.5× বা 2× ঘনত্ব বৃদ্ধি প্রতিফলিত করে। Android Open Source Project (2025) অনুযায়ী, এখন 96% সক্রিয় Android ডিভাইসের ঘনত্ব hdpi থেকে xxxhdpi-এর মধ্যে।
Density Buckets হল Google-এর দ্বারা Android স্ক্রিন গ্রুপ করার জন্য নির্ধারিত ঘনত্বের পরিসর। বেস bucket হল mdpi (160 dpi)। স্কেল ফ্যাক্টর দেখায় যে একটি নির্দিষ্ট bucket-এর রিসোর্স mdpi-র তুলনায় কত গুণ বড়। উদাহরণস্বরূপ, xhdpi (2×) মানে ছবিটি তার mdpi সংস্করণের তুলনায় প্রস্থ এবং উচ্চতায় 2 গুণ বড় হওয়া উচিত। Android Studio Resource Manager (2025) অনুযায়ী, সক্রিয় ডিভাইসগুলোর মধ্যে xxhdpi সবচেয়ে সাধারণ bucket (38% বাজার অংশ), এর পরে xhdpi (28%)।
| Bucket | DPI পরিসর | স্কেল | ডিভাইস উদাহরণ | বাজার অংশ (2025) |
|---|---|---|---|---|
| ldpi | 120 dpi | 0.75× | পুরনো বাজেট ডিভাইস | 1% এর কম |
| mdpi | 120-160 dpi | 1× | HTC Dream (G1), 7" ট্যাবলেট | 3% |
| hdpi | 160-240 dpi | 1.5× | Samsung Galaxy S2, Nexus 4 | 12% |
| xhdpi | 240-320 dpi | 2× | Google Nexus 5, Moto G | 28% |
| xxhdpi | 320-480 dpi | 3× | Samsung Galaxy S8, Pixel 3 | 38% |
| xxxhdpi | 480-640 dpi | 4× | Samsung Galaxy S24 Ultra, Pixel 9 Pro | 18% |
স্ক্রিন রেজোলিউশন হল প্রস্থ এবং উচ্চতায় পিক্সেলের মোট সংখ্যা (যেমন, 1080×2400)। স্ক্রিন ঘনত্ব হল প্রতি ইঞ্চিতে পিক্সেলের সংখ্যা। একই রেজোলিউশনের দুটি ডিভাইসের ঘনত্ব আলাদা হতে পারে যদি তাদের ফিজিক্যাল স্ক্রিন আকার ভিন্ন হয়। উদাহরণস্বরূপ, 1080×2400 রেজোলিউশনের একটি 6-ইঞ্চি ফোনের ঘনত্ব প্রায় 440 dpi (xxhdpi), অন্যদিকে একই রেজোলিউশনের 5-ইঞ্চি ফোনের প্রায় 530 dpi (xxxhdpi)। এটি একটি মূল পার্থক্য: ইন্টারফেসকে রেজোলিউশন নয়, বরং ঘনত্বের সাথে খাপ খাওয়ানো উচিত, অন্যথায় উচ্চ-ঘনত্বের ডিভাইসে উপাদানগুলি খুব ছোট হবে।
Android নির্দিষ্ট স্ক্রিন ঘনত্বের জন্য রিসোর্স লোড করতে res ফোল্ডারের নামে কোয়ালিফায়ার ব্যবহার করে: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi। অ্যাপ্লিকেশন শুরু হলে, Android ডিভাইসের ঘনত্বের সাথে সবচেয়ে ভালো মেলে এমন ফোল্ডার থেকে রিসোর্স নির্বাচন করে। যদি সঠিক মিল না থাকে, সিস্টেম নিকটতম bucket ব্যবহার করে বা কম ঘনত্ব থেকে রিসোর্স স্কেল করে। Android Docs (2025) অনুযায়ী, ভেক্টরের (VectorDrawable) জন্য ঘনত্ব কোয়ালিফায়ারের প্রয়োজন নেই — এগুলি স্বয়ংক্রিয়ভাবে স্কেল হয়।
/res/
drawable-mdpi/
icon_app.png (48x48 px)
drawable-hdpi/
icon_app.png (72x72 px)
drawable-xhdpi/
icon_app.png (96x96 px)
drawable-xxhdpi/
icon_app.png (144x144 px)
drawable-xxxhdpi/
icon_app.png (192x192 px)
এই কাঠামোতে, প্রত্যেক ফোল্ডার একই আইকন ধারণ করে কিন্তু ভিন্ন ফিজিক্যাল পিক্সেল আকারে। mdpi-র জন্য 48×48 পিক্সেলের বেস আকার প্রতিটি bucket-এর স্কেল ফ্যাক্টর দ্বারা গুণিত হয়। Android ডিভাইসের DisplayMetrics.density-র উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে সঠিক ফাইল নির্বাচন করে। VectorDrawable (XML ফরম্যাট) এর জন্য, drawable/-এ একটি একক ফাইল যথেষ্ট — সিস্টেম এটি গুণমান হ্রাস ছাড়াই স্কেল করে।
আকার গণনা প্রতিটি ঘনত্বের জন্য একটি সহজ সূত্রের উপর ভিত্তি করে: mdpi-তে আকার × স্কেল ফ্যাক্টর। যদি mdpi-তে একটি আইকনের আকার 48×48 px হয়, তাহলে hdpi-র জন্য এটি 72×72 px (48 × 1.5), xhdpi-র জন্য — 96×96 px (48 × 2), xxhdpi-র জন্য — 144×144 px (48 × 3), xxxhdpi-র জন্য — 192×192 px (48 × 4) হবে। Material Design Guidelines (2025) অনুযায়ী, এই সূত্রটি সমস্ত রাস্টার রিসোর্সের ক্ষেত্রে প্রযোজ্য: আইকন, ব্যাকগ্রাউন্ড, ইমেজ এবং 9-patch।
| Bucket | স্কেল | mdpi আকার (px) | Bucket আকার (px) |
|---|---|---|---|
| mdpi | 1× | 48×48 | 48×48 |
| hdpi | 1.5× | 48×48 | 72×72 |
| xhdpi | 2× | 48×48 | 96×96 |
| xxhdpi | 3× | 48×48 | 144×144 |
| xxxhdpi | 4× | 48×48 | 192×192 |
সঠিক প্রস্তুতি Density Buckets-এর জন্য রিসোর্সের পাঁচটি মূল নিয়ম অন্তর্ভুক্ত করে। প্রথমত, সরল আইকনের জন্য VectorDrawable ব্যবহার করুন — এটি পাঁচটি কপির প্রয়োজনীয়তা দূর করে। দ্বিতীয়ত, রাস্টার ইমেজের জন্য, ডিজাইন টুল থেকে সব ঘনত্ব এক্সপোর্ট করুন (Android Studio Asset Studio স্বয়ংক্রিয়ভাবে তৈরি করে)। তৃতীয়ত, কোয়ালিফায়ার ছাড়া drawable/-এ ইমেজ রাখা এড়িয়ে চলুন — সিস্টেম গুণমান হ্রাস সহ স্কেল করবে। চতুর্থত, আপনার প্রধান ডিভাইস থেকে ভিন্ন ঘনত্বের ডিভাইসে পরীক্ষা করুন — ইমুলেটর ঘনত্ব পরিবর্তনের অনুমতি দেয়। পঞ্চমত, PNG-এর পরিবর্তে WebP ব্যবহার করুন — Google (2025) অনুযায়ী, WebP একই গুণমানে 25-35% ছোট আকার দেয়।
সচরাচর জিজ্ঞাসিত প্রশ্ন
mdpi (medium-density pixel-independent) — Android-এ 160 dpi ঘনত্বের বেস Density Bucket। অন্যান্য সব buckets mdpi-র সাপেক্ষে গণনা করা হয়: hdpi — 1.5×, xhdpi — 2×, ইত্যাদি। mdpi প্রতি density-independent pixel (dp)-এ একটি ফিজিক্যাল পিক্সেলের সমান। ডিজাইনাররা লেআউট তৈরি করার সময় mdpi-কে রেফারেন্স হিসেবে ব্যবহার করেন।
DisplayMetrics ব্যবহার করুন: getResources().getDisplayMetrics().density স্কেল ফ্যাক্টর রিটার্ন করে (mdpi-র জন্য 1.0, xxhdpi-র জন্য 3.0)। প্রোগ্রামেটিকভাবে bucket নির্ধারণ করতে getResources().getConfiguration().densityDpi কল করুন। Android Studio-তে Device Explorer-ও আছে যা সংযুক্ত ডিভাইসের জন্য densityDpi দেখায়।
প্রযুক্তিগতভাবে — হ্যাঁ, কিন্তু গুণমান হ্রাস সহ। যদি রিসোর্স শুধুমাত্র drawable-xxhdpi-তে উপলব্ধ হয়, mdpi ডিভাইসে এটি 3× ছোট হবে — ছবি ঝাপসা হয়ে যাবে। যদি রিসোর্স শুধুমাত্র mdpi-তে হয়, xxhdpi-তে এটি বড় হবে — পিক্সেলেশন। সুপারিশ হল কমপক্ষে xhdpi, xxhdpi এবং xxxhdpi-র জন্য প্রস্তুত করা — এটি 84% সক্রিয় ডিভাইস (2025) কভার করে। VectorDrawable-র জন্য, কোয়ালিফায়ার ছাড়া একটি ফাইল যথেষ্ট।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন