android中requestLayout方法和invalidate()方法的区别
2015-11-07 15:32
405 查看
requestLayout:当view确定自身已经不再适合现有的区域时,该view本身调用这个方法要求parent view重新调用他的onMeasure onLayout来对重新设置自己位置。
特别的当view的layoutparameter发生改变,并且它的值还没能应用到view上,这时候适合调用这个方法。
在很多情况下,requestLayout是不需要被调用的。例如,我们把一个AbsoluteLayout里面的childView挪动一下位置。我们仅仅需要调用的可能就是重新布局当前AbsoluteLayout,然后调用invalidate方法进行重绘。而不是从当前View向上的整个View树形结构都要重新layout,onLayout,measure,onMeasure一次。
这个时候,怎么办?
一种方法是,直接调用onLayout。然后调用invalidate进行重绘。很明显可以提升绘制效率。由于父View的layout实现中对会通知布局的listener。但是由于无法得到listener,因此调用onlayout的时候无法对其进行通知,这也是这种实现的缺陷。
invalidate:View本身调用迫使view重画。
特别的当view的layoutparameter发生改变,并且它的值还没能应用到view上,这时候适合调用这个方法。
在很多情况下,requestLayout是不需要被调用的。例如,我们把一个AbsoluteLayout里面的childView挪动一下位置。我们仅仅需要调用的可能就是重新布局当前AbsoluteLayout,然后调用invalidate方法进行重绘。而不是从当前View向上的整个View树形结构都要重新layout,onLayout,measure,onMeasure一次。
这个时候,怎么办?
一种方法是,直接调用onLayout。然后调用invalidate进行重绘。很明显可以提升绘制效率。由于父View的layout实现中对会通知布局的listener。但是由于无法得到listener,因此调用onlayout的时候无法对其进行通知,这也是这种实现的缺陷。
invalidate:View本身调用迫使view重画。
相关文章推荐
- UITableView --- 通讯录demo1
- 并发编程之Operation Queue
- UIImageView的图片切割问题
- 获取手机UUID
- scrapy 爬网站 显示 Filtered offsite request to 错误.
- UIImageView实现图片移动,缩放、旋转的代码片段
- 触摸事件UITouch的用法
- 解决UIToolbar 顶部的黑色线条问题
- easyui动态添加validType
- IOS之高级UI控件之插曲 NSTimer
- Fuel 7 安装
- MSBuild Tools解决办法
- @RequestParam @RequestBody @PathVariable 等参数绑定注解详解(转)
- Android线程 异步 asynctask Looper MessageQueue handler
- codeforces-559B-Equivalent Strings
- 解决 证书报 UUID 不匹配问题 Your build settings specify a provisioning profile with the UUID
- Android Studio运行工程报错:java.exe'' finished with non-zero exit value 1
- 核心动画(Core Animation)
- request获取网页单选框的值
- EasyUI学习笔记_3