//布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/show_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#88000000" android:gravity="center" android:textColor="#fff" android:textSize="25sp" /> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/show_info" /> </RelativeLayout> //代码 public class MainActivity extends Activity implements OnPageChangeListener { private TextView show_info; private ViewPager viewpager; private MypagerAdapter adapter; private List<View> imgList = new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取arrays中的资源对象 // 第二种方式 TypedArray typedArray = getResources().obtainTypedArray(R.array.img); for (int i = 0; i < typedArray.length(); i++) { ImageView imageview = new ImageView(this); imageview.setImageDrawable(typedArray.getDrawable(i)); // 当到一个集合中,方便销毁时调用 imgList.add(imageview); } show_info = (TextView) this.findViewById(R.id.show_info); viewpager = (ViewPager) this.findViewById(R.id.viewpager); // adapter = new MypagerAdapter();//第一种 adapter = new MypagerAdapter(imgList);// 第二种 viewpager.setAdapter(adapter); // 显示头部的提示当前多少也,总页数 show_info.setText(1 + "/" + adapter.getCount()); // 实现监听方法 viewpager.setOnPageChangeListener(this); } // 使用ViewPager必需要继承PagerAdapter 或者FragmentPagerAdapter class MypagerAdapter extends PagerAdapter { // 设置数据源 :图片资源 // 两种方式设置资源 :1.定义资源数组 2.arrays.xml定义————》drawable view // 第一种方法 private int[] img = { R.drawable.car0, R.drawable.car1, R.drawable.car2, R.drawable.car3, R.drawable.car4, R.drawable.car5, R.drawable.car6, R.drawable.car7, }; private List<View> imgList; @Override public int getCount() { // return img.length; return this.imgList.size(); } public MypagerAdapter(List<View> imgList) { this.imgList = imgList; } public MypagerAdapter() { } @Override public boolean isViewFromObject(View view, Object obj) { // 判断当前的视图是不是一个对象,官方文档建议这样写 return view == obj; } // 下面两个方法要本身手动重写 @Override // ,每次滑动时都会调用,实例化当前视图。把一个view放在当前的ViewPager位置中 public Object instantiateItem(ViewGroup container, int position) { // 第一种: // // 上下文能够上面传进来,也能够用下面的方式获取 // ImageView imageview = new ImageView(container.getContext()); // imageview.setImageResource(img[position]); // // 记得要把imageview放进当前container(属于pagerVeiw) // container.addView(imageview); // // 而且记得返回视图 // return imageview; // 第二种;方式 container.addView(this.imgList.get(position)); return this.imgList.get(position); } @Override // 销毁滑出去的view,position和当前位置相差1左右,(有缓存)考虑滑回去的缓存 public void destroyItem(ViewGroup container, int position, Object object) { // 若是用图片资源数组没法销毁,因此建议用arrays.xml定义资源,放进一个list集合方便删除 // super.destroyItem(container, position, object); // 第一种方式实现时要把super这个去掉,不然会报错 // 第二种: container.removeView(this.imgList.get(position));// 用arrays.xml定义资源必定要销毁,不然回报错 } } @Override // 页面滚动的状态改变 public void onPageScrollStateChanged(int state) { switch (state) { case ViewPager.SCROLL_STATE_DRAGGING:// 拖动状态 break; case ViewPager.SCROLL_STATE_IDLE:// 中止状态 break; case ViewPager.SCROLL_STATE_SETTLING:// 处于自动滚动时状态 break; } } @Override // 参数:一、位置,二、位置 的偏移量,三、位置偏移量的像素 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixel) { } @Override public void onPageSelected(int position) { // 设置显示滑动当前的位置改变 show_info.setText((position + 1) + "/" + adapter.getCount()); } } //数组文件 <?xml version="1.0" encoding="utf-8"?> <resources> <array name="img"> <item>@drawable/car0</item> <item>@drawable/car1</item> <item>@drawable/car2</item> <item>@drawable/car3</item> <item>@drawable/car4</item> <item>@drawable/car5</item> <item>@drawable/car6</item> <item>@drawable/car7</item> </array> </resources>