Android实现绘制发光效果
先上效果先上效果:

实现方式:
public BlurMaskFilter(float radius, Blur style) float radius 设置模糊半径
Blur style 设置发光样式,包括
Blur.INNER(内发光),Blur.NORMAL(内外发光)
Blur.SOLID(外发光),Blur.OUTER(仅外发光可见)
贴上代码:
public class MaskFilterView extends View {private Paint lightPaint;private int centerX, centerY;/** 发光范围 */private int radioRadius = 70;public MaskFilterView(Context context) {super(context);init();}public MaskFilterView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init();}private void init() {lightPaint = new Paint();setLayerType(LAYER_TYPE_SOFTWARE, null);lightPaint.setColor(Color.parseColor("#EC3E3E"));lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.INNER));}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {centerX = getLeft() + getMeasuredWidth()/2;centerY = getTop() + getMeasuredHeight()/2;super.onMeasure(widthMeasureSpec, widthMeasureSpec);}public void setBlurType(int blurType) {switch (blurType) {case 0:lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.INNER));break;case 1:lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.NORMAL));break;case 2:lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.SOLID));break;case 3:lightPaint.setMaskFilter(new BlurMaskFilter(radioRadius, BlurMaskFilter.Blur.OUTER));break;}invalidate();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawCircle(centerX, centerY, 150, lightPaint);}}
评论
