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

Android ViewPager大图片滑动避免内存溢出

2013-09-27 15:28 316 查看
ViewPager在项目中会经常用到,但是有时候在加载大图片的时候会引起内存溢出,接下来介绍一种方式,是的viewpager在加载图片

的时候可以有效的避免内存溢出

主要是在Viewpager的适配器中做处理,使得适配器只加载3张图片,大于3张图片就将多余的图片销毁

关键代码如下:

private class MyAdapter extends PagerAdapter {

@Override
public int getCount() {
return details_counts;
}

/**
* 在此方法中加载GifView
* 其原理就是保持2-3个缓存view
*/
@Override
public Object instantiateItem(View view, int position) {
ViewPager vp  = ((ViewPager) view);
ImageView mGifView = new ImageView(PalmShowNewCarShowCarPicture.this);
if((xinglu_counts+position)<carDetailAddress.size()){

Bitmap bit=loadImageFromLocal(carDetailAddress.get(xinglu_counts+position));
mGifView.setImageBitmap(bit);
}

vp.addView(mGifView);
return mGifView;
}

/**
* 再次处理销毁GifView
*/
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView((View) arg2);
//            ((GifView)arg2).destroy();
Log.d("ViewPager", "-<<销毁"+arg1+"页");
}

@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {

}

@Override
public Parcelable saveState() {
return null;
}

@Override
public void startUpdate(View arg0) {

}

@Override
public void finishUpdate(View arg0) {

}
}

public Bitmap loadImageFromLocal(String path) {

return BitmapFactory.decodeFile(path);

}


这样就可以有效的避免内存溢出哦~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: