一. 概念 1. Fragment
Fragment作为Activity界面的一部分组成出现 可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。 在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace()) Fragment可以响应自己的输入事件,并且有自己的生命周期,当然,它们的生命周期直接被其所属的宿主activity的生命周期影响。 Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互。Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,并在由activity管理的back stack中保存那些变化. 例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章--2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输入事件。 因此, 取代使用一个activity来选择一篇文章而另一个activity来阅读文章的方式,用户可以在同一个activity中选择一篇文章并且阅读, 如图所示: 2. ViewPager ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“android-support-v4.jar” 二. 实现 1. 首先在Activity中放入ViewPager控件 <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="wrap_content" > </android.support.v4.view.ViewPager> 2. 创建三个Fragment (1) 创建布局文件 (2) 创建类继承Fragment public class PageOneFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_one, container, false); return rootView; } } 3. 为ViewPager创建Adapter (1) 创建类继承FragmentPagerAdapter (2) 重写getItem(int index) 以及 getCount() 方法 注意:自定义的构造函数一定要实现父类的构造函数 super(fm); public class MyPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragments = new ArrayList<Fragment>(); public MyPagerAdapter(FragmentManager fm){ super(fm); } public MyPagerAdapter(FragmentManager fragmentManager, ArrayList<Fragment> fragments){ super(fragmentManager);
this.fragments = fragments; } @Override public Fragment getItem(int index) { return fragments.get(index); } @Override public int getCount() { return fragments.size(); } } 4. 在Activity中将之前创建的3个Fragment加入到ViewPager中 ViewPager pager = null; ArrayList<Fragment> fragments = null; PagerAdapter adapter = null; private void initFragment(){ fragments.add(new PageOneFragment()); fragments.add(new PageTwoFragment()); fragments.add(new PageThreeFragment()); } //实现之前写的adapter并赋给ViewPager即可 private void initPager(){ adapter = new MyPagerAdapter(getSupportFragmentManager(), fragments); pager.setAdapter(adapter); } 5. 至此,就已经实现了左右滑动切换页面的效果。 |
|
来自: 黎可图书馆 > 《Android学习》