安卓平滑渐变

4
我在 Android 的 Canvas 上画了一个简单的圆。现在我需要用一些渐变颜色来填充它,但它们并不是很光滑。这是我所做的:
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    rectF.set(20, 20, this.get_Width() - this.get_Width()/10, this.get_Width() - this.get_Width()/10);
    RadialGradient gradient = new RadialGradient(200, 200, 200, 0xFFFFFFFF,
            0xFF000000, android.graphics.Shader.TileMode.CLAMP);
    Paint mPaint = new Paint();
    mPaint.setDither(true);
    mPaint.setShader(gradient);
    canvas.drawCircle(getWidth()/2, getHeight()/2, getWidth()/3, getGradient());
    invalidate();
}

这是结果:

径向渐变

我的问题是:有没有一些方法可以制作高质量的径向渐变?

我需要恢复一下记忆,但在Android中出现带状问题大多是由于像素格式引起的。确保您正在使用ARGB_888,并查看是否有所改善。 - André Oriani
2个回答

1

尝试将以下内容添加到包含绘图ViewActivity中:

@Override
public void onAttachedToWindow() {
   super.onAttachedToWindow();
   Window window = getWindow();
   // Eliminates color banding
   window.setFormat(PixelFormat.RGBA_8888);
}

正如你所说,这消除了颜色条纹,但边框仍然很“奇怪”。 - FelipeDev.-

1

最后,我应该将我的Paint对象初始化为:

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

这使得边框更加清晰。

而且根据@Waqas的回答,使颜色本身更加平滑。


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