Intereting Posts
Функциональность интерфейса Javascript Proguard во время таргетинга SDK в Android Manifest выше 17 Текстовая левая сторона RadioButton с запасом на Android Программно подключаться к Bluetooth-гарнитуре из приложения Android Расширенная библиотека RecyclerView – примеры кода Android Honeycomb: как стилизовать правый угол стрелки в прядильщике на ActionBar Как рекомендуется использовать метод удаления contentResolver для безопасной инъекции? ClassCastException: CustomFragment не может быть добавлен в android.app.Fragment / Использование android.support.v4.app.Fragment Как использовать Active Android с базой данных в памяти для модульных тестов с использованием Robolectric? Исключение при использовании библиотеки ksoap2 для android Как создать файл .apk из командной строки Windows? Разбирайте имя файла из URL перед загрузкой файла SVG в Android-браузере Преимущества публикации приложения в Android Market Как использовать onAppWidgetOptionsChanged () в виджетах? Android – Сделать панель поиска целиком доступной

Как проверить устройство Android – это экран HDPI или экран MDPI?

Я хочу проверить это, чтобы получить различные изображения через Интернет. Как это сделать?

Solutions Collecting From Web of "Как проверить устройство Android – это экран HDPI или экран MDPI?"

density = getResources().getDisplayMetrics().density; // return 0.75 if it's LDPI // return 1.0 if it's MDPI // return 1.5 if it's HDPI // return 2.0 if it's XHDPI // return 3.0 if it's XXHDPI // return 4.0 if it's XXXHDPI 

Вы можете проверить плотность экрана с помощью:

 switch (getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: // ... break; case DisplayMetrics.DENSITY_MEDIUM: // ... break; case DisplayMetrics.DENSITY_HIGH: // ... break; case DisplayMetrics.DENSITY_XHIGH: // ... break; } 

EDIT Имейте в виду, что по мере развития Android другие значения должны быть включены в случаи switch . Начиная с этого редактирования, это включает DisplayMetrics.DENSITY_TV и DisplayMetrics.DENSITY_XXHIGH . Проконсультируйтесь с документами для получения последней информации; Я не собираюсь продолжать этот ответ.

На некоторых устройствах (моя Galaxy Tab3) плотность и плотность Dpi возвращают странные значения, такие как 1.33 (плотность), 213 (плотность Dpi). Поэтому я хочу добавить этот флаг:

<Item type = "bool" name = "is_mdpi"> [bool] </ item>
<Item type = "bool" name = "is_hdpi"> [bool] </ item>
<Item type = "bool" name = "is_xhdpi"> [bool] </ item>
<Item type = "bool" name = "is_xxhdpi"> [bool] </ item>

К 4 файлам values.xml, поместите их под соответствующие res / values- [xxx] / folders.

Из приведенных выше ответов я объединил их и создал следующую функцию:

  public static String getDeviceDensity(Context context){ String deviceDensity = ""; switch (context.getResources().getDisplayMetrics().densityDpi) { case DisplayMetrics.DENSITY_LOW: deviceDensity = 0.75 + " ldpi"; break; case DisplayMetrics.DENSITY_MEDIUM: deviceDensity = 1.0 + " mdpi"; break; case DisplayMetrics.DENSITY_HIGH: deviceDensity = 1.5 + " hdpi"; break; case DisplayMetrics.DENSITY_XHIGH: deviceDensity = 2.0 + " xhdpi"; break; case DisplayMetrics.DENSITY_XXHIGH: deviceDensity = 3.0 + " xxhdpi"; break; case DisplayMetrics.DENSITY_XXXHIGH: deviceDensity = 4.0 + " xxxhdpi"; break; default: deviceDensity = "Not found"; } return deviceDensity; } 

Теперь, на каком устройстве вы хотите получить информацию о плотности и какую папку она будет использоваться, просто добавьте вышеуказанный метод в эту активность и добавьте следующую строку в onCreate

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); Log.d("Screen Density: ", Helper.getDeviceDensity(this)); }