ViewPager:是android扩展包v4包中的类,这个类可以让用户左右切换当前的view;
直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
ViewPager类需要一个PagerAdapter(与adapter继承pageradaper)适配器类给它提供数据。
ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
ViewPager是一个自带手势、动画的,可以实现View对象切换显示的控件。 ViewPager是android-support-v4.jar包中的。 在layout中使用ViewPager控件时,必须使用完整的包名+类名。 ViewPager显示的内容使用PagerAdapter进行控制,在自定义PagerAdapter时,除了需要重写抽象方法以外,还需要重写Object instantiateItem()方法和void destroyItem()方法。 查看V4包的源码
1. 找到sdk的路径 2. 在sdk下依次打开extras -> android -> support -> v4 -> src,并将完整路径复制 3. 在项目的libs文件夹下,创建android-support-v4.jar.properties文件,并编辑,内容为 src=复制的路径(#"/"把"//"#) 4. 在eclipse中将项目关闭(close)然后重新打开(open)
界面文件
activity_main.xml
<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_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
------------------
page_01.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@android:color/holo_blue_light"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:textSize="36sp"
android:textColor="#ffffff"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Page 01" />
</RelativeLayout>
-------------------
page_02.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@android:color/holo_green_light"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="Page 02"
android:textColor="#ffffff"
android:textSize="36sp" />
</RelativeLayout>
JAVA Activity:
public class MainActivity extends Activity {
private ViewPager vpViewPager;
private PagerAdapter adapter;
private List<View> pages;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pages = new ArrayList<View>();
pages.add(getLayoutInflater().inflate(R.layout.page_01, null));
pages.add(getLayoutInflater().inflate(R.layout.page_02, null));
pages.add(getLayoutInflater().inflate(R.layout.page_03, null));
vpViewPager = (ViewPager) findViewById(R.id.vp_view_pager);
adapter = new InnerPagerAdapter();
vpViewPager.setAdapter(adapter);
}
private class InnerPagerAdapter extends PagerAdapter {
@Override
public Object instantiateItem(ViewGroup container, int position) {
// 初始化需要显示的View对象,将View对象添加到容器(参数1),并作为返回值
View view = pages.get(position);
container.addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// 从容器中把View对象移除
container.removeView(pages.get(position));
}
@Override
public int getCount() {
return pages.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
}