ViewPager

来源:互联网 发布:java桌面开发框架 编辑:程序博客网 时间:2024/05/21 21:35

      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;@Overrideprotected 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 {@Overridepublic Object instantiateItem(ViewGroup container, int position) {// 初始化需要显示的View对象,将View对象添加到容器(参数1),并作为返回值View view = pages.get(position);container.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// 从容器中把View对象移除container.removeView(pages.get(position));}@Overridepublic int getCount() {return pages.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}}}

0 0
原创粉丝点击