ViewPager的使用

来源:互联网 发布:mac editplus 编辑:程序博客网 时间:2024/06/14 13:21
  1. ViewPager直接继承了ViewGroup,是一个容器类,既然是容器类,就可以存放视图View等等。
  2. 使用ViewPager的时候要用适配器来提供数据,一般都用PagerAdapter适配器。
  3. ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
  4. 在写ViewPager的时候一般也要有PagerTabStrip和PagerTitleStrip,两个只需其一即可。是标题的作用。

创建适配器的时候,需要重写以下四个方法:
这里写图片描述

  1. instantiateItem(ViewGroup, int):初始化视图。
  2. destroyItem(ViewGroup, int, Object):当翻页的时候销毁一个视图。
  3. getCount():取得当前容器中内容的数量。
  4. isViewFromObject(View, Object):true if view is associated with the key object object。

看一下模拟效果:
这里写图片描述

这里写图片描述

具体代码:
tab1.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/tv1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center"        android:text="Hello Android"        android:textSize="25sp" /></LinearLayout>

tab2.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/tv2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:gravity="center"        android:text="娱乐"        android:textSize="25sp" /></LinearLayout>

tab3.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <ProgressBar        android:id="@+id/progressBar1"        style="?android:attr/progressBarStyleLarge"        android:layout_width="wrap_content"        android:layout_height="wrap_content"          android:gravity="center"/></LinearLayout>

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" >    <android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="#EEEEEE"        android:gravity="center" >        <android.support.v4.view.PagerTitleStrip            android:id="@+id/pagerTitleStrip"            android:layout_width="match_parent"            android:layout_height="70dp"            android:background="#00897B"            android:gravity="center" >        </android.support.v4.view.PagerTitleStrip>    </android.support.v4.view.ViewPager></RelativeLayout>

MainActivity.java

package com.example.viewpagertest;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.PagerTitleStrip;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;public class MainActivity extends Activity {    private ViewPager pager;    private PagerTitleStrip titleStrip;    private List<View> list;    private List<String> title;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        pager = (ViewPager) findViewById(R.id.viewPager);        titleStrip = (PagerTitleStrip) findViewById(R.id.pagerTitleStrip);        // 动态加载布局        View view1 = LayoutInflater.from(MainActivity.this).inflate(                R.layout.tab1, null);        View view2 = LayoutInflater.from(MainActivity.this).inflate(                R.layout.tab2, null);        View view3 = LayoutInflater.from(MainActivity.this).inflate(                R.layout.tab3, null);        list = new ArrayList<View>();        list.add(view1);// 将布局放到List的容器中        list.add(view2);        list.add(view3);        title = new ArrayList<String>();// 将标题信息放在容器中        title.add("新闻");        title.add("娱乐");        title.add("财经");        // 创建PagerAdapter        pager.setAdapter(new MyAdapter());    }    class MyAdapter extends PagerAdapter {        @Override        public boolean isViewFromObject(View arg0, Object arg1) {            return arg0 == arg1;// 官方这样写的        }        @Override        public Object instantiateItem(ViewGroup container,                int position) {            ((ViewPager) container).addView(list.get(position));            return list.get(position);        };        @Override        public void destroyItem(ViewGroup container, int position,                Object object) {            ((ViewPager) container).removeView(list.get(position));        };        @Override        public int getCount() {            return list.size();        }        @Override        public int getItemPosition(Object object) {            return super.getItemPosition(object);        }        @Override        public CharSequence getPageTitle(int position) {            return title.get(position);        }    };}
0 0
原创粉丝点击