1. 程式人生 > 程式設計 >Android如何繪製發光效果詳解

Android如何繪製發光效果詳解

前言

之前在看別人寫自定義view作繪製的時候,看到別人家的view自帶發光效果,看起來也是蠻炫酷的,於是自己也抽出時間來試用一下,這裡做了一個模仿太陽的各種狀態樣式。

先上效果先上效果:

Android如何繪製發光效果詳解

實現方式:

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如何繪製發光效果的文章就介紹到這了,更多相關Android繪製發光效果內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!