【Android界面实现】信息更新小红点显示——自己定义控件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();
事实上都大同小异,使用方式基本一样。
最后直接给出下载链接吧,自己看最明确~
【Android界面实现】信息更新小红点显示——自己定义控件BadgeView的使用介绍的更多相关文章
- [Android] 拍照、截图、保存并显示在ImageView控件中
近期在做Android的项目,当中部分涉及到图像处理的内容.这里先讲述怎样调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买 ...
- Android 实现形态各异的双向側滑菜单 自己定义控件来袭
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39670935.本文出自:[张鸿洋的博客] 1.概述 关于自己定义控件側滑已经写了 ...
- Android开发系列(十八):自己定义控件样式在drawable目录下的XML实现
在Android开发的过程中,我们常常须要对控件的样式做一下改变,能够通过用添加背景图片的方式进行改变,可是背景图片放多了肯定会使得APK文件变的非常大. 我们能够用自己定义属性shape来实现. s ...
- Android自己定义控件系列案例【五】
案例效果: 案例分析: 在开发银行相关client的时候或者开发在线支付相关client的时候常常要求用户绑定银行卡,当中银行卡号一般须要空格分隔显示.最常见的就是每4位数以空格进行分隔.以方便用户实 ...
- VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法。
原文:VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net ...
- Android自己定义控件(状态提示图表)
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重分享成果] 1 背景 前面分析那么多系统源代码了.也该暂停下来歇息一下,趁昨晚闲着看见一个有意思的需求就操 ...
- android 自己定义控件
Android自己定义View实现非常easy 继承View,重写构造函数.onDraw.(onMeasure)等函数. 假设自己定义的View须要有自己定义的属性.须要在values下建立attrs ...
- Android自己定义控件2-简单的写字板控件
概述 上一篇文章我们对自己定义控件进行了一个大体的知识介绍. 今天就来学习自己定义一个简单的写字板控件. 先来看看效果图 就是简单的依据手指写下的轨迹去画出内容 实现 在上一篇文章里提到了androi ...
- Android自己定义控件之应用程序首页轮播图
如今基本上大多数的Android应用程序的首页都有轮播图.就是像下图这种(此图为转载的一篇博文中的图.拿来直接用了): 像这种组件我相信大多数的应用程序都会使用到,本文就是自己定义一个这种组件,能够动 ...
随机推荐
- SQL Server 日志截断
截断事务日志是逻辑操作,只是把日志的一部分标记为‘不再需要’所以可以重用这个空间,截断不是物理操作,不会减少磁盘上文件的大小, 要减小物理大小必定要进行收缩. ----------- 有时就算是备份都 ...
- 限制Inactive物料录入BOM
应用 Oracle Bill Of Materiel 层 Level Function 函数名 Funcgtion Name CUX_BOMFDBOM 表单名 Form Name CUXBOMFD ...
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(二)
原文 http://blog.csdn.net/zhangxin09/article/details/6793330 先前的学习中,我们已经了解了 Metro式的 JavaScript 应用程序大致如 ...
- javascript函数的基础功能
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- css之float
在 HTML中的所有对象,默认分为两种:块元素(block element).内联元素(inline element),虽然也存在着可变元素,但只是随上下文关系确定该元素是块元素或者内联元素. 其实C ...
- 前端模块与CMS结合
前端模块与CMS结合 在<FIS官方技术群>经常看到一些讨论,这次是 前端组件化与CMS的相关讨论,主要观点来自群里 漂流瓶(张云龙前辈). CMS是运营人员直接操作,我们往往需求各种各样 ...
- matlab GUI之常用对话框(三)-- dialog \ errordlg \ warndlg \ helpdlg \ msgbox \questdlg
常用的对话框(三) 1.普通对话框 dialog 调用格式: h=dialog('PropertyName','PropertyValue'......) %普通对话框 h=dialog( ]); ...
- ORACLE case when then
Oracle CASE WHEN 用法介绍 1. CASE WHEN 表达式有两种形式 --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ...
- ORACLE查看当前连接用户的权限信息或者角色信息
关于当前用户的相关信息,可以通过如下语句找到: SQL> select * from all_objects where object_name like 'SESSION%'; OWNER O ...
- C# 颜色有3种表示方式: 6位16进制、RGB、 颜色关键字
最常用的是6位16进制的代码表示法.如bgcolor=#ff0000;其中#只是表示使用6位16进制的颜色代码声明颜色.代码的头两位即ff表示三原色中的红色,范围当然是16进制的00-ff,中间两位即 ...