对于Paint没有很好的深入的学习过,在工作之余再巩固巩固。
1.Paint的BlurMaskFilter(模糊效果)
自定义一个View继承View 重写里面的onDraw方法。这里直接上代码了:
@Overrideprotected 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);
时间: 2024-10-09 04:12:44