Android SweepGradient类介绍

Android 颜色处理(八) SweepGradient 扫描/梯度渲染

为什么什么叫扫描渲染呢?  相信大家都看过雷达扫描的效果,尤其是在安全软件中.


Android SweepGradient类介绍_第1张图片


public SweepGradient(float cx, float cy, int[] colors, float[] positions)

Parameters:
cx 渲染中心点x 坐标
cy 渲染中心y 点坐标
colors 围绕中心渲染的颜色数组,至少要有两种颜色值
positions 相对位置的颜色数组,可为null,  若为null,可为null,颜色沿渐变线均匀分布


public SweepGradient(float cx, float cy, int color0, int color1)

Parameters:

cx 渲染中心点x 坐标
cy 渲染中心点y 坐标
color0 起始渲染颜色
color1 结束渲染颜色


关键是怎么理解这个中心点的意思,其实就是围绕哪个点开始渐变,下面以实例说明:

  

public class MainActivity extends Activity {
SweepGradientView mSweep;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSweep=new SweepGradientView(this, null);
setContentView(mSweep);
}
}


public class SweepGradientView extends View {

Paint mPaint = null;
// 梯度渲染
Shader mSweepGradient = null;

public SweepGradientView(Context context, AttributeSet attrs) {
super(context, attrs);
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

mSweepGradient = new SweepGradient(200, 300, new int[] { Color.CYAN,
Color.DKGRAY, Color.GRAY, Color.LTGRAY, Color.MAGENTA,
Color.GREEN, Color.TRANSPARENT, Color.BLUE }, null);
mPaint = new Paint();

mPaint.setShader(mSweepGradient);

canvas.drawCircle(240, 360, 200, mPaint);
}
}

我们看到这里的中心点给的是200、300,其实就是在屏幕上以X方向为200、Y方向为300的左边开始渐变,效果图如下:

Android SweepGradient类介绍_第2张图片


如果以240, 360为中心点开始渐变,这个时候的效果如下:


 


切记理解这个中心点的意思,是围绕哪个点开始渐变



你可能感兴趣的:(Android SweepGradient类介绍)