ViewPager的一个简单示例,这个比较乱(20)

//布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/show_info"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#88000000"
        android:gravity="center"
        android:textColor="#fff"
        android:textSize="25sp" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/show_info" />

</RelativeLayout>
//代码
public class MainActivity extends Activity implements OnPageChangeListener {
	private TextView show_info;
	private ViewPager viewpager;
	private MypagerAdapter adapter;
	private List<View> imgList = new ArrayList<View>();

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 获取arrays中的资源对象
		// 第二种方式
		TypedArray typedArray = getResources().obtainTypedArray(R.array.img);
		for (int i = 0; i < typedArray.length(); i++) {
			ImageView imageview = new ImageView(this);
			imageview.setImageDrawable(typedArray.getDrawable(i));
			// 当到一个集合中,方便销毁时调用
			imgList.add(imageview);

		}
		show_info = (TextView) this.findViewById(R.id.show_info);
		viewpager = (ViewPager) this.findViewById(R.id.viewpager);
		// adapter = new MypagerAdapter();//第一种
		adapter = new MypagerAdapter(imgList);// 第二种
		viewpager.setAdapter(adapter);

		// 显示头部的提示当前多少也,总页数
		show_info.setText(1 + "/" + adapter.getCount());
		// 实现监听方法
		viewpager.setOnPageChangeListener(this);

	}

	// 使用ViewPager必须要继承PagerAdapter 或者FragmentPagerAdapter
	class MypagerAdapter extends PagerAdapter {
		// 设置数据源 :图片资源
		// 两种方式设置资源 :1.定义资源数组 2.arrays.xml定义————》drawable view
		// 第一种方法
		private int[] img = { R.drawable.car0, R.drawable.car1,
				R.drawable.car2, R.drawable.car3, R.drawable.car4,
				R.drawable.car5, R.drawable.car6, R.drawable.car7, };
		private List<View> imgList;

		@Override
		public int getCount() {
			// return img.length;
			return this.imgList.size();
		}

		public MypagerAdapter(List<View> imgList) {
			this.imgList = imgList;
		}

		public MypagerAdapter() {
		}

		@Override
		public boolean isViewFromObject(View view, Object obj) {
			// 判断当前的视图是否是一个对象,官方文档建议这样写
			return view == obj;
		}

		// 下面两个方法要自己手动重写
		@Override
		// ,每次滑动时都会调用,实例化当前视图。把一个view放在当前的ViewPager位置中
		public Object instantiateItem(ViewGroup container, int position) {
			// 第一种:
			// // 上下文可以上面传进来,也可以用下面的方式获取
			// ImageView imageview = new ImageView(container.getContext());
			// imageview.setImageResource(img[position]);
			// // 记得要把imageview放进当前container(属于pagerVeiw)
			// container.addView(imageview);
			// // 并且记得返回视图
			// return imageview;
			// 第二种;方式
			container.addView(this.imgList.get(position));
			return this.imgList.get(position);

		}

		@Override
		// 销毁滑出去的view,position和当前位置相差1左右,(有缓存)考虑滑回去的缓存
		public void destroyItem(ViewGroup container, int position, Object object) {
			// 如果用图片资源数组无法销毁,所以建议用arrays.xml定义资源,放进一个list集合方便删除
			// super.destroyItem(container, position, object);
			// 第一种方式实现时要把super这个去掉,否则会报错
			// 第二种:
			container.removeView(this.imgList.get(position));// 用arrays.xml定义资源一定要销毁,否则回报错
		}
	}

	@Override
	// 页面滚动的状态改变
	public void onPageScrollStateChanged(int state) {
		switch (state) {
		case ViewPager.SCROLL_STATE_DRAGGING:// 拖动状态

			break;
		case ViewPager.SCROLL_STATE_IDLE:// 停止状态

			break;
		case ViewPager.SCROLL_STATE_SETTLING:// 处于自动滚动时状态

			break;
		}

	}

	@Override
	// 参数:1、位置,2、位置 的偏移量,3、位置偏移量的像素
	public void onPageScrolled(int position, float positionOffset,
			int positionOffsetPixel) {

	}

	@Override
	public void onPageSelected(int position) {
		// 设置显示滑动当前的位置改变
		show_info.setText((position + 1) + "/" + adapter.getCount());
	}
}
//数组文件
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <array name="img">
        <item>@drawable/car0</item>
        <item>@drawable/car1</item>
        <item>@drawable/car2</item>
        <item>@drawable/car3</item>
        <item>@drawable/car4</item>
        <item>@drawable/car5</item>
        <item>@drawable/car6</item>
        <item>@drawable/car7</item>
    </array>

</resources>


转载于:https://my.oschina.net/u/2541146/blog/625283

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值