仿QQ消息提醒 小红点 的实现

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

你可能感兴趣的:(仿QQ消息提醒 小红点 的实现)