//鉴于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.