Android中如何使用ViewPager实现类似laucher左右拖动效(2)

<?xml version="1.0" encoding="utf-8"?>   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="fill_parent"       android:layout_height="fill_parent"       android:orientation="vertical" >              <ImageView             android:layout_width="fill_parent"             android:layout_height="fill_parent"             android:background="@drawable/feature_guide_0" >         </ImageView>          </LinearLayout>  

其中item02.xml,item03.xml,item04.xml布局文件的源码和item01.xml布局文件一样,只是 ImageView 中的 android:background 属性的背景图片不同而已。

GuideViewDemoActivity.java 源码:

package com.andyidea.guidedemo;      import java.util.ArrayList;      import android.app.Activity;   import android.os.Bundle;   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.ViewGroup.LayoutParams;   import android.view.Window;   import android.widget.ImageView;      public class GuideViewDemoActivity extends Activity {              private ViewPager viewPager;         private ArrayList<View> pageViews;         private ViewGroup main, group;         private ImageView imageView;         private ImageView[] imageViews;               /** Called when the activity is first created. */       @Override       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           this.requestWindowFeature(Window.FEATURE_NO_TITLE);                      LayoutInflater inflater = getLayoutInflater();             pageViews = new ArrayList<View>();             pageViews.add(inflater.inflate(R.layout.item01, null));             pageViews.add(inflater.inflate(R.layout.item02, null));             pageViews.add(inflater.inflate(R.layout.item03, null));             pageViews.add(inflater.inflate(R.layout.item04, null));                   imageViews = new ImageView[pageViews.size()];             main = (ViewGroup)inflater.inflate(R.layout.main, null);                        // group是R.layou.main中的负责包裹小圆点的LinearLayout.             group = (ViewGroup)main.findViewById(R.id.viewGroup);                  viewPager = (ViewPager)main.findViewById(R.id.guidePages);                  for (int i = 0; i < pageViews.size(); i++) {                 imageView = new ImageView(GuideViewDemoActivity.this);                 imageView.setLayoutParams(new LayoutParams(20,20));                 imageView.setPadding(20, 0, 20, 0);                 imageViews[i] = imageView;                 if (i == 0) {                     //默认选中第一张图片                   imageViews[i].setBackgroundResource(R.drawable.page_indicator_focused);                 } else {                     imageViews[i].setBackgroundResource(R.drawable.page_indicator);                 }                 group.addView(imageViews[i]);             }                  setContentView(main);                  viewPager.setAdapter(new GuidePageAdapter());             viewPager.setOnPageChangeListener(new GuidePageChangeListener());         }              /** 指引页面Adapter */       class GuidePageAdapter extends PagerAdapter {                          @Override             public int getCount() {                 return pageViews.size();             }                  @Override             public boolean isViewFromObject(View arg0, Object arg1) {                 return arg0 == arg1;             }                  @Override             public int getItemPosition(Object object) {                 // TODO Auto-generated method stub                 return super.getItemPosition(object);             }                  @Override             public void destroyItem(View arg0, int arg1, Object arg2) {                 // TODO Auto-generated method stub                 ((ViewPager) arg0).removeView(pageViews.get(arg1));             }                  @Override             public Object instantiateItem(View arg0, int arg1) {                 // TODO Auto-generated method stub                 ((ViewPager) arg0).addView(pageViews.get(arg1));                 return pageViews.get(arg1);             }                  @Override             public void restoreState(Parcelable arg0, ClassLoader arg1) {                 // TODO Auto-generated method stub                  }                  @Override             public Parcelable saveState() {                 // TODO Auto-generated method stub                 return null;             }                  @Override             public void startUpdate(View arg0) {                 // TODO Auto-generated method stub                  }                  @Override             public void finishUpdate(View arg0) {                 // TODO Auto-generated method stub                  }         }               /** 指引页面改监听器 */       class GuidePageChangeListener implements OnPageChangeListener {                  @Override             public void onPageScrollStateChanged(int arg0) {                 // TODO Auto-generated method stub                  }                  @Override             public void onPageScrolled(int arg0, float arg1, int arg2) {                 // TODO Auto-generated method stub                  }                  @Override             public void onPageSelected(int arg0) {                 for (int i = 0; i < imageViews.length; i++) {                     imageViews[arg0]                             .setBackgroundResource(R.drawable.page_indicator_focused);                     if (arg0 != i) {                         imageViews[i]                                 .setBackgroundResource(R.drawable.page_indicator);                     }                 }                }              }            }  

运行上面的程序,效果截图如下:

Android中如何使用ViewPager实现类似laucher左右拖动效

 

Android中如何使用ViewPager实现类似laucher左右拖动效

 

Android中如何使用ViewPager实现类似laucher左右拖动效

 

Android中如何使用ViewPager实现类似laucher左右拖动效


至此大功告成,已经采用ViewPager组件实现了左右滑动(拖动)效果。本文为[Andy.Chen]原创,转载请注明出处,谢谢。

免费下载地址在

用户名与密码都是

具体下载目录在 /2012年资料/4月/23日/Android中如何使用ViewPager实现类似laucher左右拖动效果/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyydss.html