这期是 HenCoder 布局部分的最后一期:重写 onMeasure()onLayout() 来定制 Layout 的内部布局。

简介

这期虽然距离上期的时间比较久,但主要是我的个人原因,而不是因为这期的内容难。这期的内容还是比较简单的,主要是一些概念和原理上的东西,实操方面非常容易,所以和上期一样,主要把视频看看就差不多啦:

如果看不到视频,可以点 这里 直接去 B 站看;如果你在海外,可以点 这里 去 YouTube 上看。

总结

这期的文章依然是只有总结。但这次主要是因为我最近实在太多事情了……

定制 Layout 内部布局的方式

  1. 重写 onMeasure() 来计算内部布局
  2. 重写 onLayout() 来摆放子 View

重写 onMeasure() 的三个步骤:

  1. 调用每个子 View 的 measure() 来计算子 View 的尺寸
  2. 计算子 View 的位置并保存子 View 的位置和尺寸
  3. 计算自己的尺寸并用 setMeasuredDimension() 保存

计算子 View 尺寸的关键

计算子 View 的尺寸,关键在于 measure() 方法的两个参数——也就是子 View 的两个 MeasureSpec 的计算。

子 View 的 MeasureSpec 的计算方式:

  • 结合开发者的要求(xml 中 layout_ 打头的属性)和自己的可用空间(自己的尺寸上限 - 已用尺寸)
  • 尺寸上限根据自己的 MeasureSpec 中的 mode 而定
    • EXACTLY / AT_MOST:尺寸上限为 MeasureSpec 中的 size
    • UNSPECIFIED:尺寸无上限

重写 onLayout() 的方式

onLayout() 里调用每个子 View 的 layout() ,让它们保存自己的位置和尺寸。

练习项目

这期还是没有练习项目。

降速生产声明

最近把 HenCoder 做得越来越溜的同时,各种工作上的事情和一些个人私事也忽然蜂拥而至。由于个人能力有限,接下来 HenCoder 将会被迫进一步降低产出速度。

呼……在未来的某个时间,我们下期再见啦!

觉得赞?

那就关注一下?↓↓↓

HenCoder Android UI 部分 2-3 定制 Layout 的内部布局相关推荐

  1. android 半边圆角背景,Android UI(一)Layout 背景局部Shape圆角设计

    Jeff Lee blog:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks ...

  2. Android UI Layout 之 AbsoluteLayout

    Android UI Layout 之 AbsoluteLayout 在 Android UI 中,最基本的构建单位(building block)是 android.view.View.一个 Vie ...

  3. 使用XML声明自定义Android UI元素

    如何使用XML声明Android UI元素? #1楼 Google似乎更新了其开发者页面,并在那里添加了各种培训. 其中一个处理自定义视图的创建,可以在这里找到 #2楼 除了大多数投票的答案. obt ...

  4. android UI

    A015-布局之LinearLayout good 巫山老妖 Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载) Andr ...

  5. Android 系统性能优化(34)---Android UI 性能优化

    Android官网 Slow rendering:个人觉得非常有价值,比如指出 对象分配.垃圾回收(GC).线程调度以及Binder调用 是Android系统中常见的卡顿原因,更重要的是给出了定位和解 ...

  6. 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例-转...

    一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...

  7. 各种Android UI开源框架 开源库

    各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...

  8. Android UI开发第二十五篇——分享一篇自定义的 Action Bar

    Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...

  9. Android自定义视图四:定制onMeasure强制显示为方形

    这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...

最新文章

  1. 65% 的钱被头部玩家拿走,人工智能要进入下半场?
  2. sftp进入指定目录_CentOS7服务搭建----搭建SFTP(安全文件传送协议)服务器
  3. SPI、UART、I2C三种串行总线简介
  4. 迫于项目压力研究果园
  5. ZZ--是谁送走了我们的同事
  6. vivo解bl锁_mi8 8SE 小米8解帐户锁 解ID锁 解激活锁
  7. 【ArcGIS风暴】ArcGIS+CASS点云(.las)数据生成等高线方法案例精解
  8. 用Log4Net来记录系统的日志信息
  9. 不是一流大学毕业,却通过自学软件测试,进了阿里年薪初始22K
  10. While 1比While True快?
  11. 三分钟介绍什么是前端开发框架
  12. 腾讯信鸽推送(一):服务端架构
  13. 如何使用QT?步骤详解
  14. Font Awesome 找图标的正确姿势
  15. 开发第三方分账系统需要多少钱?
  16. sgu207:Robbers(贪心)
  17. 计算机网络基础知识 - 应用层
  18. 苹果cmsv10仿91美剧网自适应收录好的免费模板
  19. 苹果呼叫转移设置不了_苹果手机也可以开启电信VoLTE!
  20. WebRTC开源项目-手把手教你搭建AppRTC

热门文章

  1. java键盘输入运算符_Java基础学习-三元运算符和键盘录入的基本步骤和使用
  2. javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;
  3. php mysql百万级数据_php+mysql百万级数据怎么排序_PHP教程
  4. 矿用巷道巡检机器人_一种井下自动巡检机器人系统
  5. thread.sleep是让哪个线程休眠_java开发两年,这些线程知识你都不知道,你怎么涨薪?...
  6. stm32 udp连续发送大量数据_TCP和UDP详解
  7. php接口调用教程,php接口调用
  8. 计算机软件3十2二5,计算机软件基础3.2 操作系统.pdf
  9. oracle exp导出分区表,【实验】【PARTITION】exp导出分区表数据
  10. php 获取所有表,php – 获取所有插件的列表