91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android消息個數提醒控件使用詳解

發布時間:2020-08-28 06:20:33 來源:腳本之家 閱讀:162 作者:潘建成 欄目:移動開發

前言

在QQ中有消息個數提醒的控件,雖然現在沒用到,但是以后可能會用到,所以就實現它,也不難。

實現

效果圖如下:

Android消息個數提醒控件使用詳解

先貼源碼了:

public class TipNumberView extends TextView {

  private Paint mBgPaint ;
  PaintFlagsDrawFilter pfd; 
  public TipNumberView(Context context, AttributeSet attrs) {
    super(context, attrs);
    //初始化畫筆
    mBgPaint = new Paint();
    mBgPaint.setColor(Color.RED);
    mBgPaint.setAntiAlias(true);

    pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); 
  }
  public TipNumberView(Context context) {
    this(context,null);

  }
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    //得到測量的高度和寬度
    int measuredWidth = getMeasuredWidth();
    int measuredHeight = getMeasuredHeight();
    int max = Math.max(measuredWidth, measuredHeight);
    //設置控件區域大小
    setMeasuredDimension(max, max);
  }

  //設置背景顏色
  @Override
  public void setBackgroundColor(int color){
    mBgPaint.setColor(color);
  }

  /**
   * 設置通知個數顯示
   * @param text
   */
  public void setNotifiText(int text){
    setText(text+"");
  }

  public void setNotifiText(String text){
    setText(text);
  }

  //繪圖
  @Override
  public void draw(Canvas canvas) {
    //設置繪圖無鋸齒
    canvas.setDrawFilter(pfd);
    canvas.drawCircle(getWidth()/2, getHeight()/2, Math.max(getWidth()/2, getHeight())/2, mBgPaint);
    super.draw(canvas);
  }
}

我是直接繼承至TextView,因為TextView有setText方法,所以只需要繪制圓形的紅色背景,然后調用方法setText即可,這就是實現的思路。

先要覆蓋onMeasure方法來得到寬度和高度,因為背景為圓形,所以我們取寬度和高度兩者之間的最大值,然后設置控件大小為一個正方形,在這個正方形的矩形里面,調用drawCircle方法來繪制圓形,設置畫筆的顏色為紅色即可。

小結

在布局文件使用這個類的時候,要設置android:gravity為center,這樣數字就可以居中了,之所以沒有繼承View來進行寫,因為View還要自己去畫數字,這樣就增加了難度,不值得了。

源碼下載點擊這里。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渑池县| 道真| 施甸县| 嘉义县| 古浪县| 溧水县| 报价| 湘阴县| 台南县| 呼玛县| 彭州市| 鄯善县| 昌江| 图们市| 柳江县| 玛多县| 尉犁县| 措美县| 德令哈市| 哈巴河县| 芮城县| 玉树县| 襄樊市| 东阿县| 沙河市| 曲麻莱县| 宜州市| 新化县| 安新县| 淳化县| 太和县| 霸州市| 北流市| 无极县| 孟津县| 台南县| 闵行区| 双牌县| 贵阳市| 昌平区| 柘城县|