ViewPager使用心得总结

来源:互联网 发布:阿里云投诉电话 编辑:程序博客网 时间:2024/06/11 18:33

这里写图片描述

1.创建步骤

1.1.在布局文件中创建布局

<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=".MainActivity" >    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="match_parent" >        <android.support.v4.view.PagerTabStrip            android:id="@+id/pts"            android:layout_width="match_parent"            android:layout_height="30dp"            android:layout_gravity="top" >        </android.support.v4.view.PagerTabStrip>    </android.support.v4.view.ViewPager>    <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:text="第1页"        android:textSize="24sp" /></RelativeLayout>

1.2.创建PagerAdapter

public class GuideAdapter extends PagerAdapter{    private List<View> views;    private List<String> strs;    public GuideAdapter(List<View> views, List<String> strs)    {        this.views = views;        this.strs = strs;    }    @Override    public Object instantiateItem(ViewGroup container, int position)    {        container.addView(views.get(position));        return position;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object)    {        container.removeView(views.get(position));    }    @Override    public int getCount()    {        return views.size();    }    @Override    public boolean isViewFromObject(View view, Object object)    {        return (view == views.get((Integer)object));    }    @Override    public CharSequence getPageTitle(int position)    {        return strs.get(position);    }}

1.3.设置onPagerChanger监听器

@Override    public void onPageScrollStateChanged(int arg0)    {    }    @Override    public void onPageScrolled(int arg0, float arg1, int arg2)    {    }    @Override    public void onPageSelected(int position)    {        textView.setText("第" + (position+1) + "页");    }

2.包含的方法

2.1.Object instantiateItem(ViewGroup container, int position)这个函数的实现的功能是创建指定位置的页面视图2.2.destroyItem(ViewGroup container, int position, Object object)该方法实现的功能是移除一个给定位置的页面。2.3.int getCount()返回当前有效视图的个数。2.4.boolean isViewFromObject(View view, Object object)该函数用来判断instantiateItem(ViewGroup, int)函数所返回来的Key与一个页面视图是否是代表的同一个视图2.5.CharSequence getPageTitle(int position)设置标题;

3.使用心得

3.1.心得1

Object instantiateItem(ViewGroup container, int position)方法返回的object就是“key”这个可以自定义,只要能唯一判断出view就行;boolean isViewFromObject(View view, Object object)的判断也要跟着不同的key而做相应的改变;

3.2.心得2

1.可以使用viewpager做引导页;2.也可以使用viewpager+fragment做滑动的tab布局实现;
0 0