• 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      }  

    这样就可以有效的避免内存溢出哦~~~

  • 相关阅读:
    gdb typeid 详解
    make报错
    期末作业验收
    个人作业——软件工程实践总结作业
    原型设计(结对第一次)
    团队展示(团队)
    第二次作业——个人项目实战(sudoku)
    软件工程实践第一次作业--准备
    C++第一次课堂作业 circle
    第四次作业 计算器第二部分(未完)
  • 原文地址:https://www.cnblogs.com/all88/p/3342822.html
Copyright © 2020-2023  润新知