Как сохранить, экспортировать или преобразовать Android XML Drawable в файл PNG-изображения?
у меня есть градиент, который мне очень нравится, но я создал его с помощью XML drawable:
<gradient
android:startColor="#DD181C18"
android:endColor="#809C7D5A"
android:angle="90"/>
что было бы простым способом создать это в png или что-то подобное?
то, что я действительно ищу, это:
инструмент, который может и инструкции с помощью этого инструмента, чтобы сделать градиенты с помощью #aarrggbb
формат, поскольку он вводит Альфа / цвет (угол 90 градусов, углы в целом, будет плюсом).
Спасибо за любую помощь.
редактировать: ох! Я полностью только что понял ImageMagick должен быть в состоянии сделать это. Я отправлю код, который является моим ответом в ближайшее время, если кто-то не хочет опередить меня и получить всю награду!
4 ответов
используйте программу как photoshop или paint.Net -они оба имеют градиентные инструменты и должны позволить вам установить цвета в том же формате, что и у вас.
В конце концов это был один лайнер, используя ImageMagick!
Я не могу поверить,что я не думал использовать ImageMagick раньше, да!!!
convert -size 480x84 gradient:'rgba(156, 125, 90, 0.52)'-'rgba(24, 28, 24, 0.86)' tmp.png
для справки, я использовал это для создания .png файл изображения с помощью моего Android XML drawable # # aarrggbb значения. ImageMagick FTW!!!
Спасибо за вклад каждого.
вы также можете создать действие только с градиентом в качестве фона, и ничего больше на экране.
запустите приложение на эмуляторе или устройстве и используйте DDMS для захвата экрана. Затем у вас будет хорошо визуализированный PNG для сохранения, и вы можете создать любой размер, изменив размер экрана эмулятора, который вы используете.
ваш XML может выглядеть так:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/your_gradient">
</LinearLayout>
попробуйте:
try {
item.setDrawingCacheEnabled(true);
Bitmap bmp = item.getDrawingCache();
FileOutputStream out = new FileOutputStream(filename);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
здесь item
- это группа представлений / представлений, которую я хочу отобразить.
я фактически использую тот же фрагмент (минус запись файла) для некоторых на экране рендеринга и, кажется, сохранить прозрачность.
Примечание О Цветах:
цвета могут быть указаны в android, используя шестнадцатеричные значения. Байт (8 бит) доступен для каждого значения цвета в шаблоне ARGB
(всего 32 бита). A
стенды для Alpha
, R
расшифровывается как Red
, G
на Green
и B
на Blue
. Каждый компонент может иметь значения от (0, 255). Обратите внимание, что:
decimal 0 = hex 0x00
decimal 255 = hex 0xFF
Итак, если вы хотите белый цвет с непрозрачным " Альфа(no transparency) you would use
#FFFFFFFF. For Black
#FF000000. For Grey
#FF808080.
80is hex value of decimal 128 and gives you half of full intensity white. so
80` дает вам средний серый.
используйте шестнадцатеричную арифметику, чтобы получить значения десятичных цветов.
AFAIK, угол для радиального градиента не должен составлять все различия. Попробуйте все это в GIMP или прочитайте учебники GIMP. Лучше использовать Photoshop, если вы можете (доступны пробные версии 90 дней).