专栏名称: 复利大王
分享和推送Java/Android方向的技术和文章,让你成为这方面的大牛,让你每天都成长一点。同时,我们也会邀请BAT的大牛分享原创!
目录
相关文章推荐
51好读  ›  专栏  ›  复利大王

Android自定义View—实现流式布局(热门标签效果)

复利大王  · 公众号  · android  · 2017-01-14 11:41

正文

请到「今天看啥」查看全文


思维导图

一、流式布局的实现

实现原理:采用面向对象思想将整个布局分为很多行的对象,每个行对象管理自己行内的孩子,这里通过集合来管理。

1. 内部类Line的实现

1.1 定义行的基本属性
  • List :管理行中的孩子

  • maxWidth:行的最大宽度

  • usedWidth:使用的宽度

  • height:行的高度

  • space:孩子之间的间距

  • 构造初始化maxWidth和space


1.2 addView(View view)方法实现
  • 往行的集合里添加View,更新行的使用宽度和高度


1.3 canAddView(View view)方法实现
  • 判断是否能往行里添加孩子,如果孩子的宽度大于剩余宽度就不能


2. 对容器进行测量(onMeasure方法的实现)

2.1 获取宽度,计算maxWidth,构造传入Line
  • 总宽度减去左右边距就是行的最大宽度


2.2 循环获取孩子进行测量
  • 获取孩子总数,遍历获取每一个孩子,然后进行测量,测量完之后还需要将孩子添加到行集合里,然后将行添加到管理行的集合里


2.3 测量自己

  • 由于宽度肯定是填充整个屏幕,这里只需要处理行的高度,累加所有的行高和竖直边距算出高度








请到「今天看啥」查看全文


推荐文章
科学网  ·  蛾子蛋蛋里的毒招
8 年前
趣味漫画  ·  借钱容易追债难
8 年前
品牌几何  ·  没想到你是这样的奔驰……
8 年前