前言
好長時間沒有更新簡書了,今天就講個實現(xiàn)未讀消息小圓點的功能刃跛。以前我們實現(xiàn)這個功能都是用 BadgeView.java俭尖,大體就是將這個java類復(fù)制到自己的項目中哑了,然后在項目中使用舱馅,今天講的也是一款BadgeView缰泡,它有什么不同呢,下面作以講解代嗤。
- “新“BadgeView的優(yōu)點
- BadgeView 庫的導(dǎo)入
- BadgeView的使用
- BadgeView的封裝類Badgetor
- Badgetor在activity中的使用
- 效果圖
一. “新“BadgeView的優(yōu)點
今天要介紹的BadgeView相比于以前的BadgeView有以下優(yōu)點:
- 不需要引入大量的代碼棘钞,直接引入庫
- 在設(shè)置小圓點相對位置的時候更加簡單
二. BadgeView 庫的導(dǎo)入
需要導(dǎo)入庫,在app的build.gradle中添加依賴:
//小圓點
implementation 'q.rorbin:badgeview:1.1.3'
若以上導(dǎo)入失敗,可能是 implementation 關(guān)鍵字的原因,可改成以下代碼重新導(dǎo)入:
//小圓點
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 在小圓點上顯示數(shù)字
qBadgeView.setBadgeNumber(count);
3.5 設(shè)置是否為精確模式數(shù)
設(shè)置為false時干毅,當(dāng)消息數(shù)>99,則顯示99+宜猜,若設(shè)置為true,當(dāng)消息數(shù)>99硝逢,則顯示具體的消息數(shù)
qBadgeView.setExactMode(false);//設(shè)置是否顯示精確模式數(shù)值
3.6 qBadgeView的隱藏
當(dāng)設(shè)置為true時表示使用消失動畫姨拥,為false時則消失不伴隨動畫效果
mQBadgeView.hide(true);//隱藏Badge
3.6 qBadgeView的拖曳效果及監(jiān)聽
需要注意的是只有當(dāng)設(shè)置了拖曳監(jiān)聽才會有拖曳效果
//打開拖拽消除模式并設(shè)置監(jiān)聽
mQBadgeView.setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {
@Override
public void onDragStateChanged(int dragState, Badge badge, View targetView) {
}
});
3.7 更多屬性
qBadgeView還有更多屬性,如設(shè)置文字大小渠鸽,文字顏色叫乌,是否顯示精確模式數(shù)值,設(shè)置Badge相對于TargetView的位置徽缚,設(shè)置外邊距憨奸,設(shè)置內(nèi)邊距,設(shè)置背景色凿试,設(shè)置背景圖片排宰,設(shè)置是否顯示陰影,設(shè)置描邊效果那婉。由于特性太多板甘,此處不做詳細講解。
四.BadgeView的封裝
我將BadgeView封裝成了一個工具類Badgetor(我會在本篇文章的評論中貼出demo鏈接详炬,有需要的可以看下)盐类,下面就來講講Badgetor的使用方法。
4.1 設(shè)置一個顯示數(shù)字的小圓點
public void showNumPoint(View targetView, int count, Context context);
其中呛谜,targetView為你要設(shè)置顯示小圓點的view傲醉。count為要顯示的數(shù)字。
4.2 獲取小圓點上的數(shù)字
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 打開拖拽消除模式并設(shè)置監(jiān)聽
注:只有當(dāng)設(shè)置了拖曳監(jiān)聽才會有拖曳效果
public void setOnDragStateChangedListener(Badge.OnDragStateChangedListener listener);
4.7 設(shè)置文字大小
public void setTextSize(float textSize);
4.8 設(shè)置文字顏色
public void setTextColor(int textColor);
4.9 設(shè)置是否顯示精確數(shù)值
public void setExactMode(boolean exactMode);
4.10 設(shè)置BadgeView相對view的位置
public void setGravity(int gravity)
4.11 設(shè)置外邊距
public void setOffset(float offset)
4.12 設(shè)置內(nèi)邊距
public void setPadding(float padding)
4.13 設(shè)置背景色
public void setBackgroundColor(int backgroundColor)
4.14 設(shè)置背景圖片
public void setBackgroundDrawable(Drawable backgroundDrawable)
4.15 設(shè)置陰影
public void setShadow(boolean shadow)
4.16 設(shè)置描邊屬性
public void setStoke(boolean stoke,int color,int width)
4.17 設(shè)置是否開啟隱藏動畫
public void setAnimate(boolean animate)
五. Badgetor 在activity中的使用樣例
Badgetor.getInstance().setExactMode(true);
Badgetor.getInstance().showNumPoint(mTvTest,190,MainActivity.this);