zoukankan      html  css  js  c++  java
  • 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      }  

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

  • 相关阅读:
    ASP.NET MVC and jqGrid 学习笔记 5-添加数据
    Python学习笔记 第一课 列表
    Python学习笔记
    ASP.NET MVC and jqGrid 学习笔记 4-排序
    ASP.NET MVC and jqGrid 学习笔记 3-如何从数据库获得数据
    JS高级程序设计第三版——基本概念
    任务八:响应式网格(栅格化)布局
    任务七:实现常见的技术产品官网的页面结构及样式布局
    JSON Schema(模式)
    jquery选择器(转)
  • 原文地址:https://www.cnblogs.com/all88/p/3342822.html
Copyright © 2011-2022 走看看