Android ViewPager大图片滑动避免内存溢出
ViewPager在项目中会经常用到,但是有时候在加载大图片的时候会引起内存溢出,接下来介绍一种方式,是的viewpager在加载图片
的时候可以有效的避免内存溢出
主要是在Viewpager的适配器中做处理,使得适配器只加载3张图片,大于3张图片就将多余的图片销毁
关键代码如下:
1 private class MyAdapter extends PagerAdapter { 2 3 @Override 4 public int getCount() { 5 return details_counts; 6 } 7 8 /** 9 * 在此方法中加载GifView 10 * 其原理就是保持2-3个缓存view 11 */ 12 @Override 13 public Object instantiateItem(View view, int position) { 14 ViewPager vp = ((ViewPager) view); 15 ImageView mGifView = new ImageView(PalmShowNewCarShowCarPicture.this); 16 if((xinglu_counts+position)<carDetailAddress.size()){ 17 18 Bitmap bit=loadImageFromLocal(carDetailAddress.get(xinglu_counts+position)); 19 mGifView.setImageBitmap(bit); 20 } 21 22 vp.addView(mGifView); 23 return mGifView; 24 } 25 26 /** 27 * 再次处理销毁GifView 28 */ 29 @Override 30 public void destroyItem(View arg0, int arg1, Object arg2) {((ViewPager) arg0).removeView((View) arg2); 31 // ((GifView)arg2).destroy(); 32 Log.d("ViewPager", "-<<销毁"+arg1+"页"); 33 } 34 35 @Override 36 public boolean isViewFromObject(View arg0, Object arg1) { 37 return arg0 == arg1; 38 } 39 40 @Override 41 public void restoreState(Parcelable arg0, ClassLoader arg1) { 42 43 } 44 45 @Override 46 public Parcelable saveState() { 47 return null; 48 } 49 50 @Override 51 public void startUpdate(View arg0) { 52 53 } 54 55 @Override 56 public void finishUpdate(View arg0) { 57 58 } 59 } 60 61 62 public Bitmap loadImageFromLocal(String path) { 63 64 return BitmapFactory.decodeFile(path); 65 66 }
这样就可以有效的避免内存溢出哦~~~