програмне забезпечення щільності екрану в Android?


516

Як програмно отримати щільність екрану в Android?

Я маю на увазі: Як знайти dpi на екрані поточного пристрою?


9
У багатьох відповідях йдеться про те getDisplayMetrics().xdpi, що має повернути справжній dpi пристрою. Зауважте, що це значення не встановлюється правильно на різних пристроях виробниками, тому ви просто не можете їх використовувати . Сумно, але правда: інформації про справжній dpi немає . Джерело: groups.google.com/d/msg/android-developers/g56jV0Hora0/…
sulai

2
getResources().getDisplayMetrics().xdpiі getResources().getDisplayMetrics().ydpiдасть вам фактичну горизонтальну та вертикальну щільності , які в більшості випадків різні.
Оммега

Відповіді:


526

Інформацію про дисплей можна отримати у структурі DisplayMetrics :

DisplayMetrics metrics = getResources().getDisplayMetrics();

Хоча Android не використовує пряме відображення пікселів, він використовує декілька квантованих значень незалежної щільності пікселів, а потім масштабується до фактичного розміру екрана. Таким чином, metrics.densityDpiвластивість буде одним з DENSITY_xxxконстант ( 120, 160, 213, 240, 320, 480або 640точок на дюйм).

Якщо вам потрібна фактична щільність ОК - піксельний (можливо для додатка OpenGL) , ви можете отримати його від metrics.xdpiі metrics.ydpiвластивостей для горизонтальної та вертикальної щільності відповідно.

Якщо ви орієнтуєтесь на рівні API раніше, ніж 4. metrics.densityВластивість є коефіцієнтом масштабування з плаваючою точкою від еталонної щільності (160dpi). Те саме значення, яке зараз надає, metrics.densityDpiможе бути обчислено

int densityDpi = (int)(metrics.density * 160f);

42
Додано цю посаду понад два роки тому, але це перше, що з’являється в Google для цього пошуку, тому для тих, хто це знайде, вам більше не доведеться множити на 160.
roboguy12

5
Більше не з якої версії?
TacB0sS

Я оновив відповідь, щоб відповідати останнім редакціям API, які люди можуть використовувати.
joshperry

6
Примітка. Ви можете замість цього отримати новіший API: getWindowManager().getDefaultDisplay().getRealMetrics(metrics); Це було офіційно додано в API 17, але я був здивований, коли виявив, що він працює правильно навіть на пристрої 4.0, який я спробував.
benkc

2
також є getResources (). getDisplayMetrics (). щільністьDpi
ввечері

367

Це також працює:

 getResources().getDisplayMetrics().density;

Це дасть вам:

0,75 - ldpi

1,0 - mdpi

1,5 - hdpi

2,0 - xhdpi

3,0 - xxhdpi

4,0 - xxxhdpi

введіть тут опис зображення

ref: щільність

введіть тут опис зображення

посилання 2


10
+1 Це працює, коли у вас немає прямого доступу WindowManager(наприклад, навантажувач). Просто помножте його на 160
Michał K

2
API рівня 16 додав xxdpi, що тут перекладається на 3.0.
QED

3
це дасть 1,3312501 за tvdpi. Більш детальну інформацію можна tvdpiзнайти тут
Дорі

2
Nexus 7 повідомляє 1.3, чому саме дужка повинна входити?
Ніл

1
@selbie, ваш телефон, ймовірно, тягне та масштабує ресурси більш високої якості, оскільки ваш телефон повідомляє на півдорозі між двома визначеними густинами.
Сакібой

145
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

switch(metrics.densityDpi) {
     case DisplayMetrics.DENSITY_LOW:
         break;

     case DisplayMetrics.DENSITY_MEDIUM:
         break;

     case DisplayMetrics.DENSITY_HIGH:
         break;
}

Це буде працювати на рівні 4 і вище API.


Як би ви передали такі пристрої, як Nexus 7, який повідомляє щільністьDpi як 213?
Ніл

перевірте значення "щільність", наприклад, якщо (metrics.densityDpi> DisplayMetrics.DENSITY_LOW && metrics.densityDpi <DisplayMetrics.DENSITY_MEDIUM)
Mitul Nakum

1
АБО якщо (metrics.densityDpi <DisplayMetrics.DENSITY_LOW) {} інше, якщо (metrics.densityDpi <DisplayMetrics. DENSITY_MEDIUM) {} .....
Mitul Nakum

1
Ніл, 213 називається TV DPI, для цього DENSITY_TV є названа щільність метрики відображення.
Andrew S

63

Відповідь Блонделла як статичний помічник:

private static String getDensityName(Context context) {
    float density = context.getResources().getDisplayMetrics().density;
    if (density >= 4.0) {
        return "xxxhdpi";
    }
    if (density >= 3.0) {
        return "xxhdpi";
    }
    if (density >= 2.0) {
        return "xhdpi";
    }
    if (density >= 1.5) {
        return "hdpi";
    }
    if (density >= 1.0) {
        return "mdpi";
    }
    return "ldpi";
}

як щодо щільності tvdpi. Я здогадуюсь, що це 1,33
Anoop

@AnoopssGolden Це насправді не стандартно, тому ви можете додати його, якщо хочете, але я не думаю, що відповідь має включати його. З андроїд-документів: "Це не вважається" первинною "групою щільності. Він здебільшого призначений для телевізорів, і більшості програм це не потрібно".
qwertzguy

Але пристрій Nexus 7 належить до групи щільності tvdpi.
Anoop

1
Я знаю, це трохи старе, але просто додати; MDPI може працювати для більшості речей на Nexus 7, але, як я зараз намагаюся, зображення, що стають як MDPI, недостатньо великі. Мені потрібно визначити TVDPI, а потім попросити збільшити розмір зображення на своєму сервері. Він може не використовуватися багато, але це не означає, що MDPI підбере все.
RED_

3
Привіт @Andrew S, використання elses нічого не змінює ефективність коду, оскільки кожен, якщо повертається негайно. Видалення брекетів - це питання лише стилю, і IMHO робить його більш схильним до помилок при підтримці коду.
qwertzguy

45

Спробуйте це:

DisplayMetrics dm = context.getResources().getDisplayMetrics();
int densityDpi = dm.densityDpi;

5
Мені це подобається набагато краще, оскільки він спирається на контекст, а не на діяльність.
greg7gkb

Домовились, я можу використовувати це Viewнабагато простіше (саме там мені це потрібно!)
Ендрю Війлд

37

Щоб отримати dpi:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);

// will either be DENSITY_LOW, DENSITY_MEDIUM or DENSITY_HIGH
int dpiClassification = dm.densityDpi;

// these will return the actual dpi horizontally and vertically
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;

4
dm.densityDpi повертає або DENSITY_LOW, або DENSITY_MEDIUM, або DENSITY_HIGH. Що з xhdpi? Чи є DENSITY_XHIGH або близько того?
Євген Чумак


34

Ось постійні щільності, джерело :

введіть тут опис зображення

Окрім стандартної щільності є ще 5 проміжних. Враховуючи цей факт, наступний код буде повноцінним робочим прикладом:

float density = getResources().getDisplayMetrics().density;

if (density == 0.75f)
{
    // LDPI
}
else if (density >= 1.0f && density < 1.5f)
{
    // MDPI
}
else if (density == 1.5f)
{
    // HDPI
}
else if (density > 1.5f && density <= 2.0f)
{
    // XHDPI
}
else if (density > 2.0f && density <= 3.0f)
{
    // XXHDPI
}
else
{
    // XXXHDPI 
}

Також можна знайти константи щільності за допомогою densityDpi:

int densityDpi = getResources().getDisplayMetrics().densityDpi;

switch (densityDpi)
{
    case DisplayMetrics.DENSITY_LOW:
        // LDPI
        break;

    case DisplayMetrics.DENSITY_MEDIUM:
        // MDPI
        break;

    case DisplayMetrics.DENSITY_TV:
    case DisplayMetrics.DENSITY_HIGH:
        // HDPI
        break;

    case DisplayMetrics.DENSITY_XHIGH:
    case DisplayMetrics.DENSITY_280:
        // XHDPI
        break;

    case DisplayMetrics.DENSITY_XXHIGH:
    case DisplayMetrics.DENSITY_360:
    case DisplayMetrics.DENSITY_400:
    case DisplayMetrics.DENSITY_420:
        // XXHDPI
        break;

    case DisplayMetrics.DENSITY_XXXHIGH:
    case DisplayMetrics.DENSITY_560:
        // XXXHDPI
        break;
}

29

Наступна відповідь - це невелике поліпшення, засноване на відповіді qwertzguy.

double density = getResources().getDisplayMetrics().density;
if (density >= 4.0) {
   //"xxxhdpi";
}
else if (density >= 3.0 && density < 4.0) {
   //xxhdpi
}
else if (density >= 2.0) {
   //xhdpi
}
else if (density >= 1.5 && density < 2.0) {
   //hdpi
}
else if (density >= 1.0 && density < 1.5) {
   //mdpi
}

1
Цей код може мати деякі elses, а розширення та умови після нього зайві.
Andrew S

1
@Andrew, дякую за виправлення Відповідь я відредагував відповідно.
San

2
@San Ви не потребуєте && в будь-якому з цих умов, якщо ви послідовно перевіряли на> = інше, чи буде припинено виконання першої умови, що відповідає дійсності.
dbenson

3
Це не повертає для мене правильного результату за допомогою мого Nexus 5X (google за замовчуванням btw). Щільність пристрою становить xxhdpi, а повернена подвійна щільність - близько 2,6.
Тобліг

20

Насправді, якщо ви хочете мати реальний дисплей dpi, відповідь знаходиться десь посередині, якщо ви запитуєте метричні показники відображення:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int dpiClassification = dm.densityDpi;
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;

densityDpi * 160 дасть вам значення / пропозицію, яку щільність ви повинні використовувати

0.75 - ldpi - 120 dpi
1.0 - mdpi - 160 dpi
1.5 - hdpi - 240 dpi
2.0 - xhdpi - 320 dpi
3.0 - xxhdpi - 480 dpi
4.0 - xxxhdpi - 640 dpi

як зазначено в попередніх дописах

але dm.xdpiне дасть вам завжди РЕАЛЬНІ dpi даного дисплея: Приклад:

Device: Sony ericsson xperia mini pro (SK17i)
Density: 1.0 (e.g. suggests you use 160dpi resources)
xdpi: 193.5238
Real device ppi is arround 193ppi


Device: samsung GT-I8160 (Samsung ace 2)
Density 1.5 (e.g. suggests you use 240dpi resources)
xdpi 160.42105
Real device ppi is arround 246ppi

тому, можливо, справжній dpi дисплея повинен бути Щільність * xdpi .. але я не впевнений, чи правильно це зробити!


1
Використання густини * xdpi на сьогодні ідеально працює над усіма моїми програмами в Google Play за останні 6 місяців
Marek Halmo

Помноження щільності * xdpi не є логічним. Ясніше тепер, коли є більше пристроїв більш високої щільності - і щільність, і xdpi збільшуються, тому множення їх було б подвійним підрахунком збільшення. Я б сказав, що у асоціації Samsung 2 була помилка продавця. Спеціалізація Android полягає в тому, що xdpi і ydpi - це справжня щільність пікселів - не множиться ні на що.
ToolmakerSteve

17

Це має допомогти у вашій діяльності ...

void printSecreenInfo(){

    Display display = getWindowManager().getDefaultDisplay();
    DisplayMetrics metrics = new DisplayMetrics();
    display.getMetrics(metrics);

    Log.i(TAG, "density :" +  metrics.density);

    // density interms of dpi
    Log.i(TAG, "D density :" +  metrics.densityDpi);

    // horizontal pixel resolution
    Log.i(TAG, "width pix :" +  metrics.widthPixels);

     // actual horizontal dpi
    Log.i(TAG, "xdpi :" +  metrics.xdpi);

    // actual vertical dpi
    Log.i(TAG, "ydpi :" +  metrics.ydpi);

}

ВИХІД:

I/test( 1044): density :1.0

I/test( 1044): D density :160

I/test( 1044): width pix :800

I/test( 1044): xdpi :160.0

I/test( 1044): ydpi :160.42105

13
public static String getDensity(Context context) {
    String r;
    DisplayMetrics metrics = new DisplayMetrics();

    if (!(context instanceof Activity)) {
        r = "hdpi";
    } else {
        Activity activity = (Activity) context;
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

        if (metrics.densityDpi <= DisplayMetrics.DENSITY_LOW) {
            r = "ldpi";
        } else if (metrics.densityDpi <= DisplayMetrics.DENSITY_MEDIUM) {
            r = "mdpi";
        } else {
            r = "hdpi";
        }
    }

    return r;
}

11

Якщо ви хочете отримати щільність із сервісу, він працює так:

WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);

Цей допоміг мені, коли у мене не було вікнаManager
silentsudo

8

Ви повинні спробувати це. Просто додали метод, який знайде і покаже тост. Те, у яку категорію потрапляє пристрій.

public static int differentDensityAndScreenSize(Context context) {
  int value = 20;
  String str = "";
  if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "small-ldpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "small-mdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "small-hdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "small-xhdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "small-xxhdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "small-xxxhdpi";
    value = 20;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "small-tvdpi";
    value = 20;
    break;
   default:
    str = "small-unknown";
    value = 20;
    break;
   }

  } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "normal-ldpi";
    value = 82;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "normal-mdpi";
    value = 82;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "normal-hdpi";
    value = 82;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "normal-xhdpi";
    value = 90;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "normal-xxhdpi";
    value = 96;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "normal-xxxhdpi";
    value = 96;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "normal-tvdpi";
    value = 96;
    break;
   default:
    str = "normal-unknown";
    value = 82;
    break;
   }
  } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "large-ldpi";
    value = 78;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "large-mdpi";
    value = 78;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "large-hdpi";
    value = 78;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "large-xhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "large-xxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "large-xxxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "large-tvdpi";
    value = 125;
    break;
   default:
    str = "large-unknown";
    value = 78;
    break;
   }

  } else if ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
   switch (context.getResources().getDisplayMetrics().densityDpi) {
   case DisplayMetrics.DENSITY_LOW:
    str = "xlarge-ldpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_MEDIUM:
    str = "xlarge-mdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_HIGH:
    str = "xlarge-hdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XHIGH:
    str = "xlarge-xhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXHIGH:
    str = "xlarge-xxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_XXXHIGH:
    str = "xlarge-xxxhdpi";
    value = 125;
    break;
   case DisplayMetrics.DENSITY_TV:
    str = "xlarge-tvdpi";
    value = 125;
    break;
   default:
    str = "xlarge-unknown";
    value = 125;
    break;
   }
  }
// The Toast will show the Device falls in Which Categories.
Toast.makeText(MainActivity.this, ""+str, Toast.LENGTH_SHORT).show();

  return value;
 }

http://www.androidwarriors.com/2016/01/how-to-find-different-devices-screen.html


7

Це має спрацювати.

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; //320
int height = dm.heightPixels; //480

4
Розмір у пікселях дисплея не є щільністю.
joshperry

1
Це незалежні від щільності пікселі, а не пікселі. А той 320, який ви бачите, - 320dip, а не 320px. Розрахунок рх відрізняється побачити цей stackoverflow.com/questions/6840904 / ...
Lukap

7

Ще одна відповідь:

/**
* @return "ldpi", "mdpi", "hdpi", "xhdpi", "xhdpi", "xxhdpi", "xxxhdpi", "tvdpi", or "unknown".
*/
public static String getDensityBucket(Resources resources) {
    switch (resources.getDisplayMetrics().densityDpi) {
        case DisplayMetrics.DENSITY_LOW:
            return "ldpi";
        case DisplayMetrics.DENSITY_MEDIUM:
            return "mdpi";
        case DisplayMetrics.DENSITY_HIGH:
            return "hdpi";
        case DisplayMetrics.DENSITY_XHIGH:
            return "xhdpi";
        case DisplayMetrics.DENSITY_XXHIGH:
            return "xxhdpi";
        case DisplayMetrics.DENSITY_XXXHIGH:
            return "xxxhdpi";
        case DisplayMetrics.DENSITY_TV:
            return "tvdpi";
        default:
            return "unknown";
    }
}

3

Ще один спосіб отримати щільність завантаження пристроєм:

Створіть valuesпапки для кожної щільності

  • значення (mdpi за замовчуванням)
  • значення-hdpi
  • значення-xhdpi
  • значення-xxhdpi
  • значення-xxxhdpi

Додайте рядовий ресурс у відповідних strings.xml:

<string name="screen_density">MDPI</string>    <!-- ..\res\values\strings.xml -->
<string name="screen_density">HDPI</string>    <!-- ..\res\values-hdpi\strings.xml -->
<string name="screen_density">XHDPI</string>   <!-- ..\res\values-xhdpi\strings.xml -->
<string name="screen_density">XXHDPI</string>  <!-- ..\res\values-xxhdpi\strings.xml -->
<string name="screen_density">XXXHDPI</string> <!-- ..\res\values-xxxhdpi\strings.xml -->

Тоді просто отримайте рядовий ресурс, і у вас є ваша щільність:

String screenDensity = getResources().getString(R.string.screen_density);

Якщо щільність більша за XXXHDPI, вона буде за замовчуванням XXXHDPIабо, якщо вона нижча, ніж HDPIза замовчуваннямMDPI

Значення R.strings.screen_density

Я вийшов з ладу LDPI, тому що для мого використання це не потрібно.


Я думаю, що це правильний спосіб отримати щільність. Оскільки я використовую щільність getResources (). GetDisplayMetrics ()., Щільність зміниться, якщо я зміню розмір дисплея в налаштуваннях.
Fantasy Fang

1

Спробуйте це...

В котлін

fun determineScreenDensityCode(): String {
      return when (resources.displayMetrics.densityDpi) {
         DisplayMetrics.DENSITY_LOW -> "ldpi"
         DisplayMetrics.DENSITY_MEDIUM -> "mdpi"
         DisplayMetrics.DENSITY_HIGH -> "hdpi"
         DisplayMetrics.DENSITY_XHIGH, DisplayMetrics.DENSITY_280 -> "xhdpi"
         DisplayMetrics.DENSITY_XXHIGH, DisplayMetrics.DENSITY_360, DisplayMetrics.DENSITY_400, DisplayMetrics.DENSITY_420 -> "xxhdpi"
         DisplayMetrics.DENSITY_XXXHIGH, DisplayMetrics.DENSITY_560 -> "xxxhdpi"
         else -> "Unknown code ${resources.displayMetrics.densityDpi}"
     }
}

Ви можете зателефонувати, println("density: ${determineScreenDensityCode()}") і вихід будеSystem.out: density: xxxhdpi


0

Я використовую наступний код для доступу до DPI з модулів (не потрібно мати доступ до контекстного об'єкта):

(Resources.getSystem().getDisplayMetrics().xdpi
Resources.getSystem().getDisplayMetrics().ydpi)/2

0

В Android ви можете отримати щільність екрана таким чином:

public static String getScreenDensity(Context context)
{
    String density;
    switch (context.getResources().getDisplayMetrics().densityDpi)
    {
        case DisplayMetrics.DENSITY_LOW:
            density = "LDPI";
            break;
        case DisplayMetrics.DENSITY_140:
            density = "LDPI - MDPI";
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            density = "MDPI";
            break;
        case DisplayMetrics.DENSITY_180:
        case DisplayMetrics.DENSITY_200:
        case DisplayMetrics.DENSITY_220:
            density = "MDPI - HDPI";
            break;
        case DisplayMetrics.DENSITY_HIGH:
            density = "HDPI";
            break;
        case DisplayMetrics.DENSITY_260:
        case DisplayMetrics.DENSITY_280:
        case DisplayMetrics.DENSITY_300:
            density = "HDPI - XHDPI";
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            density = "XHDPI";
            break;
        case DisplayMetrics.DENSITY_340:
        case DisplayMetrics.DENSITY_360:
        case DisplayMetrics.DENSITY_400:
        case DisplayMetrics.DENSITY_420:
        case DisplayMetrics.DENSITY_440:
            density = "XHDPI - XXHDPI";
            break;
        case DisplayMetrics.DENSITY_XXHIGH:
            density = "XXHDPI";
            break;
        case DisplayMetrics.DENSITY_560:
        case DisplayMetrics.DENSITY_600:
            density = "XXHDPI - XXXHDPI";
            break;
        case DisplayMetrics.DENSITY_XXXHIGH:
            density = "XXXHDPI";
            break;
        case DisplayMetrics.DENSITY_TV:
            density = "TVDPI";
            break;
        default:
            density = "UNKNOWN";
            break;
    }

    return density;
}

А в Котліні так:

fun getScreenDensity(context: Context): String {
    val density: String
    when (context.resources.displayMetrics.densityDpi) {
        DisplayMetrics.DENSITY_LOW -> density = "LDPI"
        DisplayMetrics.DENSITY_140 -> density = "LDPI - MDPI"
        DisplayMetrics.DENSITY_MEDIUM -> density = "MDPI"
        DisplayMetrics.DENSITY_180, DisplayMetrics.DENSITY_200, DisplayMetrics.DENSITY_220 -> density = "MDPI - HDPI"
        DisplayMetrics.DENSITY_HIGH -> density = "HDPI"
        DisplayMetrics.DENSITY_260, DisplayMetrics.DENSITY_280, DisplayMetrics.DENSITY_300 -> density = "HDPI - XHDPI"
        DisplayMetrics.DENSITY_XHIGH -> density = "XHDPI"
        DisplayMetrics.DENSITY_340, DisplayMetrics.DENSITY_360, DisplayMetrics.DENSITY_400, DisplayMetrics.DENSITY_420, DisplayMetrics.DENSITY_440 -> density =
            "XHDPI - XXHDPI"
        DisplayMetrics.DENSITY_XXHIGH -> density = "XXHDPI"
        DisplayMetrics.DENSITY_560, DisplayMetrics.DENSITY_600 -> density = "XXHDPI - XXXHDPI"
        DisplayMetrics.DENSITY_XXXHIGH -> density = "XXXHDPI"
        DisplayMetrics.DENSITY_TV -> density = "TVDPI"
        else -> density = "UNKNOWN"
    }

    return density
}

Обов’язково регулярно перевіряйте, чи додані нові густини .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.