Как сохранить, экспортировать или преобразовать 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. so80` дает вам средний серый.

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

AFAIK, угол для радиального градиента не должен составлять все различия. Попробуйте все это в GIMP или прочитайте учебники GIMP. Лучше использовать Photoshop, если вы можете (доступны пробные версии 90 дней).