摘要: 相比较onMeasure ,layout过程要简单多了,正如layout的中文意思“布局”中表达的一样,layout的过程就是确定View在屏幕上显示的具体位置,在代码中就是设置其成员变量mLeft,mTop,mRight,mBottom的值,这几个值构成的矩形区域就是该View显示的位置,不过这里的具体位置都是相对与父视图的位置。 与onMeasure过程类似,ViewGroup在onLayout函数中通过调用其children的layout函数来设置子视图相对与父视图中的位置,具体位置由函数layout的参数决定,当我们继承ViewGroup时必须重载onLayout函数(ViewGro. 阅读全文
posted @ 2012-10-24 15:31 那些人追过的年 阅读(24152) 评论(0) 推荐(3) 编辑
摘要: invalidate()最后会发起一个View树遍历的请求,并通过执行performTraersal()来响应该请求,performTraersal()正是对View树进行遍历和绘制的核心函数,内部的主体逻辑是判断是否需要重新测量视图大小(measure),是否需要重新布局(layout),是否重新需要绘制(draw)。measure过程是遍历的前提,只有measure后才能进行布局(layout)和绘制(draw),因为在layout的过程中需要用到measure过程中计算得到的每个View的测量大小,而draw过程需要layout确定每个view的位置才能进行绘制。下面我们主要来探讨一下m 阅读全文
posted @ 2012-10-24 14:56 那些人追过的年 阅读(15126) 评论(3) 推荐(3) 编辑
摘要: Dialog类中找到了dismiss和cancel方法的实现。 看dismiss的源码: public void cancel() { if (mCancelMessage != null) { // Obtain a new message so this dialog can be re-used Message.obtain(mCancelMessage).sendToTarget(); } dismiss(); }在cancel方法中调用了dismiss方法。 那么:mC... 阅读全文
posted @ 2012-10-24 11:58 那些人追过的年 阅读(5912) 评论(0) 推荐(0) 编辑
摘要: onMeasure()和onLayout() 1. onMeasure a. 属于View的方法,用来测量自己和内容的来确定宽度和高度 b. view的measure方法体中会调用onMeasure 2. onLayout a. 属于ViewGroup的方法,用来为当前ViewGroup的子元素的位置和大小 b. View的layout方法体中会调用onLayout 3.onMeasure在onLayout之前调用 4. 设置background后,会重新调用onMeasure和onLayout Intent中的addflags()和setflags()的区别 addflags():Add a 阅读全文
posted @ 2012-10-24 11:55 那些人追过的年 阅读(1434) 评论(0) 推荐(0) 编辑