listview优化

作者: 糖葫芦_倩倩 | 来源:发表于2017-07-04 15:31 被阅读71次
    • 涉及图片

    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滑动更流畅。

    相关文章

      网友评论

        本文标题:listview优化

        本文链接:https://www.haomeiwen.com/subject/vruthxtx.html