Android中ViewPage的使用

ViewPage的使用

package com.gfive.help;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

import com.gfive.help.tools.Tools;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.Toast;

public class ViewPageActivity extends Activity {
	ViewPager viewPager;
	ArrayList<View> list;
	ViewGroup main, group;
	ImageView imageView;
	ImageView[] imageViews;
	private static int c_id = 0;
	private static final String IMAGE_PATH = "/gfive/images";
	/**
	 * 图片类型
	 */
	public static final String IMAGE_TYPE = "image_type";
	
	private String imageType;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		if(!Tools.existSDcard(this)){//如果没有内存卡,请绕开
				finish();
		}
		imageType = getIntent().getStringExtra(IMAGE_TYPE);		//获取图片类型
		LayoutInflater inflater = getLayoutInflater();
		List<Bitmap> lists = getBitmaps();
		list = new ArrayList<View>();
		ImageView iv = null;
		for(int i = 0;i<lists.size();i++){
			iv = new ImageView(this);
			iv.setImageBitmap(lists.get(i));
			list.add(iv);
		}
		imageViews = new ImageView[list.size()];
		ViewGroup main = (ViewGroup) inflater.inflate(R.layout.tutorials_layout, null);
		ViewGroup group = (ViewGroup) main.findViewById(R.id.viewGroup);
		viewPager = (ViewPager) main.findViewById(R.id.viewPager);
		for (int i = 0; i < list.size(); i++) {
			imageView = new ImageView(ViewPageActivity.this);
			imageView.setLayoutParams(new LayoutParams(12, 12));
			imageViews[i] = imageView;
			if (i == 0) {
				imageViews[i].setBackgroundResource(R.drawable.guide_dot_white);
			} else {
				imageViews[i].setBackgroundResource(R.drawable.guide_dot_black);
			}
			group.addView(imageView);
		}
		setContentView(main);
		viewPager.setAdapter(new MyAdapter());
		viewPager.setOnPageChangeListener(new MyListener());
		viewPager.setCurrentItem(300);
	}

	class MyAdapter extends PagerAdapter {
		@Override
		public int getCount() {
			return Integer.MAX_VALUE;
		}

		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			return arg0 == arg1;
		}

		@Override
		public int getItemPosition(Object object) {
			return super.getItemPosition(object);
		}

		@Override
		public void destroyItem(View arg0, int arg1, Object arg2) {
		}

		@Override
		public Object instantiateItem(View arg0, int arg1) {
			try {
				((ViewPager) arg0).addView(list.get(arg1 % list.size()), 0);
			} catch (Exception e) {
			}
			return list.get(arg1 % list.size());
		}

		@Override
		public void restoreState(Parcelable arg0, ClassLoader arg1) {
		}

		@Override
		public Parcelable saveState() {
			return null;
		}

		@Override
		public void startUpdate(View arg0) {
		}

		@Override
		public void finishUpdate(View arg0) {
		}
	}

	class MyListener implements OnPageChangeListener {
		// 当滑动状态改变时调用
		@Override
		public void onPageScrollStateChanged(int arg0) {

		}

		// 当当前页面被滑动时调用
		@Override
		public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
			if(position==list.size()-1){	//最后一页是关掉帮助
				finish();
			}
		}

		// 当新的页面被选中时调用
		@Override
		public void onPageSelected(int location) {
			if (location > 2 && list.size()>0) {
				location = location % list.size();
			}
			c_id = location;
			for (int i = 0; i < imageViews.length; i++) {
				imageViews[location].setBackgroundResource(R.drawable.guide_dot_white);
				if (location != i) {imageViews[i].setBackgroundResource(R.drawable.guide_dot_black);
				}
			}
		}
	}
	
	@Override
	protected void onDestroy() {
		finish();
		super.onDestroy();
		
	}
	
	/**
	 * 获取手机中的图片集合
	 * @return
	 */
	private List<Bitmap> getBitmaps(){
		int i = 1;
		List<Bitmap> bitmaps = new ArrayList<Bitmap>();
		StringBuilder sbPath = new StringBuilder();
		sbPath.append(Tools.SDCARD_STORAGE_PATH).append(IMAGE_PATH).append(imageType);
		while(true){
			File file = new File(sbPath.toString()+("guide_img"+i+".png").toString());
			if(!file.exists()) break;
			bitmaps.add(BitmapFactory.decodeFile(sbPath.toString()+("guide_img"+i+".png")));
			i++;
		}
		return bitmaps;
	}
}

  布局文件:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
	android:layout_width="fill_parent" 
	android:layout_height="fill_parent" 
	android:orientation="vertical" > 
		<android.support.v4.view.ViewPager 
			android:id="@+id/viewPager" 
			android:layout_width="fill_parent" 
			android:layout_height="wrap_content" /> 
		<RelativeLayout 
			android:layout_width="fill_parent" 
			android:layout_height="wrap_content" 
			android:orientation="vertical" > 
					<LinearLayout 
					android:id="@+id/viewGroup" 
					android:layout_width="fill_parent" 
					android:layout_height="wrap_content" 
					android:layout_alignParentBottom="true" 
					android:layout_marginBottom="30dp" 
					android:gravity="center_horizontal" 
					android:orientation="horizontal" /> 
		</RelativeLayout> 
</FrameLayout> 

  

有些东西会,但不精通,而我现在要做的就是精通,复习回顾,整理自己的框架,举一反三。。。
原文地址:https://www.cnblogs.com/liuzenglong/p/3042044.html