• 学习笔记——Paint 1(MaskFilter)


    对于Paint没有很好的深入的学习过,在工作之余再巩固巩固。

    1.Paint的BlurMaskFilter(模糊效果)

    自定义一个View继承View 重写里面的onDraw方法。这里直接上代码了:

    @Override
    protected void onDraw(Canvas canvas) {
    BlurMaskFilter bmf = null;
    Paint paint = new Paint();
    paint.setAntiAlias(true); //抗锯齿
    paint.setColor(Color.RED); //画笔颜色
    paint.setStyle(Paint.Style.FILL); //画笔风格
    paint.setTextSize(68); //绘制的文字大小
    paint.setStrokeWidth(5); //画笔粗细

    bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.NORMAL);
    paint.setMaskFilter(bmf);
    canvas.drawText("最喜欢兰了",100,100,paint);

    bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.OUTER);
    paint.setMaskFilter(bmf);
    canvas.drawText("最喜欢兰了",100,200,paint);

    bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.INNER);
    paint.setMaskFilter(bmf);
    canvas.drawText("最喜欢兰了",100,300,paint);

    bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.SOLID);
    paint.setMaskFilter(bmf);
    canvas.drawText("最喜欢兰了",100,400,paint);

    setLayerType(View.LAYER_TYPE_SOFTWARE,null);
    }


    这里模糊设置主要靠 bmf=new BlurMaskFilter(10f,BlurMaskFilter.Blur.SOLID);其中两个参数,
    第一个参数:指模糊边缘的半径
    第二个参数:指模糊的类型 有4种值,详细如下:
    BlurMaskFilter.Blur.NORMAL :内外模糊
    BlurMaskFilter.Blur.OUTER :外部模糊
    BlurMaskFilter.Blur.INNER :内部模糊
    BlurMaskFilter.Blur.SOLID :内部加粗,外部模糊

    效果图如下:


    2.EmbossMaskFilter(浮雕效果)

    使用方式与BlurMaskFilter相同,主要部分在于其构造方法。
    代码如下:
    float[] direction = {1, 1, 3}; //设置光源方向
    float light=0.4f; //设置环境光亮度
    float specular=8; //设置镜面反射系数
    float blur=3.0f; //模糊半径
    EmbossMaskFilter emboss = new EmbossMaskFilter(direction, light, specular, blur);

    Paint paint=new Paint();
    paint.setAntiAlias(true);
    paint.setColor(Color.GREEN);
    paint.setStyle(Paint.Style.FILL);
    paint.setTextSize(70);
    paint.setStrokeWidth(8);
    paint.setMaskFilter(emboss);

    paint.setMaskFilter(emboss);
    canvas.drawText("最喜欢兰了!!",50,100,paint);

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    canvas.drawBitmap(bitmap,150,200,paint);

    setLayerType(View.LAYER_TYPE_SOFTWARE,null); //关闭硬件加速


    构造方法为:EmbossMaskFilter emboss = new EmbossMaskFilter(direction, light, specular, blur);
    其中4个参数:
    第一个参数:direction 代表光源的方向,一个float类型的集合 用于控制x,y,z的光源方向
    第二个参数:light 表示环境光亮度,0到1之间
    第三个参数:specular 定义的镜面反射系数
    第四个参数:blur 模糊半径

    注意事项:
    使用MaskFilter时注意,当targetSDKVersion>=14的时候,MaskFilter就不会起效果了。Android在API14以上版本默认开启硬件加速。
    一般的关闭方法。
    Application :在配置文件的application节点添加:android:hardwareAccelerated=‘true’
    Activity:在配置文件的activity节点添加android:hardwareAccelerated=‘false’
    View:获取View对象调用或者直接在onDraw方法里设置 view.setLayerType(View.LAYER_TYPE_HARDWARE,null);








  • 相关阅读:
    【hdu4285】 circuits
    java代码获取ip地址
    java覆写hashcode方法
    java覆写equals方法
    Linux下Apache服务器并发优化
    异常:cvc-complex-type.2.4.a: Invalid content was found starting with element
    SpringMVC请求访问不到静态文件解决方式
    mina教程
    分布式session
    jsp自定义标签
  • 原文地址:https://www.cnblogs.com/fuccc/p/6379507.html
Copyright © 2020-2023  润新知