一起Talk Android吧(第四百二十二回:绘图中添加发光效果)

各位看官们,大家好,上一回中咱们说的例子是"绘图中添加阴影",这一回咱们介绍的例子是"绘图中添加发光效果"。闲话休提,言归正转,让我们一起Talk Android吧!

使用背景

看官们,我们在上一章回中介绍了如何在绘图中添加阴影,阴影的原理就是在原图的x和y轴方向偏移一段位置来显示原图,如果我们想在原图的四个方向上都做偏移,那么就会生产发光效果,这种效果类似太阳发出光芒的效果。本章回中我们将介绍如何在绘图中添加发光效果。

添加方法

首先给画笔设置发光效果,然后使用此画笔来绘制图形,使用此画笔绘制的图形就带上了发光效果。画笔使用Paint类表示,该类提供了setMaskFilter()方法来设置
发光效果。我们需要给该方法传递BlurMaskFilter类型的对象来控件发光效果,具体的代码如下:

BlurMaskFilter blurMaskFilter = new BlurMaskFilter(90, BlurMaskFilter.Blur.INNER);
mArcPaint.setMaskFilter(blurMaskFilter);

在创建BlurMaskFilter对象时传递了两个参数,第一个参数是发光的半径,发光效果和阴影效果一样,也使用了高斯模糊算法,这个半径主要用来控制发光时的模糊效果,它的值越大,图形越模糊。第二个参数用来控制发光的方式,它是一个枚举值,详细的值和含义如下:

public static enum Blur {
    NORMAL,  //内外同时发光
    SOLID,   //外发光
    OUTER,   //只有发光效果,忽略图形效果
    INNER;   //内发光
}

示例代码

下面是一个示例代码,请大家参考:

private void drawShineEffect(Canvas canvas) {
    //早期版本需要关闭硬件加速,新版本(Android12)上不需要,关闭硬件加速后反而无法显示绘图效果
//        setLayerType(View.LAYER_TYPE_SOFTWARE,null);
    //此类型的对象用来发光的方式
    BlurMaskFilter blurMaskFilter = new BlurMaskFilter(90, BlurMaskFilter.Blur.INNER);
    mArcPaint.setMaskFilter(blurMaskFilter);
    mArcPaint.setAntiAlias(true);
    mArcPaint.setColor(Color.WHITE);
    //使用填充效果看的更加明显一些
    mArcPaint.setStyle(Paint.Style.FILL);
    canvas.drawCircle(500,500,200,mArcPaint);
}

我们在代码中把画笔设置了填充模式,这样更加方便观察发光效果。代码中画了一个白色的圆形,它的运行效果类似太阳,有明显的发光效果。我在这里就不演示运行效果了,建议大家自己动手去实践,可以把发光模式修改一下,体验一下不同发光模式下的发光效果。

看官们,关于Android中"绘图中添加发光效果"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值