Android, вопрос про mipmap

462
30 января 2017, 17:12

Добрый день, возник вопрос: стоит ли каждые изображения закидывать в mipmap?

Допустим есть логотип, я его сделал из 5 форматов разных размеров и раскидал по папкам? Нужно ли это делать?

Answer 1

стоит ли каждые изображения закидывать в mipmap

Каждые – не стоит, но, например, иконку приложения следует размещать именно там.

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

Разница между drawable и mipmap

Разница между drawable и mipmap заключается в том, что изображения, находящиеся в каталоге drawable для некоторых DPI могут быть исключены из приложения на этапе его сборки, а изображения из mipmap – не могут.

Зачем нужен mipmap?

Для корректного отображения изображений на дисплеях с различными DPI в Android были введены квалификаторы (например, mdpi, hdpi). Чтобы изображения корректно выглядели на всех устройствах, необходимо разместить эти изображения со всеми доступными квалификаторами (в соответствующих разрешениях).

Размещение изображений в различных разрешениях влечет за собой увеличение размера приложения.

Допустим, Вы знаете, что у Боба такое-то значение DPI, а у Алисы – некоторое другое. Чтобы уменьшить размер приложения, Вы можете отдельно собрать приложение для Боба и отдельно для Алисы, включая изображения только в необходимом разрешении. При сборке проекта Вы можете исключить ненужные изображения (с помощью соответствующей конфигурации Gradle), например:

exclude "ldpi", "xxhdpi", "xxxhdpi"

Вроде бы все хорошо: исключены ненужные изображения и размер приложения уменьшен. Однако не все так гладко. Некоторые изображения могут быть отображены в разрешениях, которые не соответствуют тому, в котором Вы оставили эти изображения в проекте. Пример – иконка приложения, в некоторых лаунчерах она может быть увеличена. Так как иконка приложения у Вас в единственном разрешении (как и все другие изображения), то она будет увеличена и произойдет т.н. пикселизация – изображение будут размыто (при большом апскейле будут заметны квадратики).

Вот тут-то и приходит на помощь mipmap – изображения, размещенные там, не будут исключены. То есть если Вы укажите в Gradle:

exclude "ldpi", "xxhdpi", "xxxhdpi"

то соответствующие изображения из drawable будут исключены, а из mipmap – нет.

Answer 2

Конечно нужно. Каталоги mipmap предназначены для иконок приложения, все остальные изображения должны быть помещены drawable.

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

Подробнее здесь: https://android-developers.googleblog.com/2014/10/getting-your-apps-ready-for-nexus-6-and.html

Вообще о том, как устроены ресурсы, и как Андроид находит наиболее подходящий, есть здесь (доступно на русском): https://developer.android.com/guide/topics/resources/providing-resources.html#BestMatch

READ ALSO
Логика работы метода push в хеш таблице

Логика работы метода push в хеш таблице

Здравствуйте, я нашел вариант реализации хэш-таблицы, но мне непонятна логика работы метода push:

316
Ошибка при загрузке с сервера файла.Socket. Android. Java. :Connection reset by peer: socket write error.

Ошибка при загрузке с сервера файла.Socket. Android. Java. :Connection reset by peer: socket write error.

Реализую передачу между устройствами при помощи socket'овПередача проходит между Windows ПК и Android девайсом

487
Когда можно использовать imageView.setImageBitmap(bitmap). Чем еще кроме канвас динамично менять изображение в ImageView

Когда можно использовать imageView.setImageBitmap(bitmap). Чем еще кроме канвас динамично менять изображение в ImageView

вот есть у меня imageview , если в методе onCreate я присваиваю imageViewsetImageBitmap(bitmap), то всё нормально отображается

498
Как в eclipse в java-проект добавить файл .class?

Как в eclipse в java-проект добавить файл .class?

Всем привет! Помогите разобраться! Как в eclipse в java-проект добавить файлclass? Если делаю через 'Add Class Folder

270