Как узнать, какой ресурс для рисования используется? - PullRequest
11 голосов
/ 13 февраля 2012

Я хочу знать, какой ресурс для рисования используется при запуске приложения из ldpi, mdpi, hdpi или xhdpi.

Ответы [ 6 ]

7 голосов
/ 13 февраля 2012

Вы должны иметь возможность получить свойства дисплея вашего устройства, как описано здесь , и впоследствии определить, какие ресурсы используются во время выполнения, сравнивая результат со следующим списком:

  • ldpi: экраны низкой плотности; примерно 120 точек на дюйм.
  • mdpi: среднеплотные (на традиционных HVGA) экранах; примерно 160 точек на дюйм.
  • hdpi: экраны высокой плотности; примерно 240 точек на дюйм. * * 1010
  • xhdpi: экраны повышенной плотности; примерно 320 точек на дюйм. Добавлено в API Level 8
  • nodpi: это можно использовать для растровых ресурсов, которые вы не хотите масштабировать в соответствии с плотностью устройства.
  • tvdpi: экраны где-то между mdpi и hdpi; примерно 213 точек на дюйм. Это не считается "первичной" группой плотности. Он в основном предназначен для телевизоров, и большинству приложений он не нужен - для большинства приложений достаточно ресурсов mdpi и hdpi, и система будет масштабировать их соответствующим образом. Этот классификатор был представлен с уровнем API 13 *. 1016 *

Из этой информации вы можете вывести следующее, что также может иметь отношение к вашему вопросу:

Между четырьмя основными плотностями существует коэффициент масштабирования 3: 4: 6: 8. (игнорируя плотность ТВДПИ). Итак, растровое изображение 9x9 в ldpi 12x12 в MDPI, 18x18 в hdpi и 24x24 в xhdpi.

5 голосов
/ 09 декабря 2013

Вы должны сначала получить плотность вашего устройства.

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

switch(density)
{
case DisplayMetrics.DENSITY_LOW:
   Toast.makeText(context, "LDPI", Toast.LENGTH_SHORT).show();
    break;
case DisplayMetrics.DENSITY_MEDIUM:
     Toast.makeText(context, "MDPI", Toast.LENGTH_SHORT).show();
    break;
case DisplayMetrics.DENSITY_HIGH:
    Toast.makeText(context, "HDPI", Toast.LENGTH_SHORT).show();
    break;
case DisplayMetrics.DENSITY_XHIGH:
     Toast.makeText(context, "XHDPI", Toast.LENGTH_SHORT).show();
    break;
}
4 голосов
/ 13 февраля 2012

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

getResources().getDisplayMetrics().densityDpi

Это будет либо DENSITY_LOW, DENSITY_MEDIUM или DENSITY_HIGH.

1 голос
/ 13 февраля 2012

Открыть XML-файл из папки макета. Внизу вы найдете вкладку графического макета. Там вы сможете увидеть графическое представление вашего XML-файла. В левом верхнем углу выберите другое-разное разрешение, для которого вы хотите проверить прорисовку. Это обновит представление соответственно.

1 голос
/ 13 февраля 2012

Это не точный ответ, но вы взглянули на: http://developer.android.com/guide/practices/screens_support.html

ldpi: ресурсы для экранов с низкой плотностью (ldpi) (~ 120 dpi)
mdpi: ресурсы для экранов средней плотности (mdpi) (~ 160 dpi)
hdpi: ресурсы для экранов высокой плотности (hdpi) (~ 240 dpi)
xhdpi: ресурсы для экранов сверхвысокой плотности (xhdpi) (~ 320 точек на дюйм)

Это общие рекомендации, и они не будут идеальными, но это довольно хорошее начало.

0 голосов
/ 15 мая 2013

Вот пример кода, чтобы найти это. Просто поместите несколько разных рисунков в разные папки и проверьте, какое изображение будет автоматически получено устройством.

http://droidschools.com/archives/63

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...