Android studio mipmap или drawable

Путаница с drawable и mipmap в Android Studio из более старого примера в книге

[Отказ от ответственности :прежде всего, я знаю, что есть много сообщений о drawable и папке mipmap, я прочитал их целую кучу]

Из книги Android Programming — The Big Nerd Ranch Guide есть пример, в котором я должен вставить значок рядом с каким-то текстом на Button . Для экранов с более высоким разрешением имеет смысл включить несколько размеров значка. В своем решении они имеют все свои изображения во множестве различных Рисоваемых папок с различными размерами разрешения изображения.

Я заставил его работать, просто поместив значки в папку drawable после долгих проб и ошибок, чтобы заставить его работать в папке mipmap:

Однако у меня возникла некоторая путаница в том, как это работает:

  1. Люди часто говорят, что только значок приложения должен быть помещен в папки mipmap, это правда? Что такое значок приложения? Другие говорят, что там должны быть размещены только значки запуска, в то время как третьи говорят, что там должны быть размещены только значки. Какой именно, это взаимоисключающие варианты!
  2. Я не могу автоматически завершить работу в папке mipmap в пределах Android Studio, что заставляет меня думать, что я должен поместить все в свою рисованную папку, так как там Android Studio делает автоматическое завершение для меня. Но по умолчанию папка drawable не имеет вложенных папок. Это заставляет меня поверить, что папка drawable больше не должна использоваться для изображений с разными разрешениями, так как иначе почему бы по умолчанию не было папок, чтобы каждый мог делать орфографические ошибки..
  3. Когда не имело бы смысла иметь значки, доступные в разных разрешениях? Я не могу себе представить, чтобы кто-то не хотел получить максимально возможное разрешение..

Отсюда я получил некоторую часть своего замешательства:

Папки mipmap предназначены только для размещения значков ваших приложений.

Что это значит? Из google translate я получаю:

значок: символ или графическое изображение на экране программы, опции или окна, особенно одного из нескольких для выбора.

2 ответа

Недавно я установил еще один Android SDK на Android Studio, версию SDK 4.4 (уровень 19 API), и после использования его с моим проектом он добавил набор папок mipmap в папку res проекта ( res/mipmap ). Я не понимаю ни почему, ни как их использовать. Я прочитал еще один вопрос об этом здесь, на SO .

Итак, теперь у Android Studio есть эта папка mipmap , где вы должны иметь свои изображения с несколькими разрешениями (mdpi, hdpi, xhdpi, xxhdpi). Используя Simple-Nine-Patch-Generator , я получаю свой, скажем, photo.9.png . Я пытаюсь установить фон для просмотра, но могу ссылаться только на.

Различные варианты использования mip-карты и рисоваемой папки

Я, наконец, понял разницу между mipmap и папкой для рисования, посмотрев на официальную документацию Google по папке ресурсов (res/).

Они говорят, когда использовать mipmap:

Рисоваемые файлы для различных плотностей значков запуска. Дополнительные сведения об управлении значками запуска с папками mipmap/ см. в разделе Обзор управления проектами.

И когда положить что-то в вашу папку для рисования:

Bitmap файлов (.png, .9.png, .jpg, .gif) или XML файлов, скомпилированных в следующие подтипы ресурсов для рисования:

  • Пункт списка
  • Девять патчей (масштабируемые растровые изображения)
  • Формы списков состояний Анимация
  • чертежи
  • Другие привлекательные стороны
  • См. Раздел Привлекаемые ресурсы

Квалификаторы, добавляемые к именам папок, имеют особое значение в android

Также заметно, что для значка запуска по умолчанию есть несколько папок с разными разрешениями, но для папки для рисования их нет. Android OS ищет эти папки со специальными именами, называемыми квалификаторами. Например, для папок для рисования есть эти квалификаторы и многое другое:

Эти квалификаторы добавляются к именам папок ресурсов, таким как drawable-ldpi, drawable-hdpi и drawable-xdpi, поэтому операционная система android будет просматривать эти папки, чтобы найти наилучшее разрешение файлов в папках.

Чтобы ответить на вопросы сверху:

  1. Люди совершают ошибку, используя термин «значок», когда на самом деле они имеют в виду значок запуска. Значок запуска должен быть помещен в mip-карту и находится там по умолчанию.
  2. Ничто, кроме значка запуска, не должно быть помещено в mip-карту
  3. Android предоставляет квалификаторы конфигурации , облегчающие изменение приложения в зависимости от конкретных настроек устройства, таких как разрешение экрана и ориентация экрана. Имеет смысл включать различные версии размера, так как масштабирование и масштабирование могут быть выполнены гораздо точнее, чтобы соответствовать всем размерам экрана.

Надеюсь, это кому-нибудь поможет. Мне было трудно это найти.

https://developer.android.com/обучение/Мультискрин/screendensities#MIP -карты, как в официальный документ, MIP-карты должны использоваться для запуска-иконки. Другие чертежи могут быть добавлены в папки для рисования с определенной плотностью.

Я прочитал эту статью о mipmap , прежде чем перейти к mipmap практически, чтобы понять его концепцию по сравнению с drawable . То, с чем я столкнулся, это, При работе с mipmap layout-preview это не правильно, при использовании изображения из папки mipmap . Является ли mipmap только для launcher.

Читайте также:  Как синхронизировать время андроида

Как вы теперь знаете, android studio 1.1 создает новые ресурсы изображений в папках mipmap-xxx вместо drawable-xxx при создании ресурсов с помощью IDE. Проблема, с которой я сталкиваюсь здесь, заключается в том, что android принимает эти изображения как icons, когда я использую их в своих файлах.

Похожие вопросы:

Название говорит само за себя. До тех пор я не знал этого соглашения, используя папку mipmap для создания иконок. Наконец, используя мастер создания иконок в IDE активе изображения, Android Studio.

С тех пор как Google добавил папку mipmap для значков запуска, у меня возникли проблемы с использованием папки drawables. Я вручную добавил папки hdpi в папку drawable, но когда я пытаюсь добавить.

Как правило, при хранении ресурсов изображений для использования в проекте Android они должны быть помещены в папку res/drawable или Res/mipmap ? Прошу прощения за простой вопрос, я относительно.

Недавно я установил еще один Android SDK на Android Studio, версию SDK 4.4 (уровень 19 API), и после использования его с моим проектом он добавил набор папок mipmap в папку res проекта ( res/mipmap.

Итак, теперь у Android Studio есть эта папка mipmap , где вы должны иметь свои изображения с несколькими разрешениями (mdpi, hdpi, xhdpi, xxhdpi). Используя Simple-Nine-Patch-Generator , я получаю.

Я прочитал эту статью о mipmap , прежде чем перейти к mipmap практически, чтобы понять его концепцию по сравнению с drawable . То, с чем я столкнулся, это, При работе с mipmap layout-preview это не.

Как вы теперь знаете, android studio 1.1 создает новые ресурсы изображений в папках mipmap-xxx вместо drawable-xxx при создании ресурсов с помощью IDE. Проблема, с которой я сталкиваюсь здесь.

Я нахожусь на одном действительно большом проекте, который был начат во времена android 1.5. Этот проект развивался по мере развития android и на данный момент поддерживает 2.3 и выше. Теперь у меня.

Я новый пользователь android и использую Android Studio 1.3. Я хочу создать простой экран-заставку,для этого я создаю различные рисоваемые папки, в которых храню фоновые изображения экрана-заставки.

Я следую учебнику о том, как использовать Android Studio для создания android приложений. Этот учебник, вероятно, немного устарел, так как он показывает много разных папок ‘drawable’; однако я вижу.

Источник

Что использовать mipmap или drawable

Я новый пользователь Android и использую Android Studio 1.3. Я хочу создать простой экран-заставку, для этого я создаю разные папки с возможностью рисования, в которых я храню фоновые изображения экрана-заставки. Я копирую все ic_launcher из соответствующих папок mipmap и вставляю их в соответствующие папки с возможностью рисования. и измените путь к значку в manifest. as,

Но это дает мне ошибку,

1. Всегда ли нам нужно хранить значки приложений только в папках mipmap? Зачем?

2. Когда использовать mipmap и drawable?

Я отвечаю на разные вопросы, но не понимаю. Пожалуйста, помогите мне.

2 ответа

Команда разработчиков Android считает, что использование MIP-карт для значка программы запуска является наилучшей практикой. Преимущество, которое вы получаете, заключается в том, что вы можете хранить ресурсы в папках mipmap для всех плотностей устройств, а затем удалять другие ресурсы из доступных папок, которые не имеют отношения к плотности устройств конкретного пользователя.

Например, у пользователя есть устройство, которое классифицируется как xxhdpi. Выдвижные ресурсы в вашем apk для всех других плотностей, таких как xxxhdpi, не требуются и могут быть удалены.

Папки mipmap предназначены только для размещения значков вашего приложения / средства запуска (которые отображаются на главном экране). Любые другие используемые ресурсы с возможностью рисования, как и раньше, следует поместить в соответствующие папки с возможностью рисования.

Согласно этому сообщению в блоге Google и рекомендациям разработчиков Android:

Источник

Mipmap drawables для значков

С Android 4.3 (Jelly Bean) теперь мы можем использовать res/mipmap папки для хранения изображений «mipmap».

например, Chrome для Android сохраняет свои значки в этих папках вместо более нормальных res/drawable папки.

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

я вижу, что в моем манифесте мы используем @mipmap/ классификатор, вместо @drawable/ , который имеет смысл имя папки ресурса:

ссылки:

на Android 4.3 API документ сказал следующее:

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

Android 4.2 (уровень API 17) добавлена поддержка MIP-карт в растровом изображении class-Android меняет местами изображения mip в растровом изображении, когда вы предоставили источник mipmap и включили setHasMipMap (). Сейчас в Android 4.3, вы также можете включить mipmaps для объекта BitmapDrawable, предоставление ресурса mipmap и Установка атрибута android:mipMap в растровый файл ресурсов или путем вызова hasMipMap ().

я не вижу там ничего, что помогло бы мне понять.

Boolean. Включает или отключает подсказку mipmap. См. setHasMipMap () для подробная информация. Значение по умолчанию-false.

это не относится к значкам запуска, насколько я могу видеть.

Читайте также:  Прошивка lg g2 d802 android

вопрос был поднят в Google Groups (назначение имени ресурса «mipmap»?!), на что Ромен Гай ответил:

это полезно чтобы обеспечить изображение с большим разрешением, которое обычно вычисляется (например, на устройстве mdpi Launcher может хотите, чтобы большой значок hdpi отображал большие ярлыки приложений.)

я чувствую, что это почти имеет смысл, но не совсем.

я все-таки склонен пойти с Рэнди Sugianto по выполнению:

каковы преимущества этого? Есть ли руководство по использованию mipmaps, вероятно, для лучшей пусковой установки иконы?

конечно, Википедия имеет страницу для «Mipmap», который относится к более старой технике, изобретенной в 1983 году, что я не могу полностью относиться к текущей реализации Android.

должны ли мы хранить все наши приложения иконок в res/mipmap папки в эти дни, и каковы рекомендации для этих изображений mipmap?

обновление #1

вот сообщение в блоге, которое пытается объяснить это немного.

но изображение, используемое в этом сообщении в блоге, показывает, что выглядит как один файл со многими логотипами. Это не то, что я вижу в папке mipmap Chrome.

в Chrome mipmap-hdpi папка содержит три изображения. Один из них-логотип Chrome, на его собственный.

странно, это 72×72, а не 48×48, который я ожидал увидеть.

возможно, это все, что нужно-нам просто нужно сохранить большие значки в папках mipmap?

обновление #2

блог разработчиков Android от 23.10.2014 снова подтверждает идею использования mipmap папки для иконок приложений:

говоря о плотности экрана Nexus 6, автор пишет:

рекомендуется размещать значки приложений в папках mipmap (не drawable-folders), потому что они используются в разрешениях, отличных от плотность тока устройства. Например, значок приложения xxxhdpi может быть используется на пусковой установке для устройства xxhdpi.

обновление #3

обратите внимание, что Android Studio создает ic_launcher.png иконки в mipmap. папки, а не drawable. папки, которые Eclipse использовал для их создания.

11 ответов

существует два различных использования mipmaps:

для значков запуска при построении плотности конкретных APKs. Некоторые разработчики строят отдельные APKs для каждой плотности, чтобы сохранить размер APK вниз. Однако некоторые пусковые установки (поставляются с некоторыми устройствами или доступны в Play Store) используют большие размеры значков, чем стандартные 48dp. Пусковые установки используют getDrawableForDensity и масштабируются при необходимости, а не вверх, поэтому значки высокого качества. Например, на планшете hdpi launcher может загрузить значок xhdpi. Поместив значок запуска в каталог mipmap-xhdpi, он не будет удален так, как каталог drawable-xhdpi при создании APK для устройств hdpi. Если вы создаете один APK для всех устройств, то это не имеет значения, так как launcher может получить доступ к привлекаемым ресурсам для желаемой плотности.

фактический API mipmap от 4.3. Я не использовал это и не знаком с ним. Он не используется Android Запуски проектов с открытым исходным кодом, и я не знаю ни о какой другой пусковой установке.

Кажется, у Google есть обновили свои документы поскольку все эти ответы, надеюсь, это поможет кому-то еще в будущем 🙂 просто наткнулся на этот вопрос сам, создавая новый (новый новый) проект.

TL; DR: drawables могут быть удалены как часть оптимизации ресурсов DP-specific. MIP-карты не будут удалены.

различные приложения запуска на главном экране на разных устройствах показывают значки запуска приложений с различными разрешениями. Когда приложение методы оптимизации ресурсов удалите ресурсы для неиспользуемых плотностей экрана, значки запуска могут выглядеть нечеткими, потому что приложение запуска должно масштабировать значок с более низким разрешением для отображения. Чтобы избежать этих проблем с отображением, приложения должны использовать mipmap/ папки ресурсов для значков запуска. Система Android сохраняет эти ресурсы независимо от плотности зачистки и гарантирует, что приложения launcher могут выбирать значки с лучшим разрешением для отображения.

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

вот мои два цента в попытке объяснить разницу. Есть два случая, с которыми вы имеете дело при работе с изображениями в Android:

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

вы хотите загрузить изображение для плотности вашего устройства, но это изображение будет масштабироваться вверх или вниз. Например, это необходимо, когда вы хотите показать большую иконку запуска, или у вас есть анимация, которая увеличивает размер изображения. В таких случаях, чтобы обеспечить лучшее качество изображения, вы должны поместить свое изображение в mipmap. Что будет делать Android, он попытается забрать изображение из ведро более высокой плотности вместо масштабирования. Это повысит резкость (качество) изображения.

таким образом, эмпирическое правило, чтобы решить, куда поместить ваше изображение:

  • Launcher иконки на mipmap.
  • картинки, которые часто масштабирование (или чрезвычайно уменьшено) и чье качество имеет решающее значение для приложения, перейдите в mipmap также.
  • все другие изображения обычные drawables.

реализация Android mipmaps в 4.3-это именно тот метод с 1983 года, который объясняется в статье Википедии:)

каждое растровое изображение набора mipmap является уменьшенным дубликатом основная текстура, но при определенном сниженном уровне детализации. Хотя основная текстура будет по-прежнему использоваться, когда представление достаточно для рендеринга это в полной мере подробно, рендерер переключится на подходящее изображение mipmap (. ), когда текстура просматривается с расстояния или в небольшой размер.

хотя это описывается как метод для 3D-графики (поскольку он упоминает «просмотр с расстояния»), он применяется также и к 2D (переводится как «рисованное меньшее пространство», т. е. «масштабирование»).

Читайте также:  Редактирование контактами android с компьютера

для конкретного примера Android представьте, что у вас есть представление с определенным фоном (в частности, BitmapDrawable ). Теперь вы используете анимацию, чтобы масштабировать ее до 0,15 первоначального размера. Обычно для этого требуется масштабирование фона растровое изображение для каждого кадра. Однако это «экстремальное» уменьшение масштаба может привести к появлению визуальных артефактов.

вы можете, однако, предоставить mipmap, что означает, что изображение уже предварительно визуализировано для нескольких конкретных масштабов (скажем, 1.0, 0.5 и 0.25). Всякий раз, когда анимация «пересекает» порог 0.5, вместо того, чтобы продолжать масштабировать исходное изображение размером 1.0, она переключится на изображение 0.5 и уменьшит его, что должно обеспечить лучший результат. И так далее как анимация продолжает.

это немного теоретически, так как это на самом деле сделано рендерером. Согласно источнику класса Bitmap, это просто подсказка, и визуализатор может или не может ее соблюдать.

Я не совсем уверен, почему это было бы особенно подходит для значков приложений, хотя. Хотя Android на планшетах, а также некоторые пусковые установки (например, гель), запрашивают значок «на одну плотность выше», чтобы показать его больше, это должно быть сделано с помощью обычного механизма (т. е. drawable-xxxhdpi , &c).

одна вещь, которую я упомянул в другом потоке, на которую стоит указать-если вы создаете разные версии своего приложения для разных плотностей, вы должны знать о каталоге ресурсов «mipmap». Это точно так же, как» привлекаемые » ресурсы, за исключением того, что он не участвует в зачистке плотности при создании различных целей apk.

поскольку я искал уточняющий ответ на это, чтобы определить правильный тип значков уведомлений, я хотел бы добавить это четкое утверждение в тему. Это от http://developer.android.com/tools/help/image-asset-studio.html#saving

Примечание: файлы значков запуска находятся в другом месте другая икона. Они находятся в папке mipmap/. все остальные иконки файлы находятся в папке drawable/ вашего проект.

есть два случая, с которыми вы имеете дело при работе с изображениями в Android:

  1. вы хотите загрузить изображение для вашего плотность устройства и вы собираетесь использовать его «как есть», без изменения его фактического размера. В этом случае вы следует работать с drawables и Android даст вам лучшую подгонку изображение.
  2. вы хотите загрузить изображение для плотности устройства, но это изображение будет масштабироваться вверх или вниз. Например, это необходимо, когда вы хотите показать большую иконку запуска, или у вас есть анимация, которая увеличивает размер изображения. В таких случаях, обеспечить самое лучшее качество изображения, вы должны поместить свое изображение в папку mipmap. Что будет делать Android, вместо этого он попытается забрать изображение из ведра с более высокой плотностью масштабирования.

так

таким образом, эмпирическое правило, чтобы решить, куда поместить ваше изображение быть:

значки запуска всегда идут в папку mipmap.

изображения, которые часто масштабируются (или чрезвычайно масштабируются) и качество которых имеет решающее значение для приложения, перейдите в папку mipmap как что ж.

все остальные изображения являются обычными drawables.

цитата из этой статьи.

Если вы создадите APK для целевого разрешения экрана, такого как HDPI, инструмент упаковки активов Android,AAPT,может удалить чертежи для другого разрешения, которое вам не нужно.Но если он находится в папке mipmap,то эти активы останутся в APK, независимо от целевого разрешения.

при создании отдельных apks для различных плотностей, drawable папки для других плотностей получить разделены. Это заставит значки казаться размытыми в устройствах, которые используют значки запуска более высокой плотности. Поскольку папки mipmap не удаляются, всегда лучше использовать их для включения значков запуска.

понимание, которое у меня есть о mipmap, более или менее похоже на это:

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

Если у вас есть изображение, которое подходит для сотового телефона низкого класса, при масштабировании его до размера планшета 10 вам нужно» изобрести «пиксели, которые на самом деле не существуют. Это делается с помощью некоторого алгоритма интерполяции. Чем больше пикселей нужно придумать, тем чем дольше длится процесс, тем хуже качество. Лучшее качество получается с более сложными алгоритмами, которые занимают больше времени (например, среднее окружение пикселов против копирования ближайшего пикселя).

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

Я читал об этом в статье, объясняющей проблему производительности в libgdx при масштабировании изображений:

Источник

Оцените статью