首页 > 代码库 > android中viewPager+fragment实现的屏幕左右切换(进阶篇)

android中viewPager+fragment实现的屏幕左右切换(进阶篇)

Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。可以看做是一个子Activity。

先看一下布局:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     tools:context=".ViewPagerActivity" > 6  7     <android.support.v4.view.ViewPager 8         android:id="@+id/viewpager" 9         android:layout_width="wrap_content"10         android:layout_height="wrap_content"11         android:layout_gravity="center" >12     </android.support.v4.view.ViewPager>13 14 </LinearLayout>

主文件:ViewPagerActivity继承FragmentActivity

 1 package com.example.viewpagerdemo; 2  3 import java.util.ArrayList; 4 import java.util.List; 5  6 import android.os.Bundle; 7 import android.support.v4.app.Fragment; 8 import android.support.v4.app.FragmentActivity; 9 import android.support.v4.view.ViewPager;10 11 import com.example.adapter.fragmentAdapter;12 13 public class ViewPagerActivity extends FragmentActivity {14 15     @Override16     protected void onCreate(Bundle savedInstanceState) {17         super.onCreate(savedInstanceState);18         setContentView(R.layout.activity_view_pager);19         List<Fragment> fragments = new ArrayList<Fragment>();20         for (int i = 0; i < 3; i++) {21             Fragment f = new ButtonFragment();22             fragments.add(f);23         }24         ViewPager vp = (ViewPager) findViewById(R.id.viewpager);25         fragmentAdapter fa = new fragmentAdapter(getSupportFragmentManager(),26                 fragments);27         vp.setAdapter(fa);28         vp.setCurrentItem(0);29     }30 }

新建fragmentAdapter继承FragmentPagerAdapter并未写出实现的方法

 1 package com.example.adapter; 2  3 import java.util.List; 4  5 import android.support.v4.app.Fragment; 6 import android.support.v4.app.FragmentManager; 7 import android.support.v4.app.FragmentPagerAdapter; 8  9 public class fragmentAdapter extends FragmentPagerAdapter {10     private List<Fragment> fragments;11     private FragmentManager fm;12 13     public fragmentAdapter(FragmentManager fm, List<Fragment> fragments) {14         super(fm);15         this.fragments = fragments;16 17     }18 19     public fragmentAdapter(FragmentManager fm) {20         super(fm);21         this.fm = fm;22     }23 24     @Override25     public Fragment getItem(int arg0) {26         return fragments.get(arg0);27     }28 29     @Override30     public int getCount() {31         return fragments.size();32     }33 34 }

定义要展示的fragment内容,在这只放一个Button

 1 package com.example.viewpagerdemo; 2  3 import android.os.Bundle; 4 import android.support.v4.app.Fragment; 5 import android.view.LayoutInflater; 6 import android.view.View; 7 import android.view.ViewGroup; 8 import android.widget.TextView; 9 10 public class ButtonFragment extends Fragment {11     private View rootView; 1213     @Override14     public View onCreateView(LayoutInflater inflater, ViewGroup container,15             Bundle savedInstanceState) {16         rootView = inflater.inflate(R.layout.guide1, container, false);17         return rootView;18     }19 }

至此实现3个含有Button可以左右切换了

android中viewPager+fragment实现的屏幕左右切换(进阶篇)