MIPMAP вводимого коэффициента для икон

? Richard Le Mesurier @ | Original: StackOverFlow
---

С Android 4.3 теперь мы можем воспользоваться res/mipmap папок для хранения " MIPMAP " изображения .

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

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

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

<activity
    android:name=".MipmapDemp"
    android:icon="@mipmap/ic_launcher" />
References:

Https://developer.android.com/about/versions/android-4.3.html документ имеет следующие сказать :

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

Android (уровень API 17 ) 4.2 добавлена ​​поддержка мипмапов в Bitmap   класса Android свопы мип изображения в ваших Bitmap, когда вы поставляется   Источник мипмап и позволили setHasMipMap (). Сейчас в Android 4.3,   Вы можете включить мип Для того, BitmapDrawable объекта, а также путем   обеспечивая MIPMAP актив и установка андроида : MIPMAP атрибутов в   растровый файл ресурса или по телефону hasMipMap ().

Я ничего не вижу в там, что помогает мне понять?

http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap есть android:mipMap свойством:

Boolean . Включает или отключает подсказку MIPMAP . См setHasMipMap () для   больше информации . Значение по умолчанию является ложным.

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

Вопрос был поднят на группы Google ( https://groups.google.com/forum/#!topic/android-developers/ZUyF0JEwibs ), к которой ответил Роман Guy:

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

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

Я до сих пор склонны идти с последующей Рэнди Sugianto в составе:

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

Конечно, http://en.wikipedia.org/wiki/Mipmap, который относится к старой техники, созданной в 1983 году, что я не могу вполне относятся к текущей Android реализации.

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

Update #1

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

http://programmium.wordpress.com/2014/03/20/mipmapping-for-drawables-in-android-4-3/

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

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

MIPMAP вводимого коэффициента для икон

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

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

Update #2

Android Блог разработчиков пост 23/10/2014 еще раз подтверждает идею использования mipmap папки для иконок приложений :

http://android-developers.blogspot.com/2014/10/getting-your-apps-ready-for-nexus-6-and.html

Когда речь идет о плотности Nexus 6 экрана ,автор пишет:

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

---

Top 5 ответ

1Kevin TeslaCoil @

Есть два варианта использования мипмапов .

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

2 )фактическая мипмап API от 4,3 . Я не использовал это, и я с ним не знаком . Это не используется пусковых проекта Android Open Source, и я не знаю ни одного другого пусковой использованием .

2Juan @

Понимание у меня есть около MIPMAP более или менее так:

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

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

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

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

http://www.badlogicgames.com/wordpress/?p=1403

3matiash @

Android осуществление мипмапов в 4,3 точнотехника из 1983 объясняется в статье Википедии :)

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

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

Для конкретного Android Например, представьте, у вас есть вид неким фоном чтобы сместить (в частности,BitmapDrawable ) . Теперь Вы можете использовать анимацию масштабировать его до 0,15 от своего первоначального размера . Как правило, это потребует уменьшения масштаба в качестве фонового изображения для каждого кадра . Это " экстремальный " разукрупнение, однако, может привести к визуальные артефакты.

Можно, однако, обеспечивают MIPMAP, что означает, чтоизображение уже предварительно оказанные в течение нескольких конкретных масштабах (скажем, 1,0, 0,5 и 0,25 ) . Всякий раз, когдаанимация " Крестах" в 0,5 порог, вместо того, чтобы уменьшить размер оригинальный, 1,0 размера изображения, оно переключится на 0,5 изображения и уменьшить размер его, который должен обеспечить лучший результат. И так далее, каканимация продолжается.

Этонемного теоретическим, так как это на самом деле сделали рендерером . По словам источника класса Bitmap, это простонамек, ивизуализации может или не может выполнить.

/**
 * Set a hint for the renderer responsible for drawing this bitmap
 * indicating that it should attempt to use mipmaps when this bitmap
 * is drawn scaled down.
 *
 * If you know that you are going to draw this bitmap at less than
 * 50% of its original size, you may be able to obtain a higher
 * quality by turning this property on.
 * 
 * Note that if the renderer respects this hint it might have to
 * allocate extra memory to hold the mipmap levels for this bitmap.
 *
 * This property is only a suggestion that can be ignored by the
 * renderer. It is not guaranteed to have any effect.
 *
 * @param hasMipMap indicates whether the renderer should attempt
 *                  to use mipmaps
 *
 * @see #hasMipMap()
 */
public final void setHasMipMap(boolean hasMipMap) {
    nativeSetHasMipMap(mNativeBitmap, hasMipMap);
}

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

4kreker @

Одна вещь, я уже упоминал в другом потоке, который стоит отметить, - если вы строите различные версии вашего приложения для различных плотностей, вы должны знать о " MIPMAP " каталог ресурсов. Это так же, как " рисуемых " ресурсов, за исключением того, не принимает участия в плотности зачистки при создании различных целей АПК .

https://plus.google.com/105051985738280261832/posts/QTA9McYan1L