Nine-Patch Drawable vs Shape Drawable. Что должно быть предпочтительнее?
Мой коллега и я разработали два приложения параллельно, каждый со схожим стилем. Основной вид этих приложений - радиальный градиент. Он реализовал его как изображение с девятью патчами, и я сделал его с возможностью рисования. Оба генерируют схожие и приемлемые результаты.
Итак, мой вопрос, который мы должны использовать? Существуют ли компромиссы между потреблением памяти и производительностью? Я полагаю, что на изображение может потребоваться время для загрузки, но для рисования фигуры требуется больше времени для рисования (из-за расчетов). Сохраняются ли они в кеше, и эти штрафы происходят только в первый раз, когда они отображаются или эти проблемы продолжаются?
Форма:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:startColor="#003472"
android:endColor="#000034"
android:gradientRadius="350"
android:type="radial"/>
</shape>
Девять исправлений:
![enter image description here]()
Ответы
Ответ 1
Выбираемая форма отлично подходит для градиентного изображения с простыми постоянными изменениями цвета.
С другой стороны, 9-патч-изображения отлично подходят для изображений с большим количеством деталей, постоянным цветом в областях растяжения.
Ответ 2
Просто напал на эту проблему раньше.
НЕ ИСПОЛЬЗУЙТЕ ФОРМУ В XML, ЕСЛИ У ВАС ЕСТЬ АНИМАЦИЯ, КОТОРАЯ ПРИНИМАЕТ ЭТО. Причина в том, что кеширование (особенно, если вы используете аппаратное ускорение), сделает его действительно "лаги", поскольку экран не будет обновляться так часто.
Ответ 3
Взгляните на ответ, данный @Иван Бартовым. Но благодаря тщательному анализу кода он приходит к выводу, что для большинства общих случаев использование 9-патча требует меньшего количества процессов, чем меньше памяти, чем генерируемых градиентов. Поэтому в большинстве случаев лучше всего использовать 9 патчей.
Взгляните на его ответ на детали режима: Что я должен использовать для повышения производительности, с девятью патчами или ресурсом xml?