HenCoder Android UI 部分 2-3 定制 Layout 的内部布局
这期是 HenCoder 布局部分的最后一期:重写 onMeasure()
和 onLayout()
来定制 Layout
的内部布局。
简介
这期虽然距离上期的时间比较久,但主要是我的个人原因,而不是因为这期的内容难。这期的内容还是比较简单的,主要是一些概念和原理上的东西,实操方面非常容易,所以和上期一样,主要把视频看看就差不多啦:
如果看不到视频,可以点 这里 直接去 B 站看;如果你在海外,可以点 这里 去 YouTube 上看。
总结
这期的文章依然是只有总结。但这次主要是因为我最近实在太多事情了……
定制 Layout 内部布局的方式
- 重写
onMeasure()
来计算内部布局 - 重写
onLayout()
来摆放子 View
重写 onMeasure() 的三个步骤:
- 调用每个子 View 的
measure()
来计算子 View 的尺寸 - 计算子 View 的位置并保存子 View 的位置和尺寸
- 计算自己的尺寸并用
setMeasuredDimension()
保存
计算子 View 尺寸的关键
计算子 View 的尺寸,关键在于 measure()
方法的两个参数——也就是子 View 的两个 MeasureSpec
的计算。
子 View 的 MeasureSpec 的计算方式:
- 结合开发者的要求(xml 中
layout_
打头的属性)和自己的可用空间(自己的尺寸上限 - 已用尺寸) - 尺寸上限根据自己的
MeasureSpec
中的 mode 而定- EXACTLY / AT_MOST:尺寸上限为
MeasureSpec
中的size
- UNSPECIFIED:尺寸无上限
- EXACTLY / AT_MOST:尺寸上限为
重写 onLayout() 的方式
在 onLayout()
里调用每个子 View 的 layout()
,让它们保存自己的位置和尺寸。
练习项目
这期还是没有练习项目。
降速生产声明
最近把 HenCoder 做得越来越溜的同时,各种工作上的事情和一些个人私事也忽然蜂拥而至。由于个人能力有限,接下来 HenCoder 将会被迫进一步降低产出速度。
呼……在未来的某个时间,我们下期再见啦!
觉得赞?
那就关注一下?↓↓↓
HenCoder Android UI 部分 2-3 定制 Layout 的内部布局相关推荐
- android 半边圆角背景,Android UI(一)Layout 背景局部Shape圆角设计
Jeff Lee blog: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks ...
- Android UI Layout 之 AbsoluteLayout
Android UI Layout 之 AbsoluteLayout 在 Android UI 中,最基本的构建单位(building block)是 android.view.View.一个 Vie ...
- 使用XML声明自定义Android UI元素
如何使用XML声明Android UI元素? #1楼 Google似乎更新了其开发者页面,并在那里添加了各种培训. 其中一个处理自定义视图的创建,可以在这里找到 #2楼 除了大多数投票的答案. obt ...
- android UI
A015-布局之LinearLayout good 巫山老妖 Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载) Andr ...
- Android 系统性能优化(34)---Android UI 性能优化
Android官网 Slow rendering:个人觉得非常有价值,比如指出 对象分配.垃圾回收(GC).线程调度以及Binder调用 是Android系统中常见的卡顿原因,更重要的是给出了定位和解 ...
- 【Android UI设计与开发】9:滑动菜单栏(一)开源项目SlidingMenu的使用和示例-转...
一.SlidingMenu简介 相信大家对SlidingMenu都不陌生了,它是一种比较新的设置界面或配置界面的效果,在主界面左滑或者右滑出现设置界面效果,能方便的进行各种操作.很多优秀的应用都采用了 ...
- 各种Android UI开源框架 开源库
各种Android UI开源框架 开源库 转 https://blog.csdn.net/zhangdi_gdk2016/article/details/84643668 自己总结的Android开源 ...
- Android UI开发第二十五篇——分享一篇自定义的 Action Bar
Action Bar是android3.0以后才引入的,主要是替代3.0以前的menu和tittle bar.在3.0之前是不能使用Action Bar功能的.这里引入了自定义的Action Bar, ...
- Android自定义视图四:定制onMeasure强制显示为方形
这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三: ...
最新文章
- 65% 的钱被头部玩家拿走,人工智能要进入下半场?
- sftp进入指定目录_CentOS7服务搭建----搭建SFTP(安全文件传送协议)服务器
- SPI、UART、I2C三种串行总线简介
- 迫于项目压力研究果园
- ZZ--是谁送走了我们的同事
- vivo解bl锁_mi8 8SE 小米8解帐户锁 解ID锁 解激活锁
- 【ArcGIS风暴】ArcGIS+CASS点云(.las)数据生成等高线方法案例精解
- 用Log4Net来记录系统的日志信息
- 不是一流大学毕业,却通过自学软件测试,进了阿里年薪初始22K
- While 1比While True快?
- 三分钟介绍什么是前端开发框架
- 腾讯信鸽推送(一):服务端架构
- 如何使用QT?步骤详解
- Font Awesome 找图标的正确姿势
- 开发第三方分账系统需要多少钱?
- sgu207:Robbers(贪心)
- 计算机网络基础知识 - 应用层
- 苹果cmsv10仿91美剧网自适应收录好的免费模板
- 苹果呼叫转移设置不了_苹果手机也可以开启电信VoLTE!
- WebRTC开源项目-手把手教你搭建AppRTC
热门文章
- java键盘输入运算符_Java基础学习-三元运算符和键盘录入的基本步骤和使用
- javascript php 区别,PHP 或者 JavaScript 这些弱类型 的|| 和 | 的区别, 附代码;
- php mysql百万级数据_php+mysql百万级数据怎么排序_PHP教程
- 矿用巷道巡检机器人_一种井下自动巡检机器人系统
- thread.sleep是让哪个线程休眠_java开发两年,这些线程知识你都不知道,你怎么涨薪?...
- stm32 udp连续发送大量数据_TCP和UDP详解
- php接口调用教程,php接口调用
- 计算机软件3十2二5,计算机软件基础3.2 操作系统.pdf
- oracle exp导出分区表,【实验】【PARTITION】exp导出分区表数据
- php 获取所有表,php – 获取所有插件的列表