zoukankan      html  css  js  c++  java
  • ListView的优化问题

        listview算是我们app中较为常用的控件之一了。而如何优化也是一个问题。

      listview的优化一般分为两类。

      一布局优化。

        对布局的优化是大家了解的。

        1、复用convertview。android中界面上有多少个条显示,就会调用多少次的getView()方法,每次都会使用View.inflate(….)的方法,都要将xml文件解析,并显示到界面上,这是非常消耗资源的。

        convertview会复用view。

        2、viewholder的使用。findviewbyid()是一个耗时操作。在创建view对象的时候,减少布局文件转化成view对象的次数;即在创建view对象的时候,把所有孩子全部找到,并把孩子的引用给存起来

        这样使用

     if (convertView == null) {
                convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
                holder new ViewHolder();
                 。。。。。
                convertView.setTag(holder);
        }
        else{
                holder = (ViewHolder)convertView.getTag();
        }
             。。。。
           }
     class ViewHolder {
            
    }        

       二、数据优化

        1、ListView中数据的分批分页处理

        2、设置ListView的滚动监听器:setOnScrollListener(new OnScrollListener{….})

          每次滑动时停止加载,静止时加载数据

          

    listView.setOnScrollListener(new AbsListView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(AbsListView view, int scrollState) {
    switch (scrollState){
    case SCROLL_STATE_TOUCH_SCROLL:
    case SCROLL_STATE_FLING:
    break;
    case SCROLL_STATE_IDLE:
    int start = listView.getFirstVisiblePosition();
    int end = listView.getLastVisiblePosition();
    if(end >= listView.getCount()){
    end = listView.getCount() - 1;
    }
    //展示start-end之间的图片 blablabla......
    break;
    }
    }

    @Override
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

    }
    });

        3、图片优化   

          在Bitmap加载之前进行设置,降低图片解码后的图片宽高尺寸,以及图像采样率,降低内存占用。可以使用google官方推荐的图片压缩算法。

          图片解码的时候,降低像素颜色信息,从ARGB4字节,转换为Android支持的短字节颜色如ARGB565,去掉透明度。

          异步加载图片,引入缓存机制。

      三、更换使用recyclerview

  • 相关阅读:
    idou老师教你学Istio 08: 调用链埋点是否真的“零修改”?
    idou老师教你学Istio 07: 如何用istio实现请求超时管理
    idou老师教你学Istio06: 如何用istio实现流量迁移
    Strusts2笔记8--文件的上传和下载
    Strusts2笔记7--国际化
    Strusts2笔记6--拦截器
    Strusts2笔记5--数据验证
    Strusts2笔记4--类型转换器
    Struts2笔记3--获取ServletAPI和OGNL与值栈
    Struts2笔记2--动态方法调用和Action接收请求方式
  • 原文地址:https://www.cnblogs.com/yrstudy/p/6576716.html
Copyright © 2011-2022 走看看