LinearGradient有两个构造函数;
public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions,Shader.TileMode tile)
参数:
float x0: 渐变起始点x坐标
float y0:渐变起始点y坐标
float x1:渐变结束点x坐标
float y1:渐变结束点y坐标
int[] colors:颜色 的int 数组
float[] positions: 相对位置的颜色数组,可为null, 若为null,可为null,颜色沿渐变线均匀分布
Shader.TileMode tile: 渲染器平铺模式
public LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1,Shader.TileMode tile)
float x0: 渐变起始点x坐标
float y0:渐变起始点y坐标
float x1:渐变结束点x坐标
float y1:渐变结束点y坐标
int color1: 结束渐变色
Shader.TileMode tile: 渲染器平铺模式
主要代码:
public class LinearGradientActivity extends Activity {
ImageView image,image2,image3,image4;
int width,height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
image = (ImageView) findViewById(R.id.image);
image2 = (ImageView) findViewById(R.id.image2);
image3 = (ImageView) findViewById(R.id.image3);
image4 = (ImageView) findViewById(R.id.image4);
width = ValueUtil.dp2px(this,120);
height = ValueUtil.dp2px(this,120);
Bitmap bitmapTemp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmapTemp);
LinearGradient mShader = new LinearGradient(0, 0, width, height, new int[] {
Color.RED, Color.GREEN, Color.BLUE },
null, Shader.TileMode.MIRROR); //梯度线为对角线,这里为Fect(0,0,width,height)的对角线
Paint paint = new Paint();
paint.setShader(mShader);
canvas.drawRect(new RectF(0,0,width,height),paint);
image.setImageBitmap(bitmapTemp);
Bitmap bitmapTemp2 = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas2 = new Canvas(bitmapTemp2);
LinearGradient mShader2 = new LinearGradient(0, 0, 0, height, new int[] {
Color.RED, Color.GREEN, Color.BLUE },//这里的梯度线为y轴
null, Shader.TileMode.MIRROR);
Paint paint2 = new Paint();
paint2.setShader(mShader2);
canvas2.drawOval(new RectF(0,0,width,height-50),paint2);
image2.setImageBitmap(bitmapTemp2);
Bitmap bitmapTemp3 = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas3 = new Canvas(bitmapTemp3);
LinearGradient mShader3 = new LinearGradient(0, 0, width, height, new int[] {
Color.RED, Color.GREEN,Color.BLUE},
new float[]{0.2f,0.3f,0.5f}, Shader.TileMode.MIRROR);//int[]数组长度和float[]数组相等
Paint paint3 = new Paint();
paint3.setShader(mShader3);
canvas3.drawRect(new RectF(0, 0, width, height), paint3);
image3.setImageBitmap(bitmapTemp3);
Bitmap bitmapTemp4 = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas4 = new Canvas(bitmapTemp4);
LinearGradient mShader4 = new LinearGradient(0, 0, 50, 50,
Color.RED, Color.GREEN
, Shader.TileMode.MIRROR);
Paint paint4 = new Paint();
paint4.setShader(mShader4);
canvas4.drawRect(new RectF(0, 0, width, height), paint4);
image4.setImageBitmap(bitmapTemp4);
}
}
效果图:
参考资料:http://blog.csdn.net/t12x3456/article/details/10566219
源码:http://yunpan.cn/c3f2qgcVtNSwP (提取码:2ccf)