Android-də Screen Density (Density Buckets) anlayışının mahiyyətini — ekranların piksel sıxlığına görə təsnifatını izah edirik: mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi. Screen Density ekranın bir düymündə neçə fiziki piksel yerləşdiyini müəyyən edir və şəkillərin və interfeysin müxtəlif cihazlarda necə göstəriləcəyinə birbaşa təsir edir. Google Android Compatibility Definition (2025) məlumatına görə, Android 6 əsas Density Buckets və qatlanan cihazlar üçün 8 əlavə bucketi dəstəkləyir.
Əsas məqamlar
Screen Density (ekran sıxlığı) — ekranın bir düymünə düşən fiziki piksellərin sayıdır (ppi — pixels per inch və ya dpi — dots per inch). Android Density Buckets anlayışından istifadə edir — oxşar sıxlığa malik ekran qrupları, onlar üçün eyni miqyaslama əmsalları tətbiq olunur. Rezolyusiyadan (en və hündürlükdə piksel sayı) fərqli olaraq, sıxlıq ekrandakı pikselin fiziki ölçüsünü müəyyən edir. Google Pixel Team (2025) məlumatına görə, müasir flaqmanların sıxlığı 450-550 ppi təşkil edir ki, bu da xxhdpi-xxxhdpi bucketlərinə uyğundur.
Density Buckets sistemi Android 1.6 Donut (2009) ilə 160 dpi (mdpi) sıxlığına malik ilk cihazlarla ortaya çıxdı. Ekran rezolyusiyasının artması ilə yeni bucketlər əlavə edildi: hdpi (Android 1.6), xhdpi (Android 2.3), xxhdpi (Android 4.1), xxxhdpi (Android 4.4). Hər yeni bucket əvvəlkinə nisbətən 1.5 və ya 2 dəfə sıxlıq artımını əks etdirirdi. Android Open Source Project (2025) məlumatına görə, hazırda aktiv Android cihazlarının 96%-i hdpi-dən xxxhdpi-yə qədər sıxlığa malikdir.
Density Buckets — Google tərəfindən Android ekranlarını qruplaşdırmaq üçün müəyyən edilmiş sıxlıq diapazonlarıdır. Baza bucket — mdpi (160 dpi). Miqyaslama əmsalı (scale factor) göstərir ki, verilən bucket üçün resurs mdpi-dən neçə dəfə böyükdür. Məsələn, xhdpi (2×) o deməkdir ki, şəkil eni və hündürlüyü mdpi versiyasından 2 dəfə böyük olmalıdır. Android Studio Resource Manager (2025) məlumatına görə, xxhdpi aktiv cihazlar arasında ən geniş yayılmış bucketdir (38% bazar payı), ardınca xhdpi (28%).
| Bucket | DPI diapazonu | Scale | Nümunə cihaz | Bazar payı (2025) |
|---|---|---|---|---|
| ldpi | 120 dpi | 0.75× | Köhnə büdcə cihazları | 1%-dən az |
| mdpi | 120-160 dpi | 1× | HTC Dream (G1), 7″ planşetlər | 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% |
Ekran rezolyusiyası — en və hündürlükdəki piksellərin ümumi sayıdır (məsələn, 1080×2400). Ekran sıxlığı — düymdə piksel sayıdır. Eyni rezolyusiyaya malik iki cihaz, ekranın fiziki ölçüləri fərqlidirsə, müxtəlif sıxlığa sahib ola bilər. Məsələn, 6 düymlük telefon 1080×2400 rezolyusiyası ilə təxminən 440 dpi (xxhdpi) sıxlığa, eyni rezolyusiyalı 5 düymlük telefon isə təxminən 530 dpi (xxxhdpi) sıxlığa malikdir. Bu əsas fərqdir: interfeys rezolyusiyaya deyil, sıxlığa uyğunlaşmalıdır, əks halda yüksək sıxlıqlı cihazlarda elementlər çox kiçik olacaq.
Android res qovluqlarının adlarında müəyyən ekran sıxlığı üçün resursları yükləmək üçün qualifiers istifadə edir: drawable-mdpi, drawable-hdpi, drawable-xhdpi, drawable-xxhdpi, drawable-xxxhdpi. Tətbiq işə düşəndə Android cihazın sıxlığına ən uyğun qovluqdan resursları seçir. Dəqiq uyğunluq yoxdursa, sistem ən yaxın bucketi götürür və ya aşağı sıxlıqdan resursu miqyaslayır. Android Docs (2025) məlumatına görə, vektorlar (VectorDrawable) üçün sıxlıq kvalifikatorları lazım deyil — onlar avtomatik miqyaslanır.
/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)
Bu strukturda hər qovluq eyni ikonanı ehtiva edir, lakin müxtəlif fiziki piksel ölçüsündə. mdpi üçün əsas ölçü 48×48 piksel hər bucket üçün scale factor-a vurulur. Android cihazın DisplayMetrics.density əsasında avtomatik olaraq lazımi faylı seçir. VectorDrawable (XML formatı) üçün drawable/ qovluğunda bir fayl kifayətdir — sistem keyfiyyət itkisi olmadan miqyaslayır.
Ölçü hesablanması hər sıxlıq üçün sadə düstura əsaslanır: mdpi-də ölçü × scale factor. mdpi-də ikona 48×48 px ölçüsündədirsə, hdpi üçün 72×72 px (48 × 1.5), xhdpi üçün 96×96 px (48 × 2), xxhdpi üçün 144×144 px (48 × 3), xxxhdpi üçün 192×192 px (48 × 4) olacaq. Material Design Guidelines (2025) məlumatına görə, bu düstur bütün rastr resurslarına tətbiq olunur: ikonalar, fonlar, şəkillər və 9-patch.
| Bucket | Scale | mdpi ölçüsü (px) | Bucket-də ölçü (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 |
Düzgün hazırlıq Density Buckets üçün beş əsas qaydanı əhatə edir. Birincisi, sadə ikonalar üçün VectorDrawable istifadə edin — bu, beş nüsxəyə ehtiyacı aradan qaldırır. İkincisi, rastr şəkilləri üçün dizayn alətlərindən bütün sıxlıqları bir dəfəyə ixrac edin (Android Studio Asset Studio avtomatik yaradır). Üçüncüsü, şəkilləri kvalifikatorsuz drawable/ qovluğuna yerləşdirməkdən çəkinin — sistem keyfiyyət itkisi ilə miqyaslayacaq. Dördüncüsü, əsas cihazınızdan fərqli sıxlıqlı cihazda sınaq keçirin — emulator sıxlığı dəyişməyə imkan verir. Beşincisi, PNG əvəzinə WebP istifadə edin — Google (2025) məlumatına görə, WebP eyni keyfiyyətdə 25-35% daha kiçik ölçü verir.
Tez-tez verilən suallar
mdpi (medium-density pixel-independent) — 160 dpi sıxlığı olan əsas Density Bucket-dır. Bütün digər bucketlər mdpi-yə nisbətən hesablanır: hdpi — 1.5×, xhdpi — 2× və s. mdpi bir density-independent pixel (dp) üçün bir fiziki pikselə uyğundur. Dizaynerlər maketlər yaradarkən məhz mdpi-yə istinad edirlər.
DisplayMetrics istifadə edin: getResources().getDisplayMetrics().density scale factor-u qaytarır (mdpi üçün 1.0, xxhdpi üçün 3.0). Bucketi proqramlı şəkildə müəyyən etmək üçün getResources().getConfiguration().densityDpi çağırın. Android Studio-da qoşulmuş cihazın densityDpi-ni göstərən Device Explorer da var.
Texniki olaraq — bəli, lakin keyfiyyət itkisi ilə. Resurs yalnız drawable-xxhdpi-də varsa, mdpi cihazda 3 dəfə kiçildiləcək — şəkil bulanıq olacaq. Resurs yalnız mdpi-dədirsə, xxhdpi-də böyüdüləcək — pikselləşmə yaranacaq. Tövsiyə olunur ən azı xhdpi, xxhdpi və xxxhdpi üçün hazırlamaq — bu, aktiv cihazların 84%-ni əhatə edir (2025). VectorDrawable üçün kvalifikatorsuz bir fayl kifayətdir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun