您的位置:首页 > 移动开发 > Android开发

ListView滑动过程中禁止加载图片

2015-12-15 01:23 435 查看
listview加载图片优化的功能,

在我们使用新浪微博的时候,细心的同学一定发现了,在滑动的过程中,图片是没有被加载的,

而是在滑动停止时,才加载图片了。

我们今天就做一个这样的效果吧。

我们先考虑两个问题:

1、在滑动停止的时候,如何获得需要加载的图片控件?

2、因为listiew在初始化完成的时候,OnScrollListener的onScrollStateChanged与onScroll并未被触发,如何初始化第一页的图片?

[java] view
plaincopy

package com.test.list;  

  

import android.app.Activity;  

import android.os.Bundle;  

import android.util.Log;  

import android.view.View;  

import android.view.ViewGroup;  

import android.widget.AbsListView;  

import android.widget.AbsListView.OnScrollListener;  

import android.widget.BaseAdapter;  

import android.widget.ImageView;  

import android.widget.ListView;  

  

public class Test<a target="_blank" href="http://www.2cto.com/kf/yidong/Android/" class="keylink" style="border:none; padding:0px; margin:0px; color:rgb(51,51,51); text-decoration:none; font-size:14px">Android</a>ListActivity extends Activity {  

  

    private int start_index, end_index;  

  

    // 判断是否是初始化  

    private boolean isInit = false;  

    private ListView list;  

  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        this.initList();  

    }  

  

    private BaseAdapter adapter = new BaseAdapter() {  

  

        @Override  

        public View getView(int position, View convertView, ViewGroup parent) {  

            // TODO Auto-generated method stub  

            View v;  

            if (convertView == null) {  

                v = getLayoutInflater().inflate(R.layout.list_item, null);  

                v.setTag(v);  

            } else {  

                v = (View) convertView.getTag();  

                ImageView iv = (ImageView) v.findViewById(R.id.img);  

                iv.setImageResource(R.drawable.ic_launcher);  

            }  

            ImageView iv = (ImageView) v.findViewById(R.id.img);  

            // 给图片控件设置上对应的位置编号  

            iv.setTag(position);  

            if (!isInit) {  

                iv.setImageResource(R.drawable.update_log);  

            }  

  

            return v;  

        }  

  

        @Override  

        public long getItemId(int position) {  

            // TODO Auto-generated method stub  

            return 0;  

        }  

  

        @Override  

        public Object getItem(int position) {  

            // TODO Auto-generated method stub  

            return null;  

        }  

  

        @Override  

        public int getCount() {  

            // TODO Auto-generated method stub  

            return 140;  

        }  

    };  

  

    private void initList() {  

        // TODO Auto-generated method stub  

        list = (ListView) this.findViewById(R.id.list);  

        list.setAdapter(adapter);  

        list.setOnScrollListener(new OnScrollListener() {  

  

            @Override  

            public void onScrollStateChanged(AbsListView view, int scrollState) {  

                // TODO Auto-generated method stub  

                isInit = true;  

                switch (scrollState) {  

                case OnScrollListener.SCROLL_STATE_IDLE:// 滑动停止  

                    for (; start_index < end_index; start_index++) {  

                        ImageView img = (ImageView) list.findViewWithTag(start_index);  

                        img.setImageResource(R.drawable.update_log);  

                    }  

                    break;  

  

                default:  

                    break;  

                }  

            }  

  

            @Override  

            public void onScroll(AbsListView view, int firstVisibleItem,  

                    int visibleItemCount, int totalItemCount) {  

                // TODO Auto-generated method stub  

                // 设置当前屏幕显示的起始index和结束index  

                start_index = firstVisibleItem;  

                end_index = firstVisibleItem + visibleItemCount;  

  

            }  

        });  

  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息