zoukankan      html  css  js  c++  java
  • 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> 
    

      

    有些东西会,但不精通,而我现在要做的就是精通,复习回顾,整理自己的框架,举一反三。。。
  • 相关阅读:
    四级英语day9
    123
    像程序员一样思考
    Kali
    OS X
    Effective Java
    DHU ACM OJ
    Ambari
    Hadoop
    Hadoop2
  • 原文地址:https://www.cnblogs.com/liuzenglong/p/3042044.html
Copyright © 2011-2022 走看看