Зачем нам нужен 9-патч?
1634 просмотра
4 ответа
Мой вопрос как заголовок говорит: зачем нам 9-патч-изображения? Они действительно так важны? На самом деле, что они действительно делают? Я не понимаю концепцию изображений с 9 патчами.
Я знаю, что 9-патч изображения являются масштабируемыми. Допустим, у меня есть кнопка с изображением, которая идеально подходит для моего устройства ldpi. С помощью инструмента Draw 9-patch (входит в состав Android SDK) я могу пометить масштабируемые области, и это изображение будет отлично вписываться в устройства hdpi и даже xhdpi. Края будут красивыми и гладкими.
Но действительно ли это хорошая практика или просто альтернатива? Должен ли я создавать каждое изображение для устройств ldpi, mdpi, hdpi и xhdpi или я могу просто использовать Android SDK "Draw 9-patch" на одном изображении и позволить Android обрабатывать различные устройства?
Я не то, что о краях, а фактическое содержание картины. Является ли контент тоже масштабируемым?
Автор: rootpanthera Источник Размещён: 13.11.2019 11:32Ответы (4)
6 плюса
Содержание является масштабируемым, края не будут масштабироваться при обычном использовании.
Они обычно используются для фона для кнопок или других экранных декораций, где масштабированное содержимое можно масштабировать бесконечно, не теряя разрешение .
В идеале, они используются в дополнение к зависящим от плотности ресурсам, где это уместно, так что часть ресурса (которую вы явно не указали, является масштабируемой) не масштабируется, а затем пикселируется.
Рассмотрим заставку для приложения Kindle на Android, на которой изображен силуэт мальчика, читающего на дереве. В упрощенном варианте земля может быть масштабирована по горизонтали до бесконечности, но если бы мальчик был масштабирован, он выглядел бы перекошенным. Таким образом, вы можете использовать девять патчей и указать раздел, который можно масштабировать и в каком направлении.
Однако этого недостаточно - если вы включите только ресурс с низким разрешением, ресурс по-прежнему будет изначально масштабирован, если дисплей устройства будет иметь более высокую плотность. В этом случае мальчик может выглядеть размытым от масштабирования и является примером того, когда ресурс с более высоким разрешением мог бы помочь предотвратить пикселизацию.
То, как вы сформулировали вопрос, предполагает (для меня), что вы спрашиваете, могут ли изображения из 9 патчей заменить все доступные для рисования ресурсы, такие как значки или ресурсы с изображениями на них, на что нет ответа. Они используются только для масштабирования разделов ресурсов, которые содержат блок одного цвета (т.е. разделы, которые не могут быть пикселированы).
-
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
Автор: ataulm Размещён: 13.05.2013 12:081 плюс
Логика патча 9 заключается в том, что вы не масштабируете углы.
Автор: Damian Leszczyński - Vash Размещён: 13.05.2013 12:100 плюса
В Android 9-патч используется, когда вы хотите, чтобы части вашего изображения масштабировались, а другие части сохраняли свои исходные размеры. первое приложение приходит на ум это углы, как вы заявили. Таким образом, вы используете их в этом случае.
С другой стороны, если вы хотите, чтобы ваши ресурсы выглядели в хорошем качестве (без размытия), вы должны использовать альтернативные ресурсы (ldpi, hdpi ..)
Посмотрите здесь: Поддержка экрана
Автор: Mr.Me Размещён: 13.05.2013 12:100 плюса
Изображения с девятью заплатами являются масштабируемыми, но только в некоторых областях. Простейший пример - коробка, разделенная на 9 частей: углы не масштабируются; границы будут расширены в одном направлении в соответствии с содержанием в середине.
Концепция существует на других языках. iOS, CSS3, блочная модель W3C являются такими примерами. Тем не менее, 9-патч-изображения просты и гибки в использовании, потому что:
- несколько областей могут быть расширены вместо одной для других языков;
- масштабируемые области определяются на изображении, а не в коде.
Вопросы из категории :
- java В чем разница между int и Integer в Java и C #?
- java Как я могу определить IP моего маршрутизатора / шлюза в Java?
- java Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- java Как округлить результат целочисленного деления?
- java Преобразование списка <Integer> в список <String>
- java Почему я не могу объявить статические методы в интерфейсе?
- android Насколько хорошо отражает эмулятор Android Phone?
- android Как сохранить состояние активности Android с помощью сохранения состояния экземпляра?
- android Android: доступ к дочерним представлениям из ListView
- android Как вызвать SOAP веб-сервис на Android
- android Как вы форматируете дату и время в Android?
- android Android: Получение имени файла с камеры?
- nine-patch Как создать Android Spinner без треугольника вниз на правой стороне виджета
- nine-patch Как вернуться к стилю по умолчанию на EditText, если я применяю фон?
- nine-patch 9-патч - граница 1px размыта
- nine-patch Зачем нам нужен 9-патч?
- nine-patch используя изображение из девяти патчей в качестве фона кнопки Android
- nine-patch 9Патч на другом уровне Android API