Android平滑渐变

时间:2012-09-24 15:26:11

标签: android graphics gradient radial-gradients

在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();
}

这就是结果:

readial gradient

我的问题是:是否有某种方法可以使HQ径向渐变?

2 个答案:

答案 0 :(得分:1)

尝试将以下内容添加到Activity,其中包含执行绘图的View

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

答案 1 :(得分:1)

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

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

这使得边界更清洁。

使用@Waqas答案,让色彩本身更加流畅。