####前言

以前我们实现这个功能都是用 BadgeView.java,大体就是将这个java类复制到自己的项目中,然后在项目中使用,今天讲的也是一款BadgeView,我将其封装称工具类Badgetor,下面作以讲解。

1. “新“BadgeView的优点

2. BadgeView 库的导入

3. BadgeView的封装类Badgetor

4. Badgetor在activity中的使用

5. 效果图和项目结构图

##### 一. “新“BadgeView的优点

今天要介绍的BadgeView相比于以前的BadgeView有以下优点:

1. 不需要引入大量的代码,直接引入库

2. 在设置小圆点相对位置的时候更加简单

##### 二. BadgeView 库的导入

需要导入库,在app的build.gradle中添加依赖:

```

//小圆点

implementation 'q.rorbin:badgeview:1.1.3'

```

若以上导入失败,可能是 implementation 关键字的原因,可改成以下代码重新导入:

```

//小圆点

compile 'q.rorbin:badgeview:1.1.3'

```

##### 三. BadgeView的封装类Badgetor的使用

我将 "新"BadgeView特性封装称一个工具类Badgetor,下面对其使用做以讲解。

######3.1 设置一个显示数字的小圆点

```

public void showNumPoint(View targetView, int count, Context context);

```

其中,targetView为你要设置显示小圆点的view。count为要显示的数字。

######3.2 获取小圆点上的数字

```

public int getPointNum();

```

######3.3 显示文字小圆点

```

public void showTextPoint(View targetView, String text, Context context);

```

######3.4 获取小圆点上的文字

```

public String getPointText()

```

######3.5 隐藏小圆点

```

public void hideBadgeView();

```

######3.6 打开拖拽消除模式并设置监听

注:只有当设置了拖曳监听才会有拖曳效果

```

public void setOnDragStateChangedListener(Badge.OnDragStateChangedListener listener);

```

######3.7 设置文字大小

默认文字大小为 8sp

```

public void setTextSize(float textSize);

```

######3.8 设置文字颜色

默认白色

```

public void setTextColor(int textColor);

```

######3.9 设置是否显示精确数值

默认不显示精确度,即当数字超过100的时候,在小圆点上显示 99+

```

public void setExactMode(boolean exactMode);

```

######3.10 设置BadgeView相对view的位置

默认为显示在tagetView右上角

```

public void setGravity(int gravity)

```

######3.11 设置外边距

默认外边距为 2dp

```

public void setOffset(float offset)

```

######3.12 设置内边距

默认内边距为 2dp

```

public void setPadding(float padding)

```

######3.13 设置背景色

默认背景色为红色

```

public void setBackgroundColor(int backgroundColor)

```

######3.14 设置背景图片

```

public void setBackgroundDrawable(Drawable backgroundDrawable)

```

######3.15 设置阴影

```

public void setShadow(boolean shadow)

```

######3.16 设置描边属性

```

public void setStoke(boolean stoke,int color,int width)

```

######3.17 设置是否开启隐藏动画

默认动画效果开启

```

public void setAnimate(boolean animate)

```

##### 四. Badgetor在activity中的使用

######4.1 在MainActivity中的使用样例

```

package com.android.testdemo.main;

import android.graphics.Color;

import android.view.Gravity;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import com.android.testdemo.R;

import com.android.testdemo.base.BaseActivity;

import butterknife.BindView;

import q.rorbin.badgeview.Badge;

public class MainActivity extends BaseActivity{

@BindView(R.id.button1)

Button mBtnText;

@BindView(R.id.tv_test)

TextView mTvTest;

@Override

protected int getContentViewId() {

return R.layout.activity_main;

}

@Override

protected void initData() {

//设置文字大小8sp

Badgetor.getInstance().setTextSize(8);

//设置文字颜色

Badgetor.getInstance().setTextColor(Color.parseColor("#ffffff"));

//设置精确数值,只有设置数字的时候才生效,false时当数字大于99时显示99+,true时数字大于99时显示实际数字

Badgetor.getInstance().setExactMode(true);

//设置BadgeView相对mTvTest的位置,右上角

Badgetor.getInstance().setGravity(Gravity.RIGHT|Gravity.TOP);

//设置外边距2dp

Badgetor.getInstance().setOffset(2);

//设置内边距2dp

Badgetor.getInstance().setPadding(2);

//设置背景色

Badgetor.getInstance().setBackgroundColor(Color.parseColor("#ff0000"));

//不设置背景图片

Badgetor.getInstance().setBackgroundDrawable(null);

//开启动画效果

Badgetor.getInstance().setAnimate(true);

//显示数字

Badgetor.getInstance().showNumPoint(mTvTest,190,MainActivity.this);

//获取数字

int count=Badgetor.getInstance().getPointNum();

// //显示文字

// Badgetor.getInstance().showTextPoint(mTvTest, "大家好", MainActivity.this);

// //获取文字

// String message=Badgetor.getInstance().getPointText();

}

@Override

protected void setListener() {

mBtnText.setOnClickListener(this);

Badgetor.getInstance().setOnDragStateChangedListener(new Badge.OnDragStateChangedListener() {

@Override

public void onDragStateChanged(int dragState, Badge badge, View targetView) {

//此处处理拖曳结束后的逻辑

//......

}

});

}

@Override

public void onClick(View v) {

super.onClick(v);

switch (v.getId()) {

case R.id.button1:

//隐藏小圆点

Badgetor.getInstance().hideBadgeView();

break;

default:

break;

}

}

}

```

######4.2 activity_main.xml布局

```

```

##### 五. 效果图和项目结构图

>项目运行效果图

![](/contentImages/image/20180709/draDTkKnLzM7RbNa8Yu.gif)

>项目结构图

![](/contentImages/image/20180709/iAfn6a6QQHckwt2xYIV.png)

Android已读未读功能,Android实现小圆点显示未读功能相关推荐

  1. Android实现小圆点显示未读功能

    代码地址如下: http://www.demodashi.com/demo/13541.html ####前言 以前我们实现这个功能都是用 BadgeView.java,大体就是将这个java类复制到 ...

  2. android 小白点代码,Android实现小圆点显示未读功能

    ####前言 以前我们实现这个功能都是用 BadgeView.java,大体就是将这个java类复制到自己的项目中,然后在项目中使用,今天讲的也是一款BadgeView,我将其封装称工具类Badget ...

  3. (已更新)运势运程小程序v1.2.0 功能模块+微信小程序+前端+后端+新增每日星座卡片

    运势运程算命小程序 v1.2.0 完整版+微信小程序+前端+后端 运势运程算命小程序开源源码最新更新日志: 新增测算栏目支付成功模版消息提醒,增加留存率.新增每日星座卡片.单向历,请求缓存解决请求慢问 ...

  4. 为什么有网络微信却显示未连接服务器,设备公众号显示未连接,为什么公众号设备显示未连接?...

    设备公众号显示未连接,为什么公众号设备显示未连接?这是什么原因呢?下面跟着小编一起来看一看微信公众号暂时无法提供服务的解决方法吧! 设备公众号显示未连接,使用微信公众平台的朋友都遇到过,给微信公众号发 ...

  5. html点击圆点箭头分页,点击自动轮播图片下面的小圆点实现图片切换功能,并不是左右箭头那种切换...

    我这个轮播图片没有左右箭头,只有下面的小圆点随着图片一起轮播,怎么实现onclick点击小圆点切换图片的功能 这是我的js代码 var nextPcc = 1; function turnDispla ...

  6. 导入微信小程序显示未选择环境或未指定环境,解决办法

    导入微信小程序显示未选择环境或未指定环境 如下图所示: 解决办法:重新导入,选择云开发(需删掉以前的导入记录) 1.点击云开发申请通过 2.右键cloudfuncrions, 3.点击同步云函数列表 ...

  7. Android 10.0 Launcher3 电话和短信app图标显示未读短信和未接来电的条数

    最近客户有需求要求在电话app图标显示未接来电的条数 在短信app图标上显示未读信息的条数 根据需求首选要在Launcher3的Launcher.java中,启动launcher时,查询未读短信和未接 ...

  8. 自定义RadioButton实现右上角有小圆点和未读数字条数

    故事背景:就是瞎写写,项目里有用到 先看看图片 import android.content.Context; import android.graphics.Canvas; import andro ...

  9. android已停止三星,急,android离线打包程序三星下总报 程序 已停止

    解开锁屏后,就看到 图片所示的 程序 已停止的提示框,logcat显示如下 11-27 15:33:33.725: I/AndroidRuntime(24861): VM exiting with r ...

最新文章

  1. Oracle中INSTR和SUBSTR的用法
  2. 二十、SPI设备驱动及应用(一)
  3. 李宏毅线性代数笔记2: 线性方程组和数域
  4. Coursera公开课笔记: 斯坦福大学机器学习第四课“多变量线性回归(Linear Regression with Multiple Variables)”
  5. 程序员的中场职业规划
  6. 学习3D游戏开发进阶之路
  7. 《守墓人》主程:如何用像素风做出真实的游戏世界
  8. 在ubuntu上mysql出现ERROR 1045(28000):Access denied for user ‘young‘@’localhost‘(using password:NO)...
  9. 《程序员代码面试指南》第三章 二叉树问题 二叉树节点间的最大距离问题
  10. 如何通向“广义人工智能”?LSTM 提出者之一Sepp Hochreiter:将符号 AI 与神经 AI 相结合...
  11. 电源变换适用于非独立源码_适用于非None测试的Python程序
  12. ESDF建图库voxblox的安装编译过程
  13. mysql查询缓存优化配置_mysql 优化之查询高速缓冲配置 小记
  14. Storm之路-WordCount-实例
  15. 如何上好网课 — 老师录课和在线上课教学经验谈
  16. BZOJ 3668: [Noi2014]起床困难综合症【二进制+贪心】
  17. 编程判断元素归类_编程:找出所有符合条件的元素
  18. RuntimeError: Sizes of tensors must match except in dimension 2. Got 5 and 4
  19. 51单片机入门——矩阵键盘(附51代码)
  20. VS Code 自动保存设置及不成功原因

热门文章

  1. 多行溢出文字省略号显示(HTML、CSS)
  2. 字体系统之字体粗细(CSS、HTML)
  3. html选择器 并列,CSS 中的选择器 (二)- 组合选择器
  4. Codeforces Round #565 (Div. 3) B. Merge it!
  5. 这款折纸机器人玩具,可以帮助孩子学习编程和Robot知识
  6. java反射优化_JAVA反射优化
  7. Android自动化测试01-环境安装连接问题及解决
  8. python list突破上限武器_Python3 tkinter基础 Listbox height 显示行数的上限
  9. 商户权限表mysql_MySQL 事务之 Yii2.0 商户提现
  10. Ubuntu18.04安装CUDA10.1和cuDNN v7.6.5