首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android滤镜--Alpha值滤镜处理之MaskFilter

Android滤镜--Alpha值滤镜处理之MaskFilter

作者头像
aruba
发布2020-07-03 11:08:29
1.1K0
发布2020-07-03 11:08:29
举报
文章被收录于专栏:android技术android技术
所谓的滤镜效果就是对图像进行一定的颜色过滤处理,颜色值是32位的int值,ARGB :A---Alpha值,RGB---颜色值
安卓中对Alpha值的滤镜处理就是利用MaskFilter,其中有两个子类继承MaskFilter
  • BlurMaskFilter--用来绘制模糊阴影
    /**
     * Create a blur maskfilter.
     *
     * @param radius 阴影的半径
     * @param style  NORMOL -- 整个图像都被模糊掉
     *               SOLID -- 图像边界外产生一层与Paint颜色一致阴影效果,不影响图像的本身
     *               OUTER -- 图像边界外产生一层阴影,并且将图像变成透明效果
     *               INNER -- 在图像内部边沿产生模糊效果
     * @return       The new blur maskfilter
     */
    public BlurMaskFilter(float radius, Blur style) {
        native_instance = nativeConstructor(radius, style.native_int);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        RectF rectF = new RectF(50, 50, 350, 350);

        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);

        canvas.drawRect(rectF, paint);

        MaskFilter maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.NORMAL);
        paint.setMaskFilter(maskFilter);

        canvas.translate(400, 0);
        canvas.drawRect(rectF, paint);

        maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.SOLID);
        paint.setMaskFilter(maskFilter);

        canvas.translate(-400, 400);
        canvas.drawRect(rectF, paint);

        maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.OUTER);
        paint.setMaskFilter(maskFilter);

        canvas.translate(400, 0);
        canvas.drawRect(rectF, paint);

        maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.INNER);
        paint.setMaskFilter(maskFilter);

        canvas.translate(-400, 400);
        canvas.drawRect(rectF, paint);
    }
下面是普通画矩形,NORMOL ,SOLID ,OUTER ,INNER 分别的效果
  • EmbossMaskFilter--用来实现浮雕效果
    /**
     * Create an emboss maskfilter
     *
     * @deprecated This subclass is not supported and should not be instantiated.
     *
     * @param direction  指定光源的位置,长度为xxx的数组标量[x,y,z]
     * @param ambient    环境光的因子 (0~1),越接近0,环境光越暗
     * @param specular   镜面反射系数 越接近0,镜面反射越强
     * @param blurRadius 模糊半径 值越大,模糊效果越明显
     * @return           the emboss maskfilter
     */
    @Deprecated
    public EmbossMaskFilter(float[] direction, float ambient, float specular, float blurRadius) {
        if (direction.length < 3) {
            throw new ArrayIndexOutOfBoundsException();
        }
        native_instance = nativeConstructor(direction, ambient, specular, blurRadius);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);


        Rect rectf = new Rect(10,10,300,300);
        canvas.drawRect(rectf,paint);

        canvas.translate(400,0);
        
        //第三个参数发现没什么用
        EmbossMaskFilter embossMaskFilter = new EmbossMaskFilter(new float[]{1,1,1},0.2f,1000,50);
        paint.setMaskFilter(embossMaskFilter);
        canvas.drawRect(rectf,paint);
    }
项目地址:https://gitee.com/aruba/Filter.git
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 所谓的滤镜效果就是对图像进行一定的颜色过滤处理,颜色值是32位的int值,ARGB :A---Alpha值,RGB---颜色值
    • 安卓中对Alpha值的滤镜处理就是利用MaskFilter,其中有两个子类继承MaskFilter
      • 下面是普通画矩形,NORMOL ,SOLID ,OUTER ,INNER 分别的效果
      • 项目地址:https://gitee.com/aruba/Filter.git
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档