BadgeView的使用介绍

在现在大部分的信息发布类应用,都有这样的一个功能:当后台数据更新,比如有系统消息或者是用户间有互动的时候,通过在控件上显示一个小红点来提示用户有新的信息。一般来说,这种业务需求,我们可以在布局文件中隐藏一个小红点,然后当检测到有数据更新的时候,我们将隐藏的小红点显示即可。但是这种方案,存在一些弊端,比如使用不方便,需要在很多界面添加小红点的布局,而且使用起来不灵活。

今天这篇文章,给大家介绍一个开源第三方控件——BadgeView,来实现相同的功能,而且使用起来非常的方便,非常强大。

先看一下界面效果图

我们可以看到,效果非常棒,各种需求都能满足,而且还可以添加自定义的动画效果,瞬间让你的APP变得高大上!

下面,具体介绍BadgeView的各种效果的使用

[java] view plain copy

  1. // 默认的badge效果
  2. View target = findViewById(R.id.default_target);
  3. BadgeView badge = new BadgeView(this, target);
  4. badge.setText("1");
  5. badge.show();
  6. // 设置位置
  7. btnPosition = (Button) findViewById(R.id.position_target);
  8. badge1 = new BadgeView(this, btnPosition);
  9. badge1.setText("12");
  10. badge1.setBadgePosition(BadgeView.POSITION_BOTTOM_LEFT);
  11. btnPosition.setOnClickListener(new OnClickListener() {
  12. @Override
  13. public void onClick(View v) {
  14. badge1.toggle();
  15. }
  16. });
  17. // 设置显示文本/字体颜色/背景颜色
  18. btnColour = (Button) findViewById(R.id.colour_target);
  19. badge2 = new BadgeView(this, btnColour);
  20. badge2.setText("New!");
  21. badge2.setTextColor(Color.BLUE);
  22. badge2.setBadgeBackgroundColor(Color.YELLOW);
  23. badge2.setTextSize(12);
  24. btnColour.setOnClickListener(new OnClickListener() {
  25. @Override
  26. public void onClick(View v) {
  27. badge2.toggle();
  28. }
  29. });
  30. // 默认动画效果
  31. btnAnim1 = (Button) findViewById(R.id.anim1_target);
  32. badge3 = new BadgeView(this, btnAnim1);
  33. badge3.setText("84");
  34. btnAnim1.setOnClickListener(new OnClickListener() {
  35. @Override
  36. public void onClick(View v) {
  37. badge3.toggle(true);
  38. }
  39. });
  40. // 用户自定义动画
  41. btnAnim2 = (Button) findViewById(R.id.anim2_target);
  42. badge4 = new BadgeView(this, btnAnim2);
  43. badge4.setText("123");
  44. badge4.setBadgePosition(BadgeView.POSITION_TOP_LEFT);
  45. badge4.setBadgeMargin(15);
  46. badge4.setBadgeBackgroundColor(Color.parseColor("#A4C639"));
  47. btnAnim2.setOnClickListener(new OnClickListener() {
  48. @Override
  49. public void onClick(View v) {
  50. // 设置进入的移动动画,设置了插值器,可以实现颤动的效果
  51. TranslateAnimation anim = new TranslateAnimation(-100, 0, 0, 0);
  52. anim.setInterpolator(new BounceInterpolator());
  53. // 设置动画的持续时间
  54. anim.setDuration(1000);
  55. // 设置退出的移动动画
  56. TranslateAnimation anim2 = new TranslateAnimation(0, -100, 0, 0);
  57. anim2.setDuration(500);
  58. badge4.toggle(anim, anim2);
  59. }
  60. });
  61. // 设置用户自定义的背景图片
  62. btnCustom = (Button) findViewById(R.id.custom_target);
  63. badge5 = new BadgeView(this, btnCustom);
  64. badge5.setText("37");
  65. badge5.setBackgroundResource(R.drawable.badge_ifaux);
  66. badge5.setTextSize(16);
  67. btnCustom.setOnClickListener(new OnClickListener() {
  68. @Override
  69. public void onClick(View v) {
  70. badge5.toggle(true);
  71. }
  72. });
  73. // 在tab上显示一个小红点
  74. TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
  75. btnTab = (Button) findViewById(R.id.tab_btn);
  76. badge7 = new BadgeView(this, tabs, 2);
  77. badge7.setText("5");
  78. btnTab.setOnClickListener(new OnClickListener() {
  79. @Override
  80. public void onClick(View v) {
  81. badge7.toggle();
  82. }
  83. });
  84. // 可以被点击的badge
  85. btnClick = (Button) findViewById(R.id.click_target);
  86. badge6 = new BadgeView(this, btnClick);
  87. badge6.setText("click me");
  88. badge6.setBadgeBackgroundColor(Color.BLUE);
  89. badge6.setTextSize(16);
  90. //设置点击事件
  91. badge6.setOnClickListener(new OnClickListener() {
  92. @Override
  93. public void onClick(View v) {
  94. Toast.makeText(DemoActivity.this, "clicked badge",
  95. Toast.LENGTH_SHORT).show();
  96. }
  97. });
  98. btnClick.setOnClickListener(new OnClickListener() {
  99. @Override
  100. public void onClick(View v) {
  101. badge6.toggle();
  102. }
  103. });
  104. // 红点数字可以自增长的badge
  105. btnIncrement = (Button) findViewById(R.id.increment_target);
  106. badge8 = new BadgeView(this, btnIncrement);
  107. badge8.setText("0");
  108. btnIncrement.setOnClickListener(new OnClickListener() {
  109. @Override
  110. public void onClick(View v) {
  111. if (badge8.isShown()) {
  112. badge8.increment(1);
  113. } else {
  114. badge8.show();
  115. }
  116. }
  117. });

上面的代码是用来实现第一张效果图的效果的,下面是第三张效果图的实现

[java] view plain copy

  1. BadgeView badge;
  2. View target;
  3. // *** test linear layout container ***
  4. target = findViewById(R.id.linear_target);
  5. badge = new BadgeView(this, target);
  6. badge.setText("OK");
  7. badge.show();
  8. // *** test relative layout container ***
  9. target = findViewById(R.id.relative_target);
  10. badge = new BadgeView(this, target);
  11. badge.setText("OK");
  12. badge.show();
  13. // *** test frame layout container ***
  14. target = findViewById(R.id.frame_target);
  15. badge = new BadgeView(this, target);
  16. badge.setText("OK");
  17. badge.show();
  18. // *** test table layout container ***
  19. target = findViewById(R.id.table_target);
  20. badge = new BadgeView(this, target);
  21. badge.setText("OK");
  22. badge.show();
  23. // *** test linear layout ***
  24. target = findViewById(R.id.linear_group_target);
  25. badge = new BadgeView(this, target);
  26. badge.setText("OK");
  27. badge.show();
  28. // *** test relative layout ***
  29. target = findViewById(R.id.relative_group_target);
  30. badge = new BadgeView(this, target);
  31. badge.setText("OK");
  32. badge.show();
  33. // *** test frame layout ***
  34. target = findViewById(R.id.frame_group_target);
  35. badge = new BadgeView(this, target);
  36. badge.setText("OK");
  37. badge.show();
  38. // *** test table layout ***
  39. target = findViewById(R.id.tablerow_group_target);
  40. badge = new BadgeView(this, target);
  41. badge.setText("OK");
  42. badge.show();

其实都大同小异,使用方式基本一样。

最后直接给出下载链接吧,自己看最明白~

点击下载

时间: 2024-08-08 05:38:02

BadgeView的使用介绍的相关文章

信息更新小红点显示——自定义控件BadgeView的使用介绍

在现在大部分的信息发布类应用,都有这样的一个功能:当后台数据更新,比如有系统消息或者是用户间有互动的时候,通过在控件上显示一个小红点来提示用户有新的信息.一般来说,这种业务需求,我们可以在布局文件中隐藏一个小红点,然后当检测到有数据更新的时候,我们将隐藏的小红点显示即可.但是这种方案,存在一些弊端,比如使用不方便,需要在很多界面添加小红点的布局,而且使用起来不灵活. 今天这篇文章,给大家介绍一个开源第三方控件--BadgeView,来实现相同的功能,而且使用起来非常的方便,非常强大. 先看一下界

Android BadgeView红点更新信息提示

应用市场很多应用程序中都会看见一些数字红点提示的效果,如QQ.微信以及一些提示更新应用的APP,以达到更好的提示功能的应用,本文将介绍一开源控件的使用实现红点更新信息提示效果. 一.BadgeView常用方法介绍: 1.setBadgeCount(int):设置提醒数字 2.setBadgeGravity(Gravity):设置位置布局 3.setTargetView(View):设置提示控件对象 4.setTypeface():设置显示字体 5.setShadowLayer():设置字体阴影

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

苹果高管斯洛基介绍A11仿生芯片背后的秘密!

9月13日凌晨,苹果在秋季发布会上正式推出了全新一代iPhone智能手机:iPhone 8.iPhone 8 Plus和iPhone X(发音为iPhone 10).这三款新设备的都搭载了全新的移动芯片,苹果称之为A11仿生(不是"Fusion"),并表示这是iPhone上有史以来最强大.最智能的芯片. 通过发布会介绍的A11仿生芯片细节,不难发现苹果自主定制芯片野心非常大,可谓雄心勃勃.并且随着时间的推移,针对半导体芯片的定制设计越来越多,A11达到了前所未有的高度.苹果在发布会中的

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

微信小程序管理后台介绍

微信小程序的管理后台,每次进入都需要扫码,还是特别不爽,现在微信小程序还没正式发布,很多人都还没看到管理后台,这里抢先发布出来 ------------------------------------------------------------ http://www.cnblogs.com/likwo/p/6057258.html 好推小程序统计:https://weixin.hotapp.cn关键指标分析推广效果,一行代码接入微信登录 ---------------------------