抖动梯度Android的画布上

抖动梯度Android的画布上

本文介绍了如何绘制平滑/抖动梯度Android的画布上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

若干答案提及使用GradientDrawable.setDither(真)绘制平滑渐变的Andr​​oid系统。已在我的code没有影响。任何想法,我必须要改变以获得一个很好看的梯度在我居住的壁纸?

  GradientDrawable梯度=新GradientDrawable(Orientation.TL_BR,颜色);
gradient.setGradientType(GradientDrawable.RADIAL_GRADIENT);
gradient.setGradientRadius(canvas.getWidth()* 2);
gradient.setDither(真正的);
gradient.setGradientCenter(-0.1f,-0.1f);
gradient.setBounds(CB);
gradient.draw(画布);
 

解决方案

看到你有一个帆布的工作。这是一个选项。

 私人位图makeRadGrad(){
    的RadialGradient梯度=新的RadialGradient(200,200,200,为0xFFFFFFFF,
            0xFF000000,android.graphics.Shader.TileMode.CLAMP);
    涂料P =新的油漆();
    p.setDither(真正的);
    p.setShader(梯度);

    位图的位图= Bitmap.createBitmap(400,400,Config.ARGB_8888);
    帆布C =新的Canvas(位);
    c.drawCircle(200,200,200,p)的;

    返回的位图;
}
 

结果:如何绘制平滑/抖动梯度Android的画布上-LMLPHP

Several answers mention to use GradientDrawable.setDither(true) to draw smooth gradients in Android. That has no effect in my code. Any idea what I have to change to get a well looking gradient in my live wallpaper?

GradientDrawable gradient = new GradientDrawable(Orientation.TL_BR, colors);
gradient.setGradientType(GradientDrawable.RADIAL_GRADIENT);
gradient.setGradientRadius(canvas.getWidth() * 2);
gradient.setDither(true);
gradient.setGradientCenter(-0.1f, -0.1f);
gradient.setBounds(cb);
gradient.draw(canvas);
解决方案

Seeing as you have a Canvas to work with. Here is one option.

private Bitmap makeRadGrad() {
    RadialGradient gradient = new RadialGradient(200, 200, 200, 0xFFFFFFFF,
            0xFF000000, android.graphics.Shader.TileMode.CLAMP);
    Paint p = new Paint();
    p.setDither(true);
    p.setShader(gradient);

    Bitmap bitmap = Bitmap.createBitmap(400, 400, Config.ARGB_8888);
    Canvas c = new Canvas(bitmap);
    c.drawCircle(200, 200, 200, p);

    return bitmap;
}

Result:

这篇关于如何绘制平滑/抖动梯度Android的画布上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-23 03:47