仿QQ消息提醒 小紅點(diǎn) 的實(shí)現(xiàn)

本次使用的框架是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)即可

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容