2015-06-28 3 views
0

Я хотел бы понять, если устройство имеет hdpi экран, ldpi, mdpi, large-hdpi и т.д., но я не говорю об этом программно, вместо этого я хотел бы понять это на основе характеристик устройства. Например, я хотел бы посмотреть на gsmarena по спецификациям устройства и определить, какие ресурсы загружаются этим конкретным устройством.Определите тип экрана любого Android устройства

Можно ли это сделать? Или ... есть список таких вещей, для всех возможных устройств, где-то в Интернете?

ответ

1

Вы можете посмотреть ИИП устройства и определить его категорию.

LDPI: Низкая плотность, ~ 120 точек на дюйм

MDPI средней плотности, ~ 120-160 точек на дюйм

TVDPI: средняя высокая плотность, ~ 160-213 точек на дюйм

ИПЧР: Высокая плотность, ~ 213-240 точек на дюйм

XHDPI: сверхвысокая плотность, ~ 240-320 точек на дюйм

XXHDPI: Добавочные сверхвысокая плотность, ~ 320-480 точек на дюйм [15]

XXXHDPI: Экстренно экстренно сверхвысокая плотность, ~ 480-640 точек на дюйм [16]


Если сайт не предоставляет PPI ​​дисплея, то вы можете вычислить его от зная размер диагонали экрана в дюймах и тому resolu в пикселях (ширина и высота).Это может быть сделано в два этапа:

  1. Расчет диагонали разрешение в пикселях, используя теорему Пифагора:

    enter image description here

  2. Вычислить PPI:

    enter image description here

где

enter image description here диагоналей разрешение в пикселях

enter image description here является ширина разрешение в пикселях

enter image description here это разрешение высота в пикселях

enter image description here является размер диагонали в дюймах (это число рекламировали как размер дисплей).

+0

Отлично, именно то, что я искал! – AndreiBogdan

1

Я написал для вас всю функцию. Наслаждаться!! Надеюсь, поможет.

public String getScreenDensityDPI() { 

    DisplayMetrics metrics = new DisplayMetrics(); 
    WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    display.getRealMetrics(metrics); 

     switch (metrics.densityDpi) { 
     case DisplayMetrics.DENSITY_LOW: 
      return "ldpi"; 

     case DisplayMetrics.DENSITY_MEDIUM: 
      return "mdpi"; 

     case DisplayMetrics.DENSITY_TV: 
      return "tvdpi"; 

     case DisplayMetrics.DENSITY_HIGH: 
      return "hdpi"; 

     case DisplayMetrics.DENSITY_XHIGH: 
      return "xhdpi"; 

     case DisplayMetrics.DENSITY_XXHIGH: 
      return "xxhdpi"; 

     case DisplayMetrics.DENSITY_XXXHIGH: 
      return "xxxhdpi"; 

     default: 
      return "" + mDisplayMetrics.densityDpi; 
     } 
    } 
+0

Спасибо ... но, как я уже сказал, я искал неформальный способ сделать это. Спасибо, хотя;) – AndreiBogdan

Смежные вопросы