上文说到,每次滑动的时候都会有page的创建和销毁,这样很影响性能。可以使用预加载解决之。
滑动的页面少的时候可以使用预加载,这样页面滑动的时候不会频繁的销毁创建
下面我们更改Activity类。
package com.example.android_viewpager_1;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
public class MainActivity extends Activity {
private ViewPager vp;
private List<View> views;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
View vp_one =View.inflate(this, R.layout.vp_one, null);
View vp_two = View.inflate(this, R.layout.vp_two, null);
View vp_three = View.inflate(this, R.layout.vp_three, null);
views = new ArrayList<View>();
views.add(vp_one);
views.add(vp_two);
views.add(vp_three);
//设置预加载的数量,滑动的页面少的时候可以使用,页面滑动的时候不会频繁的销毁创建
vp.setOffscreenPageLimit(3);
vp.setAdapter(new MyAdapter(this,views));
}
private class MyAdapter extends PagerAdapter {
private Context context;
private List<View> views;
public MyAdapter(Context context, List<View> views) {
this.views = views;
}
@Override
public int getCount() {
return views.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return object == view;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = views.get(position);
container.addView(view);
System.out.println("初始化"+position);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = views.get(position);
container.removeView(view);
System.out.println("销毁"+position);
}
}
}