美文网首页
仿QQ消息提醒 小红点 的实现

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

作者: 番茄tomato | 来源:发表于2019-08-26 10:10 被阅读0次

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

    相关文章

      网友评论

          本文标题:仿QQ消息提醒 小红点 的实现

          本文链接:https://www.haomeiwen.com/subject/bvzlectx.html