您的位置:首页 > 其它

ViewPager 的简单使用(一)

2015-12-17 21:26 281 查看
ViewPager 是 AdapterView 模式修改后的实现,ListView 和 GridView 小部件也使用了框架的这种模式。ViewPager 需要一个继承自 PagerAdpter 的子类适配器来实现。

ViewPager 本身不能实现分页控件的回收,但它每时每刻都提供了回调方法来进行条目的创建和销毁。所以在特定的时间内,内存中运行的内容视图的数量是固定的(屏幕以外的页数默认限制值为 3,跟踪页面的编号总是围绕着当前可见的页面居中进行的)。效果如下:

图一:



图二:



ImagePagerAdapter.java :

package com.crazy.viewpagertest;

import android.content.Context;
import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ImagePagerAdapter extends PagerAdapter {

private Context mContext;

private static final int[] IMAGES = {
R.drawable.bg_01, R.drawable.bg_02, R.drawable.bg_03,
R.drawable.bg_04, R.drawable.bg_05
};

private static final int[] COLORS = {
Color.RED, Color.BLUE, Color.GREEN,
Color.GRAY, Color.MAGENTA
};

public ImagePagerAdapter(Context context) {
super();
mContext = context;
}

/**
*  页面的总数
*/
@Override
public int getCount() {
return IMAGES.length;
}

/**
*  如果需要在 ViewPager 内一次显示超过一页的内容,那么需要重写该方法
*/
@Override
public float getPageWidth(int position) {
return 1f;
// 每个页面的宽度是视图的 1/3 (如效果图2)
//  return 0.333f;
}

/**
*  返回唯一的键对象来表示某个条目(此处是 imageView)
*/
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 创建一个新的 ImageView 并把它添加到提供的容器中
ImageView imageView = new ImageView(mContext);
// 设置此位置的内容
imageView.setImageResource(IMAGES[position]);
imageView.setBackgroundColor(COLORS[position]);

imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);

// 添加视图
container.addView(imageView);

return imageView;
}

/**
*  当创建的新视图或者某个视图滚动超出了页数限制的范围后,
*  需要删除该视图时,就会分别调用 instantiateItem() 和 destroyItem()
*/
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// 从容器中删除视图
container.removeView((View)object);
}

/**
*  把从 instantiateItem() 返回的 view 关联到给定的 ViewGroup 上(不一定要相等)。
*/
@Override
public boolean isViewFromObject(View view, Object object) {
// 检查从 instantiateItem() 返回的对象与添加到容器相应位置的视图是否是同一个对象。
// 此处是同一个对象
return (view == object);
}

}


MainActivity.java :

package com.crazy.viewpagertest;

import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

ViewPager viewPager = new ViewPager(this);
viewPager.setAdapter(new ImagePagerAdapter(this));
setContentView(viewPager);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: