不废话,先上图

BadgeView

其实在开发众多APP中,可能我们都需要用到这种BadgeView控件,以前可能是在需要的地方加个图标上去,这样每次有这样的需求的时候就需要在布局里写个控件上去,很麻烦。网上看了其他库也是在封装成一个父布局控件,在XML里面还需要写一次。后面想能不能不用绑定布局直接以一种最简单的办法加上这个徽章。于是我的BadgeView诞生了。

先说使用方法

复杂一点的写法:

BadgeFactory.create(this) .setTextColor(Color.White) .setWidthAndHeight(25,25) .setBadgeBackground(Color.Red) .setTextSize(10) .setBadgeGravity(Gravity.Right|Gravity.Top) .setBadgeCount(20) .setShape(BadgeView.SHAPE_CIRCLE) .setSpace(10,10) //设置绑定的view和badgeview之间的空隙 .bind(view);

BadgeFactory内置了几个封装好的构造方法,可以直接一步到位,于是:

BadgeFactory.createDot(this).setBadgeCount(20).bind(imageView); BadgeFactory.createCircle(this).setBadgeCount(20).bind(imageView); BadgeFactory.createRectangle(this).setBadgeCount(20).bind(imageView); BadgeFactory.createOval(this).setBadgeCount(20).bind(imageView); BadgeFactory.createSquare(this).setBadgeCount(20).bind(imageView); BadgeFactory.createRoundRect(this).setBadgeCount(20).bind(imageView);

是不是觉得很简单多了,不再需要写进XML布局。当你需要取消绑定的时候直接调用

badgeView.unbind();

原理

其实原理也很简单,首先判断要绑定的view是否有父布局包裹着,有就取出view,将view和badgeview包裹一起之后再放回去。

先取出view并判断在父布局中的位置

ViewGroupparentContainer=(ViewGroup) view.getParent(); int viewIndex=((ViewGroup) view.getParent()).indexOfChild(view); ((ViewGroup) view.getParent()).removeView(view);

然后设置一些宽高位置属性之后(代码太多就不贴了),最后将两个view放进一个FrameLayout里面,然后FrameLayout添加进原来的布局中。

container.addView(view); container.addView(this); parentContainer.addView(container, viewIndex);

ios 控件徽章_一行代码给你的控件加上徽章(Badge)相关推荐

  1. android 获取控件高度_安卓开发入门教程UI控件_ImageView

    什么是ImageView ImageView是用于显示图片的UI控件. 基础样例 1.展示本地图片 效果图 代码 <ImageViewandroid:layout_width="wra ...

  2. android 获取控件高度_安卓开发入门教程UI控件_ProgressBar

    什么是ProgressBar ProgressBar是用于提示用户进行等待的UI控件,. 基础样例 1.loading图 效果图 代码 布局文件代码 <ProgressBarandroid:id ...

  3. http代码_一行代码就可以实现HTTP文件服务器,他为什么写了150行?

    互联网已经发展了20多年,web技术早已经不是什么新消息,现在更多的程序员讨论的都是web框架,技术框架,高可用框架等.在框架的背后,其实还是要了解最底层的核心内容,比如TCP/IP协议怎么回事,HT ...

  4. datatables 一行数据生成两行_一行代码搞定分组回归

    写 在前面 在目前为止所有小伙伴们向大猫请教过的R问题中,大猫总结了最常遇见同时也是比较难的三个问题,分别是(1)事件研究法:(2)分组回归:(3)滚动回归.事件研究法在第一期中已经讲述,本期我们就来 ...

  5. 灰色的rgb值_一行代码实现图片的灰色效果

    今天是清明节,警笛长鸣,万众默哀.送别英雄,生活继续. 大部分的app配图,今天都是灰色.这种图片的转换在python里非常容易实现.一行代码搞定. 下面是DE8UG上次说个故事:再见VB.你好,精彩 ...

  6. mapbox 修改初始位置_一行代码教你如何随心所欲初始化Bert参数(附Pytorch代码详细解读)...

    微信公众号:NLP从入门到放弃 微信文章在这里(排版更漂亮,但是内置链接不太行,看大家喜欢哪个点哪个看吧): 一行代码带你随心所欲重新初始化bert的参数(附Pytorch代码详细解读)​mp.wei ...

  7. 局域网怎么查看单位摄像头_一行代码,实现多平台文件查看传输!

    几个不错的通过网站传输文件的工具,其实了解python的朋友可能都知道,借助它,只需要输入一行代码,就可以将电脑变成一台服务器,局域网内的任何能上网的工具都能够查看和下载电脑中的文件. 方法很简单,可 ...

  8. 为了提高python代码运行速度和进行_一行代码让你的python运行速度提高100倍

    Python用的好,猪也能飞起来.今天,带大家学习如何让Python飞起来的方法,干货满满哦! python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器 ...

  9. 当当网电子书能打印吗_一行代码就能写一个日志打印组件,你信吗?为你揭晓RTOS中日志打印组件的核心

    1. 做实验引发的思考 在学习LiteOS日志打印组件使用的时候,我记录了一篇博客:atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享,关于实验的具体内容,请阅读这篇博客(点 ...

最新文章

  1. [01]EXTJS4.0的概述和HELLOWORD程序
  2. 利用Maven搭建Spring开发环境 【转】
  3. 【DP、线段树优化】琪露诺
  4. formate JAVA_JAVA String.format 方法使用
  5. Django手写登录装饰器
  6. MySQL分布式ID_分布式唯一ID系列(3)——数据库自增ID机制适合做分布式ID吗
  7. Android平台和java平台 DES加密解密互通程序及其不能互通的原因
  8. sql服务器默认密码_搭建一个DNS服务器,轻松实现域名解析内容分发,访问速度提高N倍...
  9. 在 Chrome 控制台可以玩的两个骚操作,你知道吗?
  10. 何冲(为奥运冠军名字作诗)
  11. leetcode 19
  12. 拓端tecdat|R语言用Rcpp加速Metropolis-Hastings抽样估计贝叶斯逻辑回归模型的参数
  13. [论文]鲁棒的对抗性强化学习
  14. 高等代数 :1 线性方程组的解法
  15. 前端框架,库,组件,插件,控件的理解
  16. 机器学习:线性回归以及非线性回归
  17. 更新Qt Creator版本后打开之前的项目,只有.Pro的问题.
  18. 光场相机1.0与光场相机2.0
  19. Python+Vue计算机毕业设计在线教育平台1ldd7(程序+LW+源码+部署)
  20. SuppressWarnings

热门文章

  1. STM32工作笔记0013---认识UCOS系统
  2. java工作笔记018---java中BigDecimal小数位数的四舍五入等操作
  3. Ubuntu系统安装vmwaretools时the path is not a valid path to the 3.13
  4. static变量和static函数的用法摘抄
  5. 介绍目前计算机网络的新技术,当前计算机网络技术实验室建设现状及方向
  6. 提高代码的运行效率 (4)
  7. json 取值判断_对应后台传json ajax 获取值判断
  8. 滚动后mouseleave失效_大型调心滚子轴承偏载失效案例详情
  9. pv原语模拟实现_HART协议压力变送器硬件设计及实现
  10. 惠普服务器c盘格式化提示win7系统盘,通过U盘重装系统,已经格式化C盘提示如下...