listview优化

  • 涉及图片

1.滑动的时候,停止加载图片,universalImageloader 里有自带的控制加载控制:


       //PauseOnScrollListener的第一个参数指的是图片加载对象ImageLoader,
       // 第二个参数为pauseOnScroll来控制是否在滑动的过程中暂停加载图片,如果需要暂停则传true,
       // 第三个参数控制猛的滑动界面的时候图片是否加载。
       PauseOnScrollListener listener = new PauseOnScrollListener(ImageLoader.getInstance(),

               true, false, scrollListener);

       listView.setOnScrollListener(new PauseOnScrollListener(imageLoader, pauseOnScroll,  pauseOnFling));

2.加载缩略图。
一般来说,服务器给我们一张网络图片,有的有缩略图,有的没有,对于我们没有的,因为我们的控件本身显示的大小并不大,如果把大图放在列表里面,不但浪费内存,而且影响美观,通常我们的做法是裁剪,裁剪很简单,例如:

  http://img5.adesk.com/593e63a4e7bce77af3eed7eb
  这张图片原大小是:720*600

  而我们控件大小呢可能只有:60*60。那么我们此时要做的就是裁剪,直接在网络图片地址后     加上 :?imageMogr2/thumbnail/!60x60r,完整地址就是:

  http://img5.adesk.com/593e63a4e7bce77af3eed7eb?imageMogr2/thumbnail/!60x60r
  • 纯布局
    1.减少布局层次嵌套,使用android 自带的工具Hierarchy View ,工具可帮组我们查看布局哪块消耗时间最长。
    2.显示数据的时候,尽量减少逻辑,或者可以说无逻辑,只是做一个显示,因为每次getView都会执行一次,也就意味着你的逻辑都要执行一遍,这个显然也是没有任何意义的。

    3.减少view的绘制时间,Android 每16.7s通知系统刷新一次ui,如果此时listview载入页面中显示,必然调用getView()方法,而其它控件也要测量显示,所以分给getView()显示的时间差不多只有16s,如果不能在这16秒内完成绘制,就会导致失帧,就是页面卡顿。

    item布局尽量高度固定或者 match_parent ,慎用 layout_weight属性,减少 onMeasure() 时间。

    4.当item高度不相同时,可 android:smoothScrollbar="true" 设置为true,可让app滑动更流畅。

    原文作者:糖葫芦_倩倩
    原文地址: https://www.jianshu.com/p/aa1771676135
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞