本次使用的框架是BadgeView首先奉上github鏈接:
https://github.com/qstumn/BadgeView
效果是這樣:

圖片1.jpg
認(rèn)真做可以作出這樣,我們就簡(jiǎn)單點(diǎn),用一個(gè)TextView來(lái)實(shí)現(xiàn):
導(dǎo)入
implementation 'q.rorbin:badgeview:1.1.3'
布局是這樣的一個(gè)TextView里邊一個(gè)Order字符串(訂單),然后paddingTop和paddingRigeh分別為20dp和30dp(為小紅點(diǎn)預(yù)留位置),紅點(diǎn)默認(rèn)在右上角。

image.png
那么開(kāi)始了:
在Activity中建立兩個(gè)對(duì)象:
@BindView(R.id.tv_order)
TextView tv_order;
//設(shè)置一個(gè)提示紅點(diǎn)對(duì)象 用到幾個(gè)設(shè)置幾個(gè) 多了可以用list<Badge>
private Badge badge;
//在onCreat中先new出這個(gè)對(duì)象
badge = new QBadgeView(this);
建立setBadgeNumber方法:形參可以自己加,比如修改brage或者修改textview等待,在合適的地方調(diào)用,顯示消息數(shù),比如網(wǎng)絡(luò)請(qǐng)求后等等
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) {
//拖動(dòng)消失但不做任何監(jiān)聽(tīng)事件動(dòng)作
}
});
} 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) {
//拖動(dòng)消失但不做任何監(jiān)聽(tīng)事件動(dòng)作
}
});
} else {//如果數(shù)字為0則不顯示提示紅點(diǎn)
Log.d("主頁(yè)面訂單數(shù)量", "數(shù)量為0 隱藏");
badge.hide(false);//false 不設(shè)置消失動(dòng)畫(huà)
}
}
現(xiàn)在就可以使用了 至于方法中badge “點(diǎn)” 出來(lái)的一堆設(shè)置屬性方法的功能作用,github上寫(xiě)的很清楚,請(qǐng)移步過(guò)去看
多嘴一句:
這里的badge.hide(false)后,并沒(méi)有對(duì)應(yīng)的badge.show()方法,需要重新顯示badge的話,只需要再次調(diào)用setBadgeNumber(number)即可