LinearGradient线性渲染

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 color0 : 起始渐变色

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)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值