11

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

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

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

我真正在寻找的是: 一种工具,可以和使用该工具的说明,使用一种#aarrggbb格式作为输入 alpha/color(90 度角,一般角度,将是一个加号)来制作渐变。

谢谢你的帮助。

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

4

4 回答 4

4

最后,它是使用ImageMagick的单线!

我不敢相信我以前没想过使用 ImageMagick,Duh !!!

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

作为参考,我使用我的 Android XML drawable ##AARRGGBB 值创建了一个 .png 图像文件。ImageMagick FTW!!!

感谢大家的意见。

于 2011-12-29T11:25:03.983 回答
3

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

于 2011-12-15T12:27:21.743 回答
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代表Alpha,R代表Red,G代表GreenB. Blue_ 每个组件的值可以介于 (0, 255) 之间。注意:

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

(no transparency) you would use因此,如果您想要具有不透明“Alpha #FFFFFFFF . For Black#FF000000 . For Grey#FF808080 .80 80 ”的白色,则为is hex value of decimal 128 and gives you half of full intensity white. so您提供中值灰色。

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

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

于 2011-12-16T19:07:50.440 回答
1

您还可以创建一个仅将渐变作为背景的活动,而屏幕上没有其他内容。

在模拟器或设备上运行应用程序,并使用 DDMS 进行屏幕截图。然后,您将保存一个渲染良好的 PNG,您可以通过改变您正在使用的模拟器的屏幕尺寸来创建您想要的任何尺寸。

您的 XML 可能如下所示:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/your_gradient">
</LinearLayout>
于 2011-12-15T12:50:24.907 回答