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

来源:互联网 发布:品牌营销找优爵网络 编辑:程序博客网 时间:2024/04/30 09:48

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

 

 

0 0
原创粉丝点击