Подтвердить что ты не робот

Используйте только графические элементы XHDPI в приложении Android?

Если вы планируете поддерживать LDPI, MDPI, HPDI и, возможно, XHDPI в ближайшем будущем, нормально ли включать только чертежи XHDPI в проект и позволить устройствам масштабировать их до требуемого разрешения?

Я тестировал изменение размеров чертежей в MDPI и HDPI в Photoshop, а затем сравнивал результат с размерами XHDPI, только измененными на Android, и я не вижу никакой разницы. Это плохой дизайн, чтобы воспользоваться этим ярлыком? Было бы неплохо не изменять размер каждого из них в 3 разных разрешения.

Планирование использования целевого SDK - 2.1 или 2.2.

BR Эмиль

4b9b3361

Ответ 1

Я думаю, что это хороший способ. Единственный недостаток, о котором я могу думать, - это накладные расходы на мелкие устройства и возможные артефакты из-за уменьшения масштаба. Фактически в этом году Google IO Крис Прюет рекомендовал внедрять только активы с высоким разрешением и позволить opengl обрабатывать масштабирование.

Ответ 2

Начиная с Android 1.6, обрабатываются разные плотности, включая XHDPI (который официально не был добавлен до 2.2). Вначале ваше приложение будет искать изображение, соответствующее его плотности, но оно может смотреть на большие "ведра", такие как XHDPI, а затем выполнять масштабирование для вас.

Лучше всего включать конкретные активы для плотности, которую вы хотите поддержать. Изображение, которое 100x100 занимает 40kb; и изображение, которое 200x200 занимает 160k (несжатое). Таким образом, любые активы XHDPI, используемые на устройствах MDPI, имеют в четыре раза больше требуемых данных, которые необходимо обрабатывать при запуске приложения и ваших ресурсах. Использование более низкой памяти означает большую эффективность и меньшую вероятность исключения OutOfMemoryException.

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

Если вы беспокоитесь о времени, которое требуется для изменения размера, вы можете включить пакетный процесс или использовать такие инструменты, как Nine Patch Resizer: http://code.google.com/p/9patch-resizer/

Ответ 3

Я тестировал в простом приложении (для Android 2.1), используя только изображения xhdpi, и он отлично работает в малых, средних и высоких разрешениях... даже я тестировал в Android 2.1 (небольшое разрешение), и он открывает изображение без проблема.

Может быть, вещь с памятью верна, поэтому ее необходимо кому-то проверить.

Ответ 4

Я лично обнаружил, что использование только папки xhdpi неплохо работает во многих приложениях и я очень поддерживаю этот подход. В служебных данных памяти верно, но с сегодняшними устройствами я бы счел это незначительным. Кроме того, я думаю, что есть некоторое кэширование, связанное с уменьшением масштаба, поскольку я никогда не замечал замедления из-за этого. Включение только одной папки может значительно снизить размер APK, который конечные пользователи оценят. Вы должны иметь в виду, что некоторые изображения получат масштабирование артефактов (тонкие шаблоны и прочее), но я лично никогда не сталкивался с чем-либо критическим в своих приложениях. Также для кнопок и прочее обязательно используйте 9 патчей для уменьшения артефактов на закругленных углах, вы можете даже немного уменьшить размер изображения, используя этот подход. Уровень API не будет проблемой для более старых версий, поскольку я считаю, что drawable-xhdpi считается просто доступным для версий, которые его не поддерживают. Не игнорируйте возможности определения некоторых простых рисунков в xml, например, очень просто создать фон градиента только с фигурами, и с этим вы сэкономите пространство и не рискуете масштабировать артефакты.

Ответ 5

XHDPI был представлен только в Android SDK API Level 9 (Gingerbread) (см. http://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_XHIGH), поэтому, если вы планируете иметь минимальный SDK уровень менее 9, вам также необходимо будет предоставить, по крайней мере, HDPI-чертежи, а также устройства с Froyo или ниже ничего не будут отображаться.

Обновление: на самом деле кажется, что версии до Gingerbread будут отображать изображения xhdpi: https://groups.google.com/d/msg/android-developers/yjYO91OmoJ4/v3he0ZbKo-UJ

Ответ 6

Это нормально, чтобы иметь только ресурсы xhdpi. Но учтите, что xhdpi был введен с уровнем api 9 (пряники). То есть, если вы нацеливаете уровни api <= 8, вам понадобятся как минимум ресурсы hdpi.

Ответ 7

Это утверждение об использовании дополнительной памяти неверно.

Если вы поместите XHDPI размерные чертежи внутри папки MDPI, тогда у вас будут проблемы с памятью.

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

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

С другой стороны, только некоторые изображения будут выглядеть плохо, если downsampled (в основном маленькие значки), пока изображение имеет достаточно данных, которые будут выброшены, это будет выглядеть нормально. Или imagne, если у вас есть сетка в качестве drawable, поэтому потенциальная возможность некоторых линий сетки может быть выброшена, и изображение будет выглядеть плохо.

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