2014-01-04 2 views
3

Я стараюсь, чтобы мое приложение поддерживало множественную плотность. Как мы знаем, хотим ли мы получить значение плотности, мы используем синтаксис как «getResources(). GetDisplayMetrics(). Плотность;».Как получить изображение из drawable-xhdpi

Мой вопрос - как получить изображение из какой-либо папки. скажем у меня есть переменная:

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

когда myDensity вернуться 1.0, я хочу сделать снимок с растяжимой-MDPI, когда он вернется 0.75 я хочу, чтобы сделать снимок из растяжимой-ldpi, и такие же с изображением в папке drawable- xhdpi и папка drawable-xxhdpi. Я пытаюсь сделать это так: treepict.setImageResource(R.drawable-hdpi.tree);, но я получаю только ошибку.

Кто-нибудь может мне помочь, как это сделать?

ответ

2

вы не можете установить R.drawable-hdpi.tree. только R.drawable.tree создается для каждого изображения с возможностью рисования. если вы используете R.drawable.tree, тогда система будет выбирать автоматически в зависимости от плотности экрана.

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

1

Система должна сделать это автоматически для вас.

Итак, скажем, у вас есть изображение, image.png, специально для каждой плотности. Ваш код не должен знать фактическую плотность для работы. Он должен просто сосредоточиться на назначении концептуального изображения на изображение.

Таким образом, в папке Реза проекта:

<YourProjectHome>/res/ Есть папки:

drawable-ldpi 
drawable-mdpi 
drawable-hdpi 
drawable-xhdpi 
drawable-xxhdpi 
drawable-xxxhdpi 

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

Тогда в вашем коде вы бы просто сделать

treepic.setImageResource(R.drawable.image);

Есть некоторые случаи, когда да вы хотели бы указать изображение, чтобы быть определенной плотности. Существует довольно новый вызов, getDrawableForDensity(). Этот будет искать конкретную версию вытягиваемого для данной плотности. Однако для общего случая это излишний. Это действительно необходимо, если вы должны быть понижающими. То есть У вас нет версии hdpi, но, как и у вас, есть версия xxxhdpi и вы хотите ее масштабировать, чтобы выглядеть полу-ок.

0

Все о плотности пикселей на вашем экране управляется Android. вам не нужно устанавливать или находить изображения.андроид будет выбрать изображение правильного изображение для вас

вы можете использовать R.drawable.tree выбрать изображение автоматически для вас

  1. /вытяжка-ldpi Для экранов с низкой плотностью
  2. /вытяжкой-MDPI Для экранов средней плотности
  3. /вытяжка-ИПЧР Для экранов с высоким разрешением
  4. /вытяжкой-xhdpi Для дополнительных экранов с высоким разрешением

поэтому просто поместите все изображения с различной плотностью в соответствующую папку с тем же именем. и называть их R.drawable.tree Android будет выбрать правильный зависит от плотности экрана для вас

/вытяжка должна быть зарезервирована для активов, которые вы не либо помощи, какое устройство или XML Drawable активов

если вы нужно больше информации о экране поддержки резолюции Готы this link

1

вы можете использовать уникальные имена для одинаковых картинок в папках: R.drawable-hdpi.tree_hdpi R.drawable-mdpi.tree_mdpi и т.д.

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