如何将Android XML Drawable保存,导出或转换为PNG图像文件?

时间:2011-12-15 12:13:08

标签: android gradient xml-drawable

我有一个我非常喜欢的渐变,但我使用XML drawable创建它:

<gradient
    android:startColor="#DD181C18"
    android:endColor="#809C7D5A"
    android:angle="90"/>

将这个创建为png或类似内容的简单方法是什么?

我真正想要的是: 一个工具可以和使用该工具的指令使用#aarrggbb格式制作渐变,因为它的输入字母/颜色(90度角,一般角度,将是一个加号)。

感谢您的帮助。

编辑:D'哦!我完全意识到 ImageMagick 应该能够做到这一点。我会尽快发布我的答案代码,除非有人想要打败我并获得全部赏金!

4 个答案:

答案 0 :(得分:3)

使用像photoshop或paint.Net这样的程序 - 它们都有渐变工具,应该让你以与你在那里相同的格式设置颜色。

答案 1 :(得分:3)

最后,它是一个使用ImageMagick

的班轮

我无法相信我之前没想过要使用ImageMagick,Duh !!!

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 !!!

感谢大家的投入。

答案 2 :(得分:2)

尝试一下:

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代表AlphaR代表RedG代表GreenB代表Blue。每个组件的值可以在(0,255)之间。请注意:

decimal 0   = hex 0x00
decimal 255 = hex 0xFF

所以如果你想要一个不透明的白色'Alpha (no transparency) you would use#FFFFFFFF . For Black#FF000000 . For Grey#FF808080 . 80 is hex value of decimal 128 and gives you half of full intensity white. so 80`给你中位灰色。

使用十六进制算术获取小数颜色的值。

AFAIK,径向渐变的角度不应有任何区别。在GIMP中尝试所有这些或阅读GIMP教程。如果可以,最好还是使用Photoshop(可提供90天试用版)。

答案 3 :(得分:1)

你也可以创建一个只有渐变作为背景的活动,屏幕上没有任何其他活动。

在模拟器或设备上运行应用程序,并使用DDMS进行屏幕捕获。然后你将有一个很好的渲染PNG来保存,你可以通过改变你正在使用的模拟器的屏幕大小来创建你想要的任何大小。

您的XML可能如下所示:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/your_gradient">
</LinearLayout>