2012-03-30 5 views
22

У меня есть те же 9-патч-изображения в MDPI/HDPI/xhdpi. Есть ли особая причина, почему она не будет сохранена для наименьшего размера? Растяжимые области автоматически масштабируются, когда содержимое больше, например, фон как 9-патч.Различные 9-патч-изображения для разных плотностей?

Пример фона:

MDPI: mdpi

ИПЧР: hdpi

xhdpi: xhdpi

ответ

28

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

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

Другим примером может служить линия. Если у вас есть линия, которая имеет особый эффект, и вы создаете ее как девятый патч для экранов mdpi, а линия имеет два пикселя. Просто повторное использование этого чертежа без масштабирования на экране xhdpi сделает вашу линию на два пиксела выше на этом экране. Но поскольку экран имеет меньшие пиксели (более высокое разрешение, одинаковый размер дисплея), линия будет выглядеть более тонкой.

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

+0

Поймите сейчас. Приветствие Билефельду :-) – user949884

+0

Вы можете принять ответ, если он решил ваш вопрос :) – Janusz

+0

Да, вы правы в примере с 2 пикселями. Хотя я не заметил проблемы с уменьшением изображений. Возможно, что я не занимался изображениями, которые могли бы показать разницу. Спасибо за подсказку :) Я буду помнить об этом в следующий раз. – Shubhayu

6

Вам не нужно ставить разного размера изображения 9-патч во всех 3 папки. Просто поставьте тот, который имеет наивысшее разрешение в вашей папке. Android заберет его для всех ваших разных плотностей.

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

Редактировать: С тех пор, как я написал это сообщение, я обнаружил гораздо больше материалов о 9-патче. 9-патч-изображения не уменьшаются. Лучше всего было бы поместить изображение самого маленького размера. И исходя из того, как он ищет другие плотности, вы должны сделать 9-патч-изображения для затронутых плотностей. Вот более подробную информацию о нем,

http://www.shubhayu.com/android/9-patch-image-designers-vs-developers

+0

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

+0

9-patch чехол вниз? Я думаю, что только увеличится. – user949884

+0

Если Android выбрал выталкиваемый из папки xhdpi для телефона mdpi, он будет уменьшать изображение, независимо от того, являются ли они 9-патч или нет. См. Мой ответ для получения дополнительной информации. Мне тоже было трудно это узнать;) – Janusz