【问题标题】:Android smooth gradientAndroid平滑渐变
【发布时间】:2012-09-24 15:26:11
【问题描述】:

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

结果如下:

我的问题是:有什么方法可以制作 HQ 径向渐变吗?

【问题讨论】:

  • 我需要刷新记忆,但Android中的条带主要是由像素格式引起的。确保您使用的是 ARGB_888,看看情况是否有所改善

标签: android graphics gradient radial-gradients


【解决方案1】:

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

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

【讨论】:

  • 如你所说,消除了色带,但边框仍然“怪异”
【解决方案2】:

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

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

这使边界更干净。

通过@Waqas 的回答,使颜色本身更平滑。

【讨论】:

    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多