Android ViewPager使用

发布时间:2014-10-23 23:24:19
来源:分享查询网

1、ViewPager的主要用途是做可以滑动的页面,Android4.0后的原生联系人程序,拨号盘和通话记录之间滑动就是使用的ViewPager,再一个很常见到的例子,微信,微博等初次登陆时的导航提示,也是使用ViewPager实现的。所以ViewPager还是很常用的。 那么我们就开始吧。 先来两张效果图   好了,开始上代码: 1、首先在布局文件中加入ViewPager控件: <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" tools:context=".ViewPagerActivity" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center"/> </RelativeLayout> 2、此时我们已经把ViewPager加到了我们的布局中,但是它是没有数据的,我们像ListView一样,给他提供一个适配器,Android给我们提供了ViewPager的基本适配器PagerAdapter,我们继承这个类。 class SkyViewPagerAdapter extends PagerAdapter { private List<View> mListViews; public SkyViewPagerAdapter (List<View> views) { this.mListViews = views; } public int getCount() { return mListViews.size(); } public Object instantiateItem(ViewGroup container, int position) { container.addView(mListViews.get(position)); return mListViews.get(position); } public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mListViews.get(position)); } public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } } 这里面getCount()很容易理解,ViewPager显示的时候,首先读取它对应适配器的getCount方法,看看需要显示的数据总数,此方法和ListView的getCount效果一致。 这里比较重要的是另外两个方法instantiateItem(ViewGroup container,int position)  和 destroyItem(ViewGroup container, int position, Object object) 。在这两个方法里实现了增加和删除View的功能。 3、经过上面两个步骤,我们实现了ViewPager, 和 PagerAdapter,但是还有最重要的一点,上面SkyViewPagerAdapter 的构造函数了里的List数据哪儿来的,那么请接着往下看,精彩马上就来 /** * 初始化ViewPager要显示的数据。 */ private void initListViews(){ mListViews = new ArrayList<View>(); LayoutInflater mInflater = LayoutInflater.from(this); View view1 = mInflater.inflate(R.layout.view_pager_item_1, null); View view2 = mInflater.inflate(R.layout.view_pager_item_2, null); mListViews.add(view1); mListViews.add(view2); } view_pager_item_1.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/mImage" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/view_pager_1" /> <TextView android:id="@+id/mText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="15dip" android:text="1"/> </RelativeLayout> view_pager_item_2.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/mImage" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/view_pager_2" /> <TextView android:id="@+id/mText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="15dip" android:textColor="#ff0000" android:text="2"/> </RelativeLayout> 4、最后展示最重要的一步,把所有的都关联起来... mViewPager = (ViewPager) findViewById(R.id.viewpager); //从View中获取ViewPager实例。 mViewPagerAdapter = new SkyViewPagerAdapter(mListViews);//新建SkyViewPagerAdapter对象,并把View的list数据传递进去。 mViewPager.setAdapter(mViewPagerAdapter);//把Adapter设置给ViewPager。 注释里解释的很清楚了,就不在说明了。 点击源代码下载

返回顶部
查看电脑版