Настройка доступной папки для разных разрешений

У меня есть 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" />

Ответ 1

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

Вы не можете.

Квалификаторы hdpi,xhdpi,xxhdpi описывают плотность экрана устройства, а не размер экрана. Из официального документа

Плотность экрана

Количество пикселей в физической области экрана; как правило называемый 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

Ответ 2

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, он будет извлекать ресурсы из hdpi, как это, если вы протестируете то же самое в samsung tab 2, это займет то же самое, что и для mdpi, потому что его устройство mdpi

Ответ 3

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

Ссылка ссылки: Конфигураторы конфигурации

Спасибо.