当前位置: 移动技术网 > 移动技术>移动开发>Android > Android消息个数提醒控件使用详解

Android消息个数提醒控件使用详解

2019年07月24日  | 移动技术网移动技术  | 我要评论

前言

在qq中有消息个数提醒的控件,虽然现在没用到,但是以后可能会用到,所以就实现它,也不难。

实现

效果图如下:

这里写图片描述

先贴源码了:

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还要自己去画数字,这样就增加了难度,不值得了。

源码下载点击。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网