您的位置:首页 > 移动开发 > Android开发

android ViewPager学习(三)通过FragmentPagerAdapter来创建ViewPager

2014-07-16 14:52 375 查看
//鉴于fragment的优点,谷歌建议通过fragment来实现viewpager

//API文档里提示FragmentAdapter适合加载静态fragment页面,每一个访问过的Fragment将会保留在内存中,对于有大量页面的配置,建议使用FragmentStatePagerAdapter.

//当使用FragmentAdapter的时候,ViewPager应有一个ID。最少要重写 getItem(int)和PagerAdapter.getCount()两个方法

//首先创建activity继承FragmentActivity(向下兼容),在其中添加viewpager;

//创建相应的Fragment,并生成FragmentList,然后创建FragmentPagerAdapter应用到viewpager上;

//示例如下:

package com.example.ctroltest.viewpager;

import java.util.ArrayList;

import java.util.List;

import com.example.ctroltest.R;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentPagerAdapter;

import android.support.v4.view.ViewPager;

import android.view.Menu;

import android.view.ViewGroup;

public class VpFragmentAdapter extends FragmentActivity {

private ViewPager myViewPager01;// 定义ViewPager

private List<Fragment> myfragmentlist = new ArrayList<Fragment>();// 定义Fragment的list

private FragmentManager myFragmentManager;// 定义Fragment的管理器

private int currentPageIndex = 0; // 当前ViewPager在切换前的现实页面ID

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_vp_fragment_adapter);

// 首先初始化FragmentList,将viewpager滑屏要现实的Fragment添加到Fragment列表中

myfragmentlist.add(new VpFragment01());

myfragmentlist.add(new VpFragment02());

myfragmentlist.add(new VpFragment03());

// 获取ViewPager对象

myViewPager01 = (ViewPager) findViewById(R.id.vp01forFragmentPagerAdapter);

//关联FragmentManager

myFragmentManager = getSupportFragmentManager();

// 实例化FragmentPagerAdapter

MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(

myFragmentManager);

//给ViewPager应用FragmentPagerAdapter

myViewPager01.setAdapter(myFragmentPagerAdapter);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.vp_fragment_adapter, menu);

return true;

}

public class MyFragmentPagerAdapter extends FragmentPagerAdapter {

public MyFragmentPagerAdapter(FragmentManager fm) {

super(fm);

// TODO Auto-generated constructor stub

}

@Override

public Fragment getItem(int arg0) {

// TODO Auto-generated method stub

return myfragmentlist.get(arg0);

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return myfragmentlist.size();

}

}

}

activity_vp_fragment_adapter.XML布局文件:

<LinearLayout 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:orientation="vertical"

>

<android.support.v4.view.ViewPager

android:id="@+id/vp01forFragmentPagerAdapter"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<android.support.v4.view.PagerTabStrip

android:id="@+id/pagerTabStrip01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="bottom"

/>

</android.support.v4.view.ViewPager>

</LinearLayout>

VpFragment01的配置:

package com.example.ctroltest.viewpager;

import com.example.ctroltest.R;

import android.os.Bundle;

import android.support.v4.app.Fragment;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

public class VpFragment01 extends Fragment {

public VpFragment01() {

// TODO Auto-generated constructor stub

}

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

// TODO Auto-generated method stub

return inflater.inflate(R.layout.fragment_page01,container, false);

}

}

fragment_page01的布局文件为:

<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:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".ViewPageAdapterTest" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="FragmentPagerAdapter 测试页面01" />

</RelativeLayout>

同理创建fragment:VpFragment02、VpFragment03

实现的效果如下:







这里没有添加title.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: