前言
好长时间没有更新简书了,今天就讲个实现未读消息小圆点的功能。以前我们实现这个功能都是用 BadgeView.java,大体就是将这个java类复制到自己的项目中,然后在项目中使用,今天讲的也是一款BadgeView,它有什么不同呢,下面作以讲解。
- “新“BadgeView的优点
- BadgeView 库的导入
- BadgeView的使用
- BadgeView的封装类Badgetor
- Badgetor在activity中的使用
- 效果图
一. “新“BadgeView的优点
今天要介绍的BadgeView相比于以前的BadgeView有以下优点:
- 不需要引入大量的代码,直接引入库
- 在设置小圆点相对位置的时候更加简单
二. BadgeView 库的导入
需要导入库,在app的build.gradle中添加依赖:
//小圆点
implementation 'q.rorbin:badgeview:1.1.3'
若以上导入失败,可能是 implementation 关键字的原因,可改成以下代码重新导入:
//小圆点
compile 'q.rorbin:badgeview:1.1.3'
三. BadgeView的使用
3.1 BadgeView初始化
QBadgeView qBadgeView=new QBadgeView(context);
3.2 在view上显示小圆点
qBadgeView.bindTarget(view);
3.3 小圆点显示文字
qBadgeView.setBadgeText("我是水");
3.4 在小圆点上显示数字
qBadgeView.setBadgeNumber(count);
3.5 设置是否为精确模式数
设置为false时,当消息数>99,则显示99+,若设置为true,当消息数>99,则显示具体的消息数
qBadgeView.setExactMode(false);//设置是否显示精确模式数值
3.6 qBadgeView的隐藏
当设置为true时表示使用消失动画,为false时则消失不伴随动画效果
mQBadgeView.hide(true);//隐藏Badge
3.6 qBadgeView的拖曳效果及监听
需要注意的是只有当设置了拖曳监听才会有拖曳效果
//打开拖拽消除模式并设置监听
mQBadgeView.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
@Override
public void onDragStateChanged(int dragState, Badge badge, View targetView) {
}
});
3.7 更多属性
qBadgeView还有更多属性,如设置文字大小,文字颜色,是否显示精确模式数值,设置Badge相对于TargetView的位置,设置外边距,设置内边距,设置背景色,设置背景图片,设置是否显示阴影,设置描边效果。由于特性太多,此处不做详细讲解。
四.BadgeView的封装
我将BadgeView封装成了一个工具类Badgetor(我会在本篇文章的评论中贴出demo链接,有需要的可以看下),下面就来讲讲Badgetor的使用方法。
4.1 设置一个显示数字的小圆点
public void showNumPoint(View targetView, int count, Context context);
其中,targetView为你要设置显示小圆点的view。count为要显示的数字。
4.2 获取小圆点上的数字
public int getPointNum();
4.3 显示文字小圆点
public void showTextPoint(View targetView, String text, Context context);
4.4 获取小圆点上的文字
public String getPointText()
4.5 隐藏小圆点
public void hideBadgeView();
4.6 打开拖拽消除模式并设置监听
注:只有当设置了拖曳监听才会有拖曳效果
public void setOnDragStateChangedListener(Badge.OnDragStateChangedListener listener);
4.7 设置文字大小
public void setTextSize(float textSize);
4.8 设置文字颜色
public void setTextColor(int textColor);
4.9 设置是否显示精确数值
public void setExactMode(boolean exactMode);
4.10 设置BadgeView相对view的位置
public void setGravity(int gravity)
4.11 设置外边距
public void setOffset(float offset)
4.12 设置内边距
public void setPadding(float padding)
4.13 设置背景色
public void setBackgroundColor(int backgroundColor)
4.14 设置背景图片
public void setBackgroundDrawable(Drawable backgroundDrawable)
4.15 设置阴影
public void setShadow(boolean shadow)
4.16 设置描边属性
public void setStoke(boolean stoke,int color,int width)
4.17 设置是否开启隐藏动画
public void setAnimate(boolean animate)
五. Badgetor 在activity中的使用样例
Badgetor.getInstance().setExactMode(true);
Badgetor.getInstance().showNumPoint(mTvTest,190,MainActivity.this);