Android實(shí)現(xiàn)繪制發(fā)光效果
先上效果先上效果:

實(shí)現(xiàn)方式:
public?BlurMaskFilter(float?radius,?Blur?style)?float radius ?設(shè)置模糊半徑
Blur style ? 設(shè)置發(fā)光樣式,包括
Blur.INNER(內(nèi)發(fā)光),Blur.NORMAL(內(nèi)外發(fā)光)
Blur.SOLID(外發(fā)光),Blur.OUTER(僅外發(fā)光可見)
貼上代碼:
public class MaskFilterView extends View {private Paint lightPaint;private int centerX, centerY;/** 發(fā)光范圍 */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);}}
評(píng)論
圖片
表情
