BadgeView的使用介绍
在现在大部分的信息发布类应用,都有这样的一个功能:当后台数据更新,比如有系统消息或者是用户间有互动的时候,通过在控件上显示一个小红点来提示用户有新的信息。一般来说,这种业务需求,我们可以在布局文件中隐藏一个小红点,然后当检测到有数据更新的时候,我们将隐藏的小红点显示即可。但是这种方案,存在一些弊端,比如使用不方便,需要在很多界面添加小红点的布局,而且使用起来不灵活。
今天这篇文章,给大家介绍一个开源第三方控件——BadgeView,来实现相同的功能,而且使用起来非常的方便,非常强大。
先看一下界面效果图
我们可以看到,效果非常棒,各种需求都能满足,而且还可以添加自定义的动画效果,瞬间让你的APP变得高大上!
下面,具体介绍BadgeView的各种效果的使用
- // 默认的badge效果
- View target = findViewById(R.id.default_target);
- BadgeView badge = new BadgeView(this, target);
- badge.setText("1");
- badge.show();
- // 设置位置
- btnPosition = (Button) findViewById(R.id.position_target);
- badge1 = new BadgeView(this, btnPosition);
- badge1.setText("12");
- badge1.setBadgePosition(BadgeView.POSITION_BOTTOM_LEFT);
- btnPosition.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- badge1.toggle();
- }
- });
- // 设置显示文本/字体颜色/背景颜色
- btnColour = (Button) findViewById(R.id.colour_target);
- badge2 = new BadgeView(this, btnColour);
- badge2.setText("New!");
- badge2.setTextColor(Color.BLUE);
- badge2.setBadgeBackgroundColor(Color.YELLOW);
- badge2.setTextSize(12);
- btnColour.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- badge2.toggle();
- }
- });
- // 默认动画效果
- btnAnim1 = (Button) findViewById(R.id.anim1_target);
- badge3 = new BadgeView(this, btnAnim1);
- badge3.setText("84");
- btnAnim1.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- badge3.toggle(true);
- }
- });
- // 用户自定义动画
- btnAnim2 = (Button) findViewById(R.id.anim2_target);
- badge4 = new BadgeView(this, btnAnim2);
- badge4.setText("123");
- badge4.setBadgePosition(BadgeView.POSITION_TOP_LEFT);
- badge4.setBadgeMargin(15);
- badge4.setBadgeBackgroundColor(Color.parseColor("#A4C639"));
- btnAnim2.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 设置进入的移动动画,设置了插值器,可以实现颤动的效果
- TranslateAnimation anim = new TranslateAnimation(-100, 0, 0, 0);
- anim.setInterpolator(new BounceInterpolator());
- // 设置动画的持续时间
- anim.setDuration(1000);
- // 设置退出的移动动画
- TranslateAnimation anim2 = new TranslateAnimation(0, -100, 0, 0);
- anim2.setDuration(500);
- badge4.toggle(anim, anim2);
- }
- });
- // 设置用户自定义的背景图片
- btnCustom = (Button) findViewById(R.id.custom_target);
- badge5 = new BadgeView(this, btnCustom);
- badge5.setText("37");
- badge5.setBackgroundResource(R.drawable.badge_ifaux);
- badge5.setTextSize(16);
- btnCustom.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- badge5.toggle(true);
- }
- });
- // 在tab上显示一个小红点
- TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
- btnTab = (Button) findViewById(R.id.tab_btn);
- badge7 = new BadgeView(this, tabs, 2);
- badge7.setText("5");
- btnTab.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- badge7.toggle();
- }
- });
- // 可以被点击的badge
- btnClick = (Button) findViewById(R.id.click_target);
- badge6 = new BadgeView(this, btnClick);
- badge6.setText("click me");
- badge6.setBadgeBackgroundColor(Color.BLUE);
- badge6.setTextSize(16);
- //设置点击事件
- badge6.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- Toast.makeText(DemoActivity.this, "clicked badge",
- Toast.LENGTH_SHORT).show();
- }
- });
- btnClick.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- badge6.toggle();
- }
- });
- // 红点数字可以自增长的badge
- btnIncrement = (Button) findViewById(R.id.increment_target);
- badge8 = new BadgeView(this, btnIncrement);
- badge8.setText("0");
- btnIncrement.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (badge8.isShown()) {
- badge8.increment(1);
- } else {
- badge8.show();
- }
- }
- });
上面的代码是用来实现第一张效果图的效果的,下面是第三张效果图的实现
- BadgeView badge;
- View target;
- // *** test linear layout container ***
- target = findViewById(R.id.linear_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test relative layout container ***
- target = findViewById(R.id.relative_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test frame layout container ***
- target = findViewById(R.id.frame_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test table layout container ***
- target = findViewById(R.id.table_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test linear layout ***
- target = findViewById(R.id.linear_group_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test relative layout ***
- target = findViewById(R.id.relative_group_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test frame layout ***
- target = findViewById(R.id.frame_group_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
- // *** test table layout ***
- target = findViewById(R.id.tablerow_group_target);
- badge = new BadgeView(this, target);
- badge.setText("OK");
- badge.show();
其实都大同小异,使用方式基本一样。
最后直接给出下载链接吧,自己看最明白~
BadgeView的使用介绍的更多相关文章
- 【Android界面实现】信息更新小红点显示——自己定义控件BadgeView的使用介绍
在如今大部分的信息公布类应用,都有这样的一个功能:当后台数据更新,比方有系统消息或者是用户间有互动的时候,通过在控件上显示一个小红点来提示用户有新的信息.一般来说,这样的业务需求,我们能够在布局文件里 ...
- BadgeView使用介绍
前段时间做的一个淘宝客的项目,需要在商品图片上添加价格标签,之前自己使用TextView和Cavas绘制的感觉效果一般,今天偶然在CSDN上发现BadgeView这个开源项目,在git下载下来之后,使 ...
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- Windows Server 2012 NIC Teaming介绍及注意事项
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- HTML DOM 介绍
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
- HTML 事件(一) 事件的介绍
本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...
随机推荐
- HTML5小游戏【是男人就下一百层】UI美化版
之前写的小游戏,要么就比较简单,要么就是比较难看,或者人物本身是不会动的. 结合了其它人的经验,研究了一下精灵运动,就写一个简单的小游戏来试一下. 介绍一下几个主要的类: Frame:帧的定义,主要描 ...
- 开发Android 范的错误
1 在onCreate(Bundle savedInstanceState)方法中, 按钮单击事件的实现直接写在onCreate方法了里,这样就好导致这个按钮只能触发一次, 因为在Android体系中 ...
- CC2540开发板学习笔记(二)——按键
一.实验内容 用按键S1控制LED1的亮和灭 二.实验过程 1.电路原理: 可以看出,当S按下P0.0和P0.1接地,反之则接高电压. 2.寄存器使用: 依旧应该首先进行3个基本寄存器的设定,对LED ...
- 浅谈c++ new and delete or new [] and delete []
http://www.cnblogs.com/hazir/p/new_and_delete.html 在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问 ...
- HDU2222 Keywords Search(AC自动机模板)
AC自动机是一种多模式匹配的算法.大概过程如下: 首先所有模式串构造一棵Trie树,Trie树上的每个非根结点都代表一个从根出发到该点路径的字符串. 然后每个结点都计算出其fail指针的值,这个fai ...
- HDU1853 & 蜜汁建图+KM模板
题意: 给你一个N个点M条边的带权有向图,现在要你求这样一个值:该有向图中的所有顶点正好被1个或多个不相交的有向环覆盖.这个值就是 所有这些有向环的权值和. 要求该值越小越好. SOL: 本来还想ta ...
- [Cocos2d-x For WP8]MotionStreak拖尾效果
拖尾效果是指在在游戏中,一个精灵在运动的过程中会留下一个短暂的轨迹效果,在游戏里面如打斗的特效往往会需要用到这种效果来给运动的增加绚丽的效果.那么在Cocos2D-x里面我们可以使用一种内置的拖动渐隐 ...
- Android环境搭建要点
1.JDK环境变量配置 在环境变量的path变量中加入jdk安装目录的bin路径字符串(C:\Program Files\Java\jdk1.8.0\bin). 配置好后,在命令提示符界面输入&quo ...
- 定时任务之Spring与Quartz的整合(有修改)
转摘:http://www.javaweb1024.com/java/JavaWebzhongji/2015/04/13/548.html 在Spring中使用Quartz有两种方式实现:第一种是任务 ...
- Graph database_neo4j 底层存储结构分析(6)
3.6 Node 数据存储 neo4j 中, Node 的存储是由 NodeStore 和 ArrayPropertyStore 2中类型配合来完成的. node 的label 内容是存在Array ...