2011-12-15 147 views
9

我有一个梯度我真的很喜欢,但我使用XML创建绘制它:如何将Android XML Drawable保存,导出或转换为PNG图像文件?

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

什么是创造这一个PNG或类似的东西一个简单的方法?

我真正要找的是: 一个工具,可以使用该工具使用#aarrggbb格式,因为它是输入字母/彩色(90度角,使梯度说明,一般角度,将是一个加)。

感谢您的任何帮助。

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

+0

显示它从Eclipse特性空的布局和使用图像抓拍或设备上运行,并遵循相同的过程中获得高分辨率图像 – ingsaurabh 2011-12-15 12:16:25

+0

除非我失去了一些东西......这也将不保留透明度。 – TryTryAgain 2011-12-16 17:10:54

+0

发布代码怎么样? :) – bluszcz 2012-08-01 16:10:37

回答

3

它到底是用ImageMagick一个衬垫!

我不能相信我没想到之前使用ImageMagick的,咄!

convert -size 480x84 gradient:'rgba(156, 125, 90, 0.52)'-'rgba(24, 28, 24, 0.86)' tmp.png 

仅供参考,我用这个用我的Android XML绘制## AARRGGBB值来创建一个PNG图片文件。 ImageMagick FTW!

感谢大家的输入。

3

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

1

您也可以使用渐变作为背景创建一个活动,屏幕上不会显示其他内容。

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

你的XML看起来是这样的:

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

试试这个:

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代表GreenB代表Blue。每个组件可以具有(0,255)之间的值。需要注意的是:

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

因此,如果你想要一个白色不透明“阿尔法(no transparency) you would use #FFFFFFFF . For Black#FF000000 . For Grey#FF808080 80`给你中间灰色。

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

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

相关问题