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>