决定要考个证了,不能当无证程序员,学习过程中会把一些知识点做成思维导图,方便记忆
系统集成项目管理考试知识点之【信息化基础】
系统集成项目管理考试知识点之【电子政务】
英语语法基础(一)
Google公布Android L预览版本源代码
不久前的Google I/O大会上刚刚推出的Android L,据称是Google历史上最深入的版本更新。如今最新版Android L的源代码已经公布了。
源码下载地址:https://android.googlesource.com/?format=HTML
此次公布源码的是Android L预览版本。源代码中,Google保留了不少重要内容,包括二进制软件包和内核代码,看来Android L仍在调试中。估计还要再过一段时间才能推送正式版系统。
我们来回顾一下Android L的几个新特性:
- 全新的Material Design设计语言。
- 更便捷和清晰的下拉通知栏
- 用滑动来取代之前的点击
- ART作为默认选项
- 加强了设备的电池续航,新增了一个省电模式
- 加强了内存管理机制,完全兼容64位系统
- 通过Play商店推送Android系统的升级补丁
- 加入了类似Find My iPhone的功能,支持远程擦除手机数据
- 多任务或者多页卡切换变为立体的层叠页卡
- 新的锁屏方式
支持Android L的设备包括:
[转]Android的onMeasure和onLayout And MeasureSpec揭秘
Android中自定义ViewGroup最重要的就是onMeasure和onLayout方法,都需要重写这两个方法,ViewGroup绘制 的过程是这样的:
onMeasure → onLayout → DispatchDraw
其实我觉得官方文档解释有大大的问题,刚开始一直很疑惑onMeasure和onLayout是什么意思,看了很多资料后豁然开朗,总结如下
首先要知道ViewGroup是继承View的,后面的解释跟View有关。ViewGourp可以包含很多个View,View就是它的孩子,比如LinearLayout布局是一个ViewGroup,在布局内可以放TextEdit、ImageView等等常用的控件,这些叫子View,当然不限于这个固定的控件。
onMeasure → onLayout → DispatchDraw:onMeasure负责测量这个ViewGroup和子View的大小,onLayout负责设置子View的布局,DispatchDraw就是真正画上去了。
onMeasure
官方解释:
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
Measure the view and its content to determine the measured width and the measured height. 即 测量View和它的内容决定宽度和高度。
说实在的,官方文档说测量我刚开始很疑惑,onMeasure翻译过来是测量,根本不知道它的意图,其实它有两方面作用:①获得ViewGroup和子View的宽和高 ②设置子ViewGroup的宽和高,注意,只是宽和高。其实,追踪onMeasure方法会发现,它继承自View。
典型的onMeasure的一个实现
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec); //获取ViewGroup宽度
int height = MeasureSpec.getSize(heightMeasureSpec); //获取ViewGroup高度
setMeasuredDimension(width, height); //设置ViewGroup的宽高
int childCount = getChildCount(); //获得子View的个数,下面遍历这些子View设置宽高
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
child.measure(viewWidth, viewHeight); //设置子View宽高
}
}
很明显,先获取到了宽高再设置。顺序是先设置ViewGroup的,再设置子View。
其中,设置ViewGroup宽高的方法是 setMeasureDimension(),查看这个方法的源代码,它在view.class下