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
	// 參數:一、位置,二、位置 的偏移量,三、位置偏移量的像素
	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>
相關文章
相關標籤/搜索