BadgeView是一个应用非常广泛的在任意控件上显示提醒的工具类。

   
不仅在控件上,在任意布局中均可使用。代码托管在github(作者上一次更新还在3年前)   https://github.com/jgilfelt/android-viewbadger
下载下来可以直接将源代码拷贝到自己的工程中,也可以使用提供的jar包
使用方法非常简单,只要有一个控件的对象实例即可,比如在一个线性布局上显示:
    
    LinearLayout content=(LinearLayout) findViewById(R.id.container);
    BadgeView view=new BadgeView(this,content);
    view.setText("warn");

view.show();

效果图:
也可以设置成其它位置和其它颜色
    Button btn=(Button) findViewById(R.id.btn1);//在按钮的点击事件中,显示一个BadgeView
    btn.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
        BadgeView btnView=new BadgeView(MainActivity.this,v);
        btnView.setText("测试");
        btnView.setBadgePosition(BadgeView.POSITION_BOTTOM_LEFT);
        btnView.setTextColor(Color.BLACK);
        btnView.setBadgeBackgroundColor(Color.RED);
        btnView.show();
        }

});

效果图:
除了使用show方法来实现显示效果外,还可以使用toggle方法来增加更多的显示效果,将上方代码稍加变化
    Button btn=(Button) findViewById(R.id.btn1);//在按钮的点击事件中,显示一个BadgeView
    btnView = new BadgeView(MainActivity.this,btn);
    btnView.setText("测试");
    btnView.setBadgePosition(BadgeView.POSITION_BOTTOM_LEFT);
    btnView.setTextColor(Color.BLACK);
    btnView.setBadgeBackgroundColor(Color.RED);
    
    btn.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
//        btnView.show();
        btnView.toggle();
        }

});

可以实现当点击按钮时显示,再次按下时隐藏。toggle方法调用时可以传入两个动画的对象,来显示或隐藏提醒
    Button btn=(Button) findViewById(R.id.btn1);//在按钮的点击事件中,显示一个BadgeView
    btnView = new BadgeView(MainActivity.this,btn);
    btnView.setText("测试");
    btnView.setBadgePosition(BadgeView.POSITION_BOTTOM_LEFT);
    btnView.setTextColor(Color.BLACK);
    btnView.setBadgeBackgroundColor(Color.RED);
    
    btn.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
//        btnView.show();
        TranslateAnimation animIn = new TranslateAnimation(0, 0, -100, 0);//显示时的动画
        animIn.setInterpolator(new BounceInterpolator());
        animIn.setDuration(1000);
        TranslateAnimation animOut = new TranslateAnimation(0, 0, 0, 100);//隐藏时的动画
        animOut.setInterpolator(new BounceInterpolator());
        animOut.setDuration(1000);
        
        btnView.toggle(animIn,animOut);
        }

});

显示的提醒如果是数字的话,还可以实现自增功能。
Button btn=(Button) findViewById(R.id.btn1);//在按钮的点击事件中,显示一个BadgeView
    btnView = new BadgeView(MainActivity.this,btn);
    btnView.setText("0");
    btnView.setBadgePosition(BadgeView.POSITION_BOTTOM_LEFT);
    btnView.setTextColor(Color.BLACK);
    btnView.setBadgeBackgroundColor(Color.RED);
    
    btn.setOnClickListener(new OnClickListener() {
        
        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
        
        if (btnView.isShown()) {
            btnView.increment(1);
        }else {
            btnView.show();
        }
        
        
        }

});

每次点击按钮,数字都会加一
.... 
可以在Listview的每个条目当中当中使用。代码如下。
   private ListView lv;
    private static final String[] str = { "周星星", "成龙", "李连杰", "周星星", "成龙",

"李连杰", "周星星", "成龙", "李连杰" };

lv = (ListView) findViewById(R.id.lv);
    lv.setAdapter(new BaseAdapter() {
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(MainActivity.this)
                .inflate(android.R.layout.simple_list_item_2, null);
            holder.text = (TextView) convertView
                .findViewById(android.R.id.text1);
            holder.badge = new BadgeView(MainActivity.this, holder.text);
            holder.badge.setBadgeBackgroundColor(Color.GREEN);
            holder.badge.setTextColor(Color.BLACK);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.text.setText(str[position]);
        holder.badge.setText(position + "");
        holder.badge.show();
        return convertView;
        }
        @Override
        public long getItemId(int position) {
        return position;
        }
        @Override
        public Object getItem(int position) {
        return position;
        }
        @Override
        public int getCount() {
        return str.length;
        }
    });

效果图
BadegView本身也是一种控件(继承了TextView),可以直接在xml文件中定义实现。
    <com.readystatesoftware.viewbadger.BadgeView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="这里是一个BadgeView的控件"
                android:id="@+id/badge"

android:layout_gravity="center" />

效果图:
到这里文章就结束了。如果你想使用了解更多,请参考github上示例代码。
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/linwoain/p/8d1e281e5eb7b1f03a465225fc7cae38.html

BadgeView(View上添加提醒)的应用与分析相关推荐

  1. 故事版xib --view上添加tableview

    以前我们实现过纯代码版view上添加tableview http://blog.csdn.net/lee727n/article/details/72582677 下面我们来看一下,如何通过故事版和x ...

  2. 在SAP CDS view上添加扩展字段后激活,背后的实现原理

  3. Extension field添加到CDS view上的技术实现

    本文介绍 Extension field 添加到 CDS view 上的技术实现 SE38, 执行 report CFD_ADD_FIELD_TO_CDS_VIEW: 要获取更多Jerry的原创文章, ...

  4. 小米手机如何在日历上添加每月最后一日的备忘录事件提醒

    带有日历功能的云便签支持在包括小米的各品牌安卓.鸿蒙以及苹果iOS等系统的手机端同步使用,并且在这款云便签备忘录中可找到日历,通过日历添加每月最后一天的备忘录提醒事项.那具体小米手机如何在日历上添加每 ...

  5. ios-ScrollView添加到view上,view的touchesBegan无法执行

    这几天做的时候碰到了这么个问题,就是当我们把ScrollView添加到控制器的view上,或者添加到UICollectionViewCell上面,scrollView的父视图的touchesBegan ...

  6. Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger

    版权声明:本文为博主原创文章,未经博主允许不得转载. 上一篇讲到用canvas进行绘制得到对应最终的bitmap. 在实际应用中,我们除了给图标添加数字外,也有可能加一些红色方块之类的图标作为新功能的 ...

  7. iphone 屏幕_如何在iPhone的主屏幕上添加和删除小部件

    iphone 屏幕 Khamosh Pathak Khamosh Pathak Apple brought widgets to the iPhone's Home screen with iOS 1 ...

  8. iOS访问系统日历 添加提醒事件

    1 添加隐私请求提示 Privacy - Calendars Usage Description 2 代码 #import <EventKit/EventKit.h> // 添加提醒事件 ...

  9. 计算机桌面怎么能添加文字,怎么在桌面上添加文字便签

    原标题:怎么在桌面上添加文字便签 电脑上办公用的软件有很多,仅仅是一个办公记事的类别,就有很多种不同款式的办公小工具,办公记事用的软件,大致可以分为笔记类和便签类,当需要用电脑办公软件记录事情备忘时, ...

最新文章

  1. 深度学习的实时面部姿势估计研究
  2. vuex基础到模块化
  3. VTK:可视化之HideActor
  4. Spring中,applicationContext.xml 配置文件在web.xml中的配置详解
  5. 我的IBM本本逃过一劫...
  6. 用于 Windows8 的 Wijmo Charts 图表控件
  7. android字节数转兆,ios – Swift – 如何计算字节数并将其转换为兆字节?
  8. android listview固定内容,Android ListView 列表分隔,条目中添加分类信息(文字,图片等)...
  9. bootstrp_组件
  10. 从草根到百万年薪程序员的二十年风雨之路。
  11. CF1149BThree Religions
  12. pc计算机shift,电脑上的shift键怎么读?shift表示什么意思?
  13. 【系统集成项目管理工程师】信息系统集成及服务
  14. 震惊世界的25张照片
  15. 基于ssm快递物流管理系统源码获取(java毕业设计)
  16. js Proxy 从入门到废掉的整个过程
  17. 关于TextView的maxLines和ellipsize属性显示不正确情况之一的解决
  18. 在matlab中输出参数太多,本人在用matlab做空间杜宾模型,但是结果提示输出参数过多...
  19. java取拼音首字母_java怎么根据汉字获取字的拼音首字母
  20. ROS机器人操作系统最佳实践指南

热门文章

  1. VC++ MFC DLL动态链接库编写详解
  2. linux配环境,一个操作系统的实现linux下环境搭配
  3. 001_FastDFS介绍
  4. 003_onreadystatechange事件
  5. html5+调用safari,Safari浏览器不酷,HTML5无效元素; JavaScript是
  6. java 遍历写什么_Java文件遍历及文件读写
  7. mysql raiserror_RAISERROR在SQL Server数据库中的用法
  8. LinkedList源码剖析
  9. Ubuntu 20.04系统中安装vncserver的方法步骤
  10. 发布json数据_技术分享 | MySQL 8.0.17 GA 发布!