美文网首页
Android高级渲染Shader(二)

Android高级渲染Shader(二)

作者: aruba | 来源:发表于2020-01-07 09:32 被阅读0次

    除了BitmapShader外,还有几种渲染

    1.LinearGradient--线性渲染
    参数
    • float left 渲染区域的左坐标
    • float top 渲染区域的上坐标
    • float right 渲染区域的右坐标
    • float bottom 渲染区域的下坐标
    • float colors[] 渲染的颜色数组
    • float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分
    • TileMode tile 拉伸模式
       private int[] colors = new int[]{Color.RED,Color.GREEN,Color.BLUE};
        /**
         * 线性渲染
         * @param canvas
         */
        private void drawLinearGradient(Canvas canvas){
            LinearGradient linearGradient = new LinearGradient(0,0,400,400,colors,null, Shader.TileMode.CLAMP);
            paint.setShader(linearGradient);
    
            canvas.drawRect(0,0,400,400,paint);
        }
    
    LinearGradient.jpg
    2.SweepGradient--渐变渲染/梯度渲染
    参数
    • float cx 渲染区域的X坐标
    • float cy 渲染区域的Y坐标
    • float colors[] 渲染的颜色数组
    • float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分
        /**
         * 梯度渲染/渐变渲染
         * @param canvas
         */
        private void drawSweepGradient(Canvas canvas){
            SweepGradient sweepGradient = new SweepGradient(200,200,colors,null);
            paint.setShader(sweepGradient);
    
            canvas.drawRect(0,0,400,400,paint);
        }
    
    SweepGradient.jpg
    3.RadialGradient--环形渲染
    参数
    • float cx 渲染区域的圆心X坐标
    • float cy 渲染区域的圆心Y坐标
    • float radius 渲染圆形半径
    • float colors[] 渲染的颜色数组
    • float positions[] 对应颜色数组的显示位置,取0-1小数,为空时均分,最大位置参照半径,超过半径显示最后一个颜色
    • TileMode tileMode 拉伸模式


      RadialGradient.jpg
    4.ComposeShader--组合渲染
    参数
    • Shader shaderA 渲染效果A
    • Shader shaderB 渲染效果B
    • PorterDuff.Mode mode 组合模式
        /**
         * 组合渲染
         * @param canvas
         */
        private void drawComposeShader(Canvas canvas){
            BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
            SweepGradient sweepGradient = new SweepGradient(200,200,colors,null);
            ComposeShader composeShader = new ComposeShader(bitmapShader,sweepGradient, PorterDuff.Mode.ADD);
            paint.setShader(composeShader);
    
            canvas.drawRect(0,0,1000,1000,paint);
        }
    
    ComposeShader.jpg

    项目地址:https://gitee.com/aruba/ShaderApplication.git

    相关文章

      网友评论

          本文标题:Android高级渲染Shader(二)

          本文链接:https://www.haomeiwen.com/subject/peqlactx.html