优秀移动端网站,网站建设管理工作范文,88个seo网站优化基础知识点,tomcat加jsp做网站MaskFilter
作用对象#xff1a;MaskFilter 主要用于Paint的外观效果#xff0c;给用Paint绘制的内容添加模糊或者浮雕效果应用效果#xff1a; MaskFilter 处理位图的遮罩效果#xff0c;影响绘制的边缘或整体形状主要用于模糊处理、浮雕效果等#xff0c;通过影响绘制对…MaskFilter
作用对象MaskFilter 主要用于Paint的外观效果给用Paint绘制的内容添加模糊或者浮雕效果应用效果 MaskFilter 处理位图的遮罩效果影响绘制的边缘或整体形状主要用于模糊处理、浮雕效果等通过影响绘制对象的边缘来实现 常用子类 BlurMaskFilter实现模糊效果可以设置不同的模糊样式NORMAL、SOLID、OUTER、INNER EmbossMaskFilter创建浮雕效果通过设置光源方向、环境光强度等来实现
BlurMaskFilter模糊遮罩滤镜
Java源码
public class BlurMaskFilter extends MaskFilter {public enum Blur {/*** Blur inside and outside the original border.*/NORMAL(0),/*** Draw solid inside the border, blur outside.*/SOLID(1),/*** Draw nothing inside the border, blur outside.*/OUTER(2),/*** Blur inside the border, draw nothing outside.*/INNER(3);Blur(int value) {native_int value;}final int native_int;}/*** Create a blur maskfilter.** param radius The radius to extend the blur from the original mask. Must be 0.* param style The Blur to use* return The new blur maskfilter*/public BlurMaskFilter(float radius, Blur style) {native_instance nativeConstructor(radius, style.native_int);}private static native long nativeConstructor(float radius, int style);
}构造函数详解 radius模糊半径 类型float作用指定模糊的强度。值越大模糊效果越明显。描述模糊半径决定了模糊的范围单位通常是像素。较小的值会产生轻微的模糊而较大的值会导致显著的模糊效果。 style模糊样式 类型BlurMaskFilter.Blur作用决定模糊的应用方式即模糊效果的样式。可用值 Blur.NORMAL描述模糊内外边框绘制内容。适用于需要整体柔和模糊效果的场景Blur.SOLID描述模糊内外边框不模糊绘制内容。适用于增强物体的边缘Blur.OUTER描述只模糊外边框不模糊内边框内边框内的绘制内容透明显示。适用于突出物体本身Blur.INNER描述只模糊内边框不模糊外边框外边框外的绘制内容透明显示。适用于创建内嵌阴影或凹陷效果 XML文件
?xml version1.0 encodingutf-8?
com.example.myapplication.MyViewxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent /自定义View代码
class MyView JvmOverloads constructor(context: Context,attrs: AttributeSet? null,defStyleAttr: Int 0
) : View(context, attrs, defStyleAttr) {private val mDrawPaint: Paint Paint().apply {isDither trueisAntiAlias trueisFilterBitmap truecolor Color.BLUE}private val radius 100fprivate val spacing 500foverride fun onDraw(canvas: Canvas) {super.onDraw(canvas)// Draw circle with NORMAL blurmDrawPaint.maskFilter BlurMaskFilter(20f, BlurMaskFilter.Blur.NORMAL)canvas.drawCircle(spacing, spacing, radius, mDrawPaint)// Draw circle with SOLID blurmDrawPaint.maskFilter BlurMaskFilter(20f, BlurMaskFilter.Blur.SOLID)canvas.drawCircle(spacing , spacing * 2, radius, mDrawPaint)// Draw circle with OUTER blurmDrawPaint.maskFilter BlurMaskFilter(20f, BlurMaskFilter.Blur.OUTER)canvas.drawCircle(spacing , spacing * 3, radius, mDrawPaint)// Draw circle with INNER blurmDrawPaint.maskFilter BlurMaskFilter(20f, BlurMaskFilter.Blur.INNER)canvas.drawCircle(spacing , spacing * 4, radius, mDrawPaint)}
}效果图
EmbossMaskFilter浮雕遮罩滤镜
Java源码
public class EmbossMaskFilter extends MaskFilter {/*** Create an emboss maskfilter** deprecated This subclass is not supported and should not be instantiated.** param direction array of 3 scalars [x, y, z] specifying the direction of the light source* param ambient 0...1 amount of ambient light* param specular coefficient for specular highlights (e.g. 8)* param blurRadius amount to blur before applying lighting (e.g. 3)* return the emboss maskfilter*/Deprecatedpublic EmbossMaskFilter(float[] direction, float ambient, float specular, float blurRadius) {if (direction.length 3) {throw new ArrayIndexOutOfBoundsException();}native_instance nativeConstructor(direction, ambient, specular, blurRadius);}private static native long nativeConstructor(float[] direction, float ambient, float specular, float blurRadius);
}构造函数详解 direction光源方向 类型float[]作用指定光源的方向。描述这是一个长度为 3 的数组分别表示光源在 x、y、z 轴上的方向分量。正常情况下这些值不需要是单位向量但它们定义了光源的相对方向。根据光源的方向浮雕的阴影和高光效果会有所不同 ambient环境光 类型float作用定义环境光的强度范围通常在 0 到 1 之间描述环境光影响整个浮雕效果的亮度。值越大整体效果越亮越小则越暗 specular高光反射系数 类型float作用定义高光的反射强度描述高光反射系数影响浮雕效果中高光部分的亮度。较高的值会使高光更明显较低的值则使高光不明显 blurRadius模糊半径 类型float作用定义浮雕效果的模糊半径描述模糊半径决定了浮雕边缘的模糊程度。较小的值会使浮雕边缘更锐利而较大的值会使边缘更加柔和 XML文件
?xml version1.0 encodingutf-8?
com.example.myapplication.MyViewxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent /自定义View代码
class MyView JvmOverloads constructor(context: Context,attrs: AttributeSet? null,defStyleAttr: Int 0
) : View(context, attrs, defStyleAttr) {private var mPaint: Paint Paint().apply {isAntiAlias truecolor Color.RED // 用红色以更好地展示浮雕效果}private var embossFilter: EmbossMaskFilter? nullinit {// 设置浮雕效果的参数val direction floatArrayOf(1f, 0f, 0f) // 从上方垂直照射光源val ambient 0.6f // 较低的环境光val specular 5f // 较高的高光反射val blurRadius 50f // 适中的模糊半径embossFilter EmbossMaskFilter(direction, ambient, specular, blurRadius)mPaint.maskFilter embossFiltersetLayerType(LAYER_TYPE_SOFTWARE, mPaint)}override fun onDraw(canvas: Canvas) {super.onDraw(canvas)canvas.drawColor(Color.DKGRAY) // 设置深灰色背景以增加对比度// 设置椭圆的矩形边界val left 100fval top 100fval right width - 100fval bottom height - 100f// 绘制椭圆canvas.drawOval(left, top, right, bottom, mPaint)}
}效果图 -