失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > android canvas光晕绘制_Android 绘制发光效果

android canvas光晕绘制_Android 绘制发光效果

时间:2018-12-25 02:05:54

相关推荐

android canvas光晕绘制_Android 绘制发光效果

之前在看别人写自定义view作绘制的时候,看到别人家的view自带发光效果,看起来也是蛮炫酷的,于是自己也抽出时间来试用一下,这里做了一个模仿太阳的各种状态样式。

先上效果先上效果:

实现方式:

public BlurMaskFilter(float radius, Blur style) {

实现是使用的Paint类的setMaskFilter()方法,传入BlurMaskFilter对象实现高斯模糊发光。

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));

}

@Override

protected 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();

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawCircle(centerX, centerY, 150, lightPaint);

}

}

如果觉得《android canvas光晕绘制_Android 绘制发光效果》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。