android 解决ViewPager加载大量图片内存溢出问题

所属分类: 软件编程 / Android 阅读数: 800
收藏 0 赞 0 分享

1.大家都知道为ViewPager构建适配器继承PagerAdapter,怎么构建就不说了。Viewpager会默认加载当前页和当前页的左右两页。一开始当前页是下标0,所以一开始默认加载第0页(指下标,下同)和第1页。当你向右滑动,当前页为第1页时,ViewPager会加载第2页,这时一共有3页存在(第0,1,2页)。再向右滑动,当前页为第2页时,会移除第0页,加载第3页,同理向左滑动当前页为第1页时,会移除第3页。这么说应该懂了吧。

知道了上面的原理,就可以让ViewPager始终只加载3页的图片。加载是执行instantiateItem(...)方法,移除是执行destroyItem(...)方法,可以在instantiateItem(...)里加载某一页的图片,在destroyItem(...)里回收某一页的图片。附上代码:

2.代码实例:

package com.example.test;
 
import java.util.ArrayList;
 
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ImageView;
 
public class TestActivity extends Activity{
 
 private ViewPager mPager;
 private ArrayList<View> views;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 views=new ArrayList<View>();
 views.add(new ImageView(this));
 views.add(new ImageView(this));
 views.add(new ImageView(this));
 views.add(new ImageView(this));
 views.add(new ImageView(this));
 views.add(new ImageView(this));
 views.add(new ImageView(this));
 views.add(new ImageView(this));
  
 mPager=new ViewPager(this);
 mPager.setAdapter(new MyPagerAdapter());
 setContentView(mPager);
 }
 
 class MyPagerAdapter extends PagerAdapter{
 
 @Override
 public void destroyItem(View container, int position, Object object) {
  //在此次回收图片
  //........回收代码
  
  //移除页面
  ((ViewPager)container).removeView(views.get(position));
 }
 
 @Override
 public Object instantiateItem(View container, int position) {
  // 在此次加载图片
  //......加载图片代码
  
  //加载页面
  ((ViewPager)container).addView(views.get(position), 0);
  return views.get(position);
 }
 
 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return views.size();
 }
 
 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  // TODO Auto-generated method stub
  return false;
 }
  
 }
}
更多精彩内容其他人还在看

Android 动画之AlphaAnimation应用详解

本节讲解AlphaAnimation 动画,窗口的动画效果,淡入淡出什么的,有些游戏的欢迎动画,logo的淡入淡出效果就使用AlphaAnimation,具体的祥看本文,需要的朋友可以参考下
收藏 0 赞 0 分享

Android 动画之TranslateAnimation应用详解

本节讲解TranslateAnimation动画,TranslateAnimation比较常用,比如QQ,网易新闻菜单条的动画,就可以用TranslateAnimation实现,本文将详细介绍通过TranslateAnimation 来定义动画,需要的朋友可以参考下
收藏 0 赞 0 分享

Android 动画之ScaleAnimation应用详解

本节讲解ScaleAnimation 动画在应用中的实现,有需要的朋友可以参考下
收藏 0 赞 0 分享

Android 动画之RotateAnimation应用详解

本节讲解旋转动画效果RotateAnimation方法的应用,有需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之文件操作模式深入理解

本文将介绍Android开发之文件操作模式,需要了解的朋友可以参考下
收藏 0 赞 0 分享

Android应用程序窗口(Activity)窗口对象(Window)创建指南

本文将详细介绍Android应用程序窗口(Activity)的窗口对象(Window)的创建过程,需要了解的朋友可以参考下
收藏 0 赞 0 分享

android activity设置无标题实现全屏

本文将详细介绍Android如何设置Activity全屏和无标题的实现方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android启动模拟器报错解决方法

本文将详细介绍Android模拟器报"Failed To Allocate memory 8"错误的解决办法,需要了解的朋友可以参考下
收藏 0 赞 0 分享

Android如何实现非本地图片的点击态

Android如何实现非本地图片的点击态,本文提供了详细的实现代码,需要了解的朋友可以参考下
收藏 0 赞 0 分享

android viewpaper实例探讨

本文将提供一个android viewpaper实例实现过程,需要了解更多的朋友可以参考下
收藏 0 赞 0 分享
查看更多