Android教程:使用ViewPager实现左右循环滑动(2)

package cn.com.karl.viewpager;      import Java.util.ArrayList;         import android.app.Activity;   import android.content.Intent;   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.util.Log;   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 MainActivity extends Activity {       ViewPager viewPager;       ArrayList<View> list;       ViewGroup main, group;       ImageView imageView;       ImageView[] imageViews;       private static int c_id = 0;       @Override       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           this.requestWindowFeature(Window.FEATURE_NO_TITLE);           LayoutInflater inflater = getLayoutInflater();           list = new ArrayList<View>();           list.add(inflater.inflate(R.layout.item1, null));           list.add(inflater.inflate(R.layout.item2, null));           list.add(inflater.inflate(R.layout.item3, null));           list.add(inflater.inflate(R.layout.item4, null));           list.add(inflater.inflate(R.layout.item5, null));              imageViews = new ImageView[list.size()];           ViewGroup main = (ViewGroup) inflater.inflate(R.layout.main, 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(MainActivity.this);               imageView.setLayoutParams(new LayoutParams(12,12));               //imageView.setPadding(10, 0, 10, 0);               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) {               // 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(list.get(arg1));           }              @Override           public Object instantiateItem(View arg0, int arg1) {               // TODO Auto-generated method stub                   try{                       ((ViewPager) arg0).addView(list.get(arg1%list.size()),0);                       }catch (Exception e) {                           // TODO: handle exception                       }                   return list.get(arg1%list.size());           }              @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 MyListener implements OnPageChangeListener {              //当滑动状态改变时调用             @Override           public void onPageScrollStateChanged(int arg0) {               // TODO Auto-generated method stub               //arg0=arg0%list.size();                          }              //当当前页面被滑动时调用             @Override           public void onPageScrolled(int arg0, float arg1, int arg2) {               // TODO Auto-generated method stub                          }              //当新的页面被选中时调用             @Override           public void onPageSelected(int arg0) {                if(arg0>2){                       arg0=arg0%list.size();                      }               c_id = arg0;               for (int i = 0; i < imageViews.length; i++) {                   imageViews[arg0]                           .setBackgroundResource(R.drawable.guide_dot_white);                   if (arg0 != i) {                       imageViews[i]                               .setBackgroundResource(R.drawable.guide_dot_black);                   }               }                              Log.e("-------------", "当前是第"+c_id+"页");           }          }   }  

代码跟上一篇差不多,大家自己研究吧!下面看下效果:

Android教程:使用ViewPager实现左右循环滑动


忘记了,这种效果不太好用图片演示,大家自己演示吧!滑动到最后一张,再滑动就是进入了第一页。下面看下我logcat下的打印:

Android教程:使用ViewPager实现左右循环滑动


这里默认是从第0页开始的。

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

转载注明出处:http://www.heiqu.com/wyyyjw.html