本次使用的框架是BadgeView首先奉上github链接:
https://github.com/qstumn/BadgeView
效果是这样:
图片1.jpg
认真做可以作出这样,我们就简单点,用一个TextView来实现:
导入
implementation 'q.rorbin:badgeview:1.1.3'
布局是这样的一个TextView里边一个Order字符串(订单),然后paddingTop和paddingRigeh分别为20dp和30dp(为小红点预留位置),红点默认在右上角。
image.png
那么开始了:
在Activity中建立两个对象:
@BindView(R.id.tv_order)
TextView tv_order;
//设置一个提示红点对象 用到几个设置几个 多了可以用list<Badge>
private Badge badge;
//在onCreat中先new出这个对象
badge = new QBadgeView(this);
建立setBadgeNumber方法:形参可以自己加,比如修改brage或者修改textview等待,在合适的地方调用,显示消息数,比如网络请求后等等
void setBadgeNumber(int number) {
if (number > 0) {
Log.d("提示音", "播放");
playNotification();
}
if (number > 0 && number <= 99) {
badge.bindTarget(tv_order)
.setBadgeNumber(number)
.setBadgeTextSize(18, true)
.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
@Override
public void onDragStateChanged(int dragState, Badge badge, View targetView) {
//拖动消失但不做任何监听事件动作
}
});
} else if (number > 99) {
badge.bindTarget(tv_order)
.setBadgeText("99+")
.setBadgeTextSize(18, true)
.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
@Override
public void onDragStateChanged(int dragState, Badge badge, View targetView) {
//拖动消失但不做任何监听事件动作
}
});
} else {//如果数字为0则不显示提示红点
Log.d("主页面订单数量", "数量为0 隐藏");
badge.hide(false);//false 不设置消失动画
}
}
现在就可以使用了 至于方法中badge “点” 出来的一堆设置属性方法的功能作用,github上写的很清楚,请移步过去看
多嘴一句:
这里的badge.hide(false)
后,并没有对应的badge.show()
方法,需要重新显示badge的话,只需要再次调用setBadgeNumber(number)即可
网友评论