23

У меня есть 4 разных размера для каждой из значков, которые мне нужно использовать в моем приложении. Проблема заключается в том, что My Nexus 7 (1280 x 800) и галактика s2 (800 x 480), по-видимому, используют ресурсы в drawable-hdpi. Как заставить Nexus использовать ресурсы в drawable-xhdpi, а затем вкладку 10 дюймов для использования drawable-xxhdpi.Настройка выделенной папки для разных разрешений

У меня есть это в моем файле манифеста

<supports-screens android:resizeable="true" 
       android:smallScreens="true" 
       android:normalScreens="true" 
       android:largeScreens="true" 
       android:xlargeScreens="true" 
       android:anyDensity="true" /> 
+2

, как другие указывают на то, что проблема заключается не в том, чтобы заставить Android для запуска, как вы хотите, но чтобы для вас, чтобы понять, как ресурс выбор работает в android и правильно его использует. Я настоятельно рекомендую вам прочитать официальный документ. – Teovald

+0

Мое приложение не использовало правильную плотность (он использовал mdpi, где hdpi был доступен). Ваш фрагмент кода помог мне исправить мою проблему и помочь другим, поэтому я поддержал ваш вопрос во имя сохранения. – 1owk3y

+0

Я думаю, что авторы должны обновить свои ответы на новейшие устройства и новую авизу Android. –

ответ

99

Как заставить Nexus использовать ресурсы в вытяжке-xhdpi, а затем язычок 10 дюймов использовать Drawable-xxhdpi?

Вы не можете.

Квалификаторы hdpi,xhdpi,xxhdpi описывают плотность экрана устройства, а не размер экрана. От плотности экрана official doc

Количество пикселей в пределах физической области экрана; обычно именуемые как dpi (точки на дюйм). Например, экран с низкой плотностью имеет меньшее количество пикселей в заданной физической области по сравнению с экраном «нормальный» или «высокий» плотности . Для простоты Android группирует все фактические плотности экрана в четырех обобщенных плотностях: низкий, средний, высокий и очень высокий.

Если вы хотите также поддержать таблеток, используйте квалификаторы large, xlarge. Nexus 7 представляет собой планшет large-hdpi (технически это tvdpi, но он принимает изображения от hdpi). Поэтому, если вы хотите поместить изображения для Nexus 7, создайте папку с именем drawable-large-hdpi и поместите туда изображения.

Примечание: Это частный случай для Nexus 7. Так, даже если Nexus 7 является 7-дюймовый планшет, он имеет разрешение 1280 * 800. Так что это устройство hdpi. Но нормальные 7-дюймовые устройства имеют более низкое разрешение 1024 * 600. Так что это mdpi устройства. Таким образом, выбиваемый классификатор может измениться. (По собственному опыту сначала положите папку drawable-large-mdpi на 7-дюймовые устройства и проверьте ее на Nexus 7. Если проблем с изображениями нет, вам не нужно класть другую папку.Потому что, если конкретная папка нет, Android будет проверять на ближайшую возможную папку и оптимизировать его для экрана устройства)

Теперь по поводу 10-дюймовых таблеток случае, они xlarge устройства и их плотность может меняться от mdpi к xhdpi (Nexus 10). Но у многих есть разрешение 1280 * 800, и это mdpi устройства.

Чем лучше практика, чтобы поместить следующие вводимого коэффициента

// for Phones 
drawable-ldpi 
drawable-mdpi 
drawable-hdpi 

//for 7 inch tablets 
drawable-large-mdpi 
drawable-large-hdpi(for Nexus 7) 

// for 10 inch tablets 
drawable-xlarge-mdpi 
+0

Очень хорошее объяснение, AndroidVogue получил правильный ответ сначала, но я думаю, что может помочь лучше объяснить мне и всем другим, схожие проблемы. Большое усилие – Amanni

+0

1 голосование за ваше объяснение. –

+0

+1 для сохранения моего дня, объяснил лучше, чем сайт разработчика Google. Великолепно! –

1
The problem is My Nexus 7 (1280 x 800) and galaxy s2 (800 x 480) seem to use the resources in drawable-hdpi 

, что зависит от устройства, как nexus 7 имеет 240dpi, который является hdpi устройством будет принимать Drawable ресурсов ИПЧРА как это, если вы испытываете то же самое в samsungtab 2 он будет тем же, что и у mdpi, поскольку его устройство mdpi

+0

в основном я хочу 480x320 для mdpi, 800x480 для hdpi и 1280x800 для xhdpi – Amanni

+0

Нет, они берут из hdpi not mdpi – Amanni

+0

Я отредактировал свой ответ, пожалуйста, проверьте его. –

1

Попробуйте использовать Configuration qualifiers для вашего Ресурсы. Это лучшая практика. Мне нравится res/drawable-normal-hdpi-port/icon.png.

Ссылка Ссылка: Configuration qualifiers

Спасибо.

+0

, так что я могу иметь mdpi, hdpi и xhdpi для нормального, а затем еще 3 для больших и x-больших? – Amanni

+0

@ Amanni Не нужно. Создавайте папку в соответствии с вашими потребностями. Я имею в виду, какие устройства вы нацеливаете. для Nexus 7 вы можете создать папку 'res/drawable-large-hdpi'. Он будет использовать изображения из этой папки. Итак, теперь у вас есть две папки 'Hdpi' Drawable' - одна для' 480x800 -> drawable-hdpi' и недавно созданная для планшета 'Nexus 7 -> drawable-large-hdpi'. – 2013-04-18 10:26:14

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