Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Как выбираются ресурсы из папок xhdpi, hdpi, mdpi и подобных для конкретного устройства?

В моём приложении есть фон и картинка на нём. По умолчанию у меня в AS есть только папка drawable. Создал xxhdpi, xhdpi, hdpi, mdpi в директории res, раскидал по ним уменьшенные копии картинки и фона. Я так понял, приложение само должно брать картинку из определённой директории в зависимости от разрешения экрана. Но я не понимаю даже, как и к какой картинке обращаться в коде. Помогите, пожалуйста, разобраться.


Ответ

Для начала вам необходимо ознакомиться с официальным руководством по поддержке устройств с разными размерами экранов. Там предельно подробно объясняется ВСЕ по этой теме.
Для того, чтобы система использовала определенное изображение для какой-то плотности экрана есть два способа:
Ручной. Вам необходимо создать в директории /res проекта папки /drawable с квалификаторами нужной плотности, например для разрешения HDPI, указать соответственно квалификатор -hdpi: /res/drawable-hdpi (полный список возможных квалификаторов указан в таблице). В эту папку поместить изображение для указанной плотности с ТАКИМ ЖЕ ИМЕНЕМ файла, структура папок примет следующий вид:
res/drawable/ image1.png res/drawable-hdpi/ image1.png res/drawable-xhdpi/ image1.png
При запуске программы на конкретном устройстве, система определит, какая плотность пикселей у этого устройства и будет использовать изображение из папки с соответствующим квалификатором. При отсутствии подходящего квалификатора будет выбран ресурс с наиболее близко подходящим значением плотности или из папки /res/drawable/, если ничего более лучшего не найдется (никакие квалификаторы плотности не указаны). При сборке проекта IDE сгенерирует файл ресурсов R, в котором будут указаны ссылки на все ресурсы проекта. Обращаться к вашему изображению из кода следует следующим образом:
R.drawable.image1
Система сама подберет наиболее подходящий вариант для текущего устройства.
Автоматический. В IDE Android Studio имеется инструмент для автоматической подготовки изображений под разные плотности экрана.
Кликаете на папке res/ проекта и следуете: New -> Image Asset. Откроется инструмент Asset Studio, в котором вам необходимо:
выбрать тип подготавливаемого изображения (иконка для приложения, экшенбара или нотификации). указать файл изображения, из которого следует подготовить набор под нужные плотности (чекбокс Image), либо выбрать из дефолтных изображений (чекбокс Clipart) Указать имя, которое получит ресурс в проекте. Так же вы можете задать паддинги, обрезку и форму подложки (квадрат, круг и тд.)

Нажав кнопку Next мастера, вы перейдете на следующий экран, где необходимо выбрать, какие создавать папки для отдельных плотностей - выделяйте нужные вам папки с помощью левого клика с зажатой кнопкой Ctrl (Shift). Нажав кнопку Finish мастера будут автоматически подготовлены изображения для указанных плотностей, создана необходимая структура папок и в них размещены соответствующие изображения.
Недостаток этого инструмента в том, что нельзя так обработать произвольное изображение. Работает только для указанных типов иконок и создает файлы только соответствующего этим иконкам размера, например для иконки приложения под плотность HDPI будет создано изображение, размером 72х72 пикселей.
Так же смотрите эти ответы по смежным вопросам: ответ1 и ответ2

Комментариев нет:

Отправить комментарий