首先说一位大神Lucasr,http://lucasr.org/about/ 。

前FireFox工程师,现在已经跳到facebook。 我的这篇博客,精华部分是由他的熏陶。

1. 用RelativeLayout要好于LinearLayout,(weight的计算会大大消耗性能) 用GridLayout要好于RelativeLayout,(优势在于减少层级) 用FrameLayout好于GridLayout,(减少布局计算时间) 用merge要好于FrameLayout。()
2. 开发的时候要尽量减少View层级,第一降低内存消耗,第二,减少图层绘制消耗的时间。
3. ViewStub,可以延迟部分view的绘制时间,减少首次界面绘制消耗的时间,ViewStub使用的话官方推荐Inflate(),会返回一个view,so你懂的我就不多说了, 但是inflate()方法如果重复调用就会带来崩溃,一般可以采用setVisibility(View.VISIBLE),这样可以避免inflate重复调用崩溃的问题。两个方法各有优缺点,根据需要各取所需吧。
4. Include是一个非常好的东西,减少view标签,增加重用,用法很简单,这里不做赘述了。

5.merge标签,临时的一个套件,需要将内部的东西转移到一个Layout里面。
另外有两点需要特别注意: <merge />只可以作为xml layout的根节点。 当需要扩充的xml layout本身是由merge作为根节点的话,需要将被导入的xml layout置于 viewGroup中,同时需要设置attachToRoot为True。
6. Space是一个亮点,他不会发生绘制,用于空出空间的view,有些必须要用View来空出距离的地方,可以用这个Sapce进行替换,这样就可以减少view。
7. ListView,GridView 的每个item的布局 xml 里面要尽量优化layout层级。最外层尽量用FrameLayout。 内层也要尽量不要使用LinearLayout。PS:如果是Activity的布局界面的话,无所谓了,绘制缓慢不会很明显,但是,在滚动的界面中,层级一旦多了,就会导致滚动卡顿。
8. ListView滚动掉帧现象终极解决方案: ListView卡顿问题,在android平台上简直是常见! 由于android屏幕刷新频率是60HZ,那么16ms就是刷新间隔,一旦超过16ms就会明显被看出来。那些静止的页面又不需要刷新,所以即使卡顿也看不出来。滚动边绘制多层view确实需要多线程,但是android的UI线程是个单线程的,其他县城又不允许操作view,所以滚动卡顿是很难的现象。
那么,这个掉帧现象出路在哪里? 最好的解决方案有两种: (a). flat custom view 将多个view的层级合在一起。要自己去写canvas,代码写起来颇为复杂,但是最终的效果蛮好的。微信的联系人列表页就是用这个方法。每个item的层级为0。只有一个view。 (b). asyncview 也就是这篇文章顶部的的大神Lucasr,所首创的。实现起来颇为复杂,我下载了他的git代码,发现特么的,代码还不全,根本跑不起来。我又去找另外他的几个git的项目,合在一起终于跑起来了。 结果,发现项目太复杂了,没写注释,另外这货竟然也是用MVP模式,需要有很大的耐心才能看完。
今天写到这里。后期持续更新。




更多相关文章

  1. Android(安卓)TV native层中Canvas库的实现思路
  2. 探究Android(安卓)View 绘制流程,Canvas 的由来。
  3. Android(安卓)绘制线程动画
  4. 这是我见过有关Android(安卓)RecyclerView最好的一篇文章:深入解
  5. Android图形显示系统——上层显示2:硬件加速实现
  6. 简单实现Android绘图板
  7. android自定义view--绘制顺序及相关原理
  8. Android(安卓)自定义View学习(4)波浪效果+光圈扩散效果
  9. android 圆形倒计时实现

随机推荐

  1. [置顶] android jni 调用
  2. Android开发者指南(3) —— Other Tools
  3. Android(安卓)音频系统
  4. Android(安卓)FTP 客户端 上传/下载 带进
  5. Android开发指南(40) —— Adding Recent
  6. Android创建本地文件夹、创建本地文件以
  7. [置顶] 我的Android进阶之旅------>Andro
  8. android 定时任务 隔一段时间执行 开启
  9. HorizontalListView(包含setSelection功能
  10. android中的一些权限