屏幕UI刷新机制
- 刷新率:屏幕16ms刷新一次,如果超过16ms刷新一次,人们就会感觉卡顿。60HZ
- 帧率:指GPU在一秒内操作画面的帧数,例如30fps,60fps
Overdraw:之屏幕上某一个像素点在同一帧的时间绘制了多次,通过4种颜色展示不同程度的Overdraw的情况
include标签
提高代码的复用性,减少代码,将布局中公共部分抽取供其他layout使用
使用参考:Android布局文件,include使用之后,你真的了解吗?
不建议在同一个布局中用include标签多次引用同一个布局,并对同一个布局中的控件对象进行调用,这样在区分不同个布局之间的同一个控件对象的时候会变得复杂。尽量复用没有特殊意义的,只是表示内容的布局。
如果一个布局中用include标签多次引用了同一个布局,那么单纯的用findviewbyid
生成布局中的某一个控件的时候,只是生成了第一个include引用的那个布局。如果想要区别的使用这个控件的话,比如说
a布局 ,b布局 b布局中有c这个控件
a 布局用include标签引用了三次b布局
然后我想让第一个b布局中的c控件唱歌,让第二个b布局中的c控件跳舞,让第三个b布局中的c控件翻跟头怎么办?他们是同一个布局中的同一个控件,有同一个id。怎么办?看我上边参考的博客。
这样引用很麻烦,我不建议这样使用。
merage标签
解决布局成绩的优化,减少布局嵌套的层次,提高布局加载的效率
当子布局去掉布局控件时,直接把里边的全部控件原封不动放到父布局中也可以使用时,那我们就是用merage标签代替子布局中的布局控件。比较典型的时,父布局中使用线性布局,子布局中也使用线性布局,且方向一致,那么我们就可以将子布局中的线性布局去掉,变成merage标签。这样就减少了一层布局的嵌套,节省了屏幕刷新时候的压力。
ViewStub标签
ViewStub 只有加载该布局的时候才占用资源,INVISIBLE状态是不会绘制出来的。
在显示的时候才会占用内存,才会被绘制;在不显示的时候不占用内存。
在做一些网络异常等界面的时候可以这样使用。
ViewStub的使用参考:Android进阶——布局优化之灵活借助ViewStub实现懒加载
在使用viewStub过程中,不能使用setViewbility去显隐该布局,需要使用inflate去显示该布局,但是显示一次之后就不能再调用了,原因是什么?那么改怎样去隐藏,该怎样再展示?那就看我上边给的参考吧。
这几个是我看几个知识点遇到的问题,一个知识点最重要的就是它在使用的时候会碰到什么样的麻烦。
网友评论