信息更新小红点显示——自定义控件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的使用介绍

时间: 2024-08-28 23:43:29

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

使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示

原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可查看官网的示例: http://www.visifire.com/silverlight_spline_charts_gallery.php 点击其中的一个例子,然后点击Live Updates,就可看到数据更新时的过渡效果.但是蛋疼的博客园,不知道为什么,我插入了我原始的xap文件,过渡效果却没有

使用Android实现接口信息的留言版显示

关于这个篇日志,我上周末的时候已经写好了初稿,但是后来电脑安装程序的时候,出了问题重装了.结果没有备份好,这个星期也在忙着学习新的知识,也就把发表的事情搁置了.今天看到,一些同学上交了作业,都没有使用老师指定的接口实现.那么,我来分享一下,我的一点点成果. 看到标题,顾名思义,我今天只是和大家讲一下如何实现接口信息的显示,不包括添加信息. 接口帮助文档:http://api.wzhospital.cn/msg/help 根据查看接口文档,我们可以知道接口内部的一些信息结构. 当然,想要查看具体的

MySQL索引统计信息更新相关的参数

MySQL统计信息相关的参数: 1. innodb_stats_on_metadata(是否自动更新统计信息),MySQL 5.7中默认为关闭状态 仅在统计信息配置为非持久化的时候生效. 也就是说在innodb_stats_persistent 配置为OFF的时候,非持久化存储统计信息的手,innodb_stats_on_metadata的设置才生效. 当innodb_stats_on_metadata设置为ON的时候, InnoDB在执show table status 或者访问INFORMA

JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。

1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExceptio

百度地图的使用之获取数据库表中信息的坐标点显示在地图上

//通用封装好的js: var map = new BMap.Map("container"); //建树Map实例 var point = new BMap.Point(103.976032, 33.845509); // 建树点坐标 map.centerAndZoom(point, 6); // 初始化地图,设置中心点坐标和地图级别. //地图事件设置函数: map.enableDragging(); //启用地图拖拽事件,默认启用(可不写) map.enableScrollWhe

C# 如何定义让PropertyGrid控件显示[...]按钮,并且点击后以下拉框形式显示自定义控件编辑属性值

关于PropertyGrid控件的详细用法请参考文献: 1.C# PropertyGrid控件应用心得 2.C#自定义PropertyGrid属性 首先定义一个要在下拉框显示的控件: using System; using System.Windows.Forms; namespace Simon.WinForms.Examples.PropertyGrid { public class EditorControl : UserControl { public EditorControl() {

Oracle按用户进行统计信息更新

按用户进行统计信息更新 PL/sqldev工具使用system用户连接到oracle,打开命令窗口执行以下SQL,用户名请根据实际情况进行更改: begin dbms_stats.gather_schema_stats( ownname          => 'testuser', estimate_percent => dbms_stats.auto_sample_size, method_opt       => 'for all columns size auto', degre

供应商地点信息更新(转)

原文地址 供应商地点信息更新 DECLARE l_api_version CONSTANT NUMBER := 1; l_msg_data VARCHAR2(2000); l_msg VARCHAR2(4000); l_msg_count NUMBER; l_return_status VARCHAR2(1); l_method_code VARCHAR2(50); l_vendor_site_rec ap_vendor_pub_pkg.r_vendor_site_rec_type; CURSO

BadgeView的使用介绍

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