使用编程方式添加具有纯色和描边的渐变

3

目前我正在使用以下代码添加颜色:

ShapeDrawable drawable = new ShapeDrawable(new OvalShape());
drawable.getPaint().setColor(color);

现在我需要为它应用一些渐变颜色和描边(类似于带有不同颜色的边框)。我将其设置为按钮背景。
以下是我的期望效果,我需要以编程方式完成它。
2个回答

4

像这样在你的drawable中添加一个RadialGradient

Shader shader = new RadialGradient(x, y, radius, color0, color1, Shader.TileMode.REPEAT);
drawable.getPaint().setShader(shader);

显然,您可以交换LinearGradientSweepGradient和任何参数。
以下是如何添加描边:
drawable.getPaint().setStrokeWidth(3);
drawable.getPaint().setColor(Color.WHITE);
drawable.getPaint().setStyle(Paint.Style.FILL_AND_STROKE);

嗯,我认为我需要听从 @StinePike 关于 GradientDrawable 的建议:

GradientDrawable gd = new GradientDrawable();
gd.setColor(Color.RED);
gd.setCornerRadius(10);
gd.setStroke(2, Color.WHITE);
gd.setShape(GradientDrawable.OVAL);

谢谢。那么我的图片中有轮廓线怎么办?我指的是蓝色边框。 - Goofy
不好意思,它现在无法工作,而且角落是矩形的。我还想要描边颜色不同,你能帮我吗? - Goofy
这就是我所能提供的了。当我看到您的请求时,我期望我最近项目中的径向渐变示例对您有用。如果没有进行一点试验,我无法再为您提供帮助。希望这能稍微帮到您。祝好运! - David Manpearl
最后一个问题,我尝试了这个:GradientDrawable drawable = new GradientDrawable(Orientation.TOP_BOTTOM, new int[]{Color.RED, Color.GREEN}); 但是我需要CENTER而不是TOP_BOTTOM。 - Goofy

3

颜色的笔画怎么样? - Goofy
GradientDrawable 中有一个 setStroke 方法。 - stinepike
在setShape方法中,您可以将OVAL设置为常量。请先检查整个GradientDrawable文档。 - stinepike
最后一个问题,我尝试了这个:GradientDrawable drawable = new GradientDrawable(Orientation.TOP_BOTTOM, new int[]{Color.RED, Color.GREEN}); 但是我需要CENTER而不是TOP_BOTTOM。 - Goofy
请查看此答案https://dev59.com/vW3Xa4cB1Zd3GeqPdVXG#14383974。如果我的答案解决了您的问题,请接受它。 - stinepike
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接