2012-09-24 59 views
4

我在Android的Canvas中绘制了一个简单的圆圈。 现在我需要用一些渐变颜色填充它,但它们并不真实。 这个公司我做了什么:Android平滑渐变

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径向渐变?

+0

我需要刷新我的记忆,但在Android中绑定主要是由像素格式引起的。确保你使用ARGB_888,看看事情是否改善 –

回答

1

最后,我应该初始化我喷漆的对象为:

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); 

这使得边界清洁。

而且@Waqas的答案,使颜色本身更平滑。

1

尝试添加以下到您Activity其中包含执行绘图View

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

正如你所说,这消除了de color bandgin,但边界仍然“怪异” –