Android3.0以前的Fragment支持(ViewPager)
来源:互联网 发布:淘宝客如何招代理 编辑:程序博客网 时间:2024/06/05 20:07
一、相关概念
Fragment非常实用,Android也为3.0以前的平台增加了Fragment支持,只是该Fragment不是继承android.app.Fragment,而是继承android.support.v4.app.Fragment。
除此之外,Android还为该android.support.v4.app.Fragment提供了如下配套类。
FragmentActivity:在早期版本上使用Fragment必须借助于FragmentActivity的支持,只有该支持类提供的getSupportFragmentManager()方法才能获取FragmentManager管理器。
ViewPager:它是Fragment容器,可以同时管理多个Fragment,并允许多个Fragment切换时提供动画效果。
FragmentPagerAdapter:Adapter类,用于为ViewPager提供多个Fragment。通常用于被扩展。
PagerTitleStrip:与ViewPager结合使用,用于在ViewPager上显示“导航条”。
二、实例
接下来Activity中还是需要按照上面介绍的两个步骤来启用ActionBar的Tab导航支持。除此之外,为了让ViewPager组件能正常工作,Activity需要为该ViewPager组件创建并设置FragmentPagerAdapter。
只要调用ActionBar的setSelectedNavigationItem()方法就可以切换ActionBar。如上程序中的①号代码所示。
只要调用ViewPager的setCurrentItem()方法来显示指定Fragment即可。如上程序中的②号代码所示。
Fragment非常实用,Android也为3.0以前的平台增加了Fragment支持,只是该Fragment不是继承android.app.Fragment,而是继承android.support.v4.app.Fragment。
除此之外,Android还为该android.support.v4.app.Fragment提供了如下配套类。
FragmentActivity:在早期版本上使用Fragment必须借助于FragmentActivity的支持,只有该支持类提供的getSupportFragmentManager()方法才能获取FragmentManager管理器。
ViewPager:它是Fragment容器,可以同时管理多个Fragment,并允许多个Fragment切换时提供动画效果。
FragmentPagerAdapter:Adapter类,用于为ViewPager提供多个Fragment。通常用于被扩展。
PagerTitleStrip:与ViewPager结合使用,用于在ViewPager上显示“导航条”。
二、实例
main.xml
<android.support.v4.view.ViewPagerxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/pager"android:layout_width="match_parent"android:layout_height="match_parent"><!-- 定义导航状态条组件 --><android.support.v4.view.PagerTitleStrip android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_gravity="top"android:background="#33b5e5"android:textColor="#fff"android:paddingTop="4dp"android:paddingBottom="4dp" /></android.support.v4.view.ViewPager>
接下来Activity中还是需要按照上面介绍的两个步骤来启用ActionBar的Tab导航支持。除此之外,为了让ViewPager组件能正常工作,Activity需要为该ViewPager组件创建并设置FragmentPagerAdapter。
ActionBar_TabSwipeNav.java
public class ActionBar_TabSwipeNav extends FragmentActivityimplements ActionBar.TabListener{ViewPager viewPager;ActionBar actionBar;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 获取ActionBar对象actionBar = getActionBar();// 获取ViewPagerviewPager = (ViewPager) findViewById(R.id.pager);// 创建一个FragmentPagerAdapter对象,该对象负责为ViewPager提供多个FragmentFragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getSupportFragmentManager()){// 获取第position位置的Fragment@Overridepublic Fragment getItem(int position){Fragment fragment = new DummyFragment();Bundle args = new Bundle();args.putInt(DummyFragment.ARG_SECTION_NUMBER, position + 1);fragment.setArguments(args);return fragment;}// 该方法的返回值i表明该Adapter总共包括多少个Fragment@Overridepublic int getCount(){return 3;}// 该方法的返回值决定每个Fragment的标题@Overridepublic CharSequence getPageTitle(int position){switch (position){case 0:return "第一页";case 1:return "第二页";case 2:return "第三页";}return null;}};// 设置ActionBar使用Tab导航方式actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);// 遍历pagerAdapter对象所包含的全部Fragment。// 每个Fragment对应创建一个Tab标签for (int i = 0; i < pagerAdapter.getCount(); i++){actionBar.addTab(actionBar.newTab().setText(pagerAdapter.getPageTitle(i)).setTabListener(this));}// 为ViewPager组件设置FragmentPagerAdapterviewPager.setAdapter(pagerAdapter); // 为ViewPager组件绑定事件监听器viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){// 当ViewPager显示的Fragment发生改变时激发该方法@Overridepublic void onPageSelected(int position){actionBar.setSelectedNavigationItem(position); //①}});}@Overridepublic void onTabUnselected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction){}// 当指定Tab被选中时激发该方法@Overridepublic void onTabSelected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction){viewPager.setCurrentItem(tab.getPosition()); //②}@Overridepublic void onTabReselected(ActionBar.Tab tab,FragmentTransaction fragmentTransaction){}}由于此处使用了ActionBar,并且使用了ViewPager来管理多个Fragment,程序代码处理Fragment的切换时更加简单:
只要调用ActionBar的setSelectedNavigationItem()方法就可以切换ActionBar。如上程序中的①号代码所示。
只要调用ViewPager的setCurrentItem()方法来显示指定Fragment即可。如上程序中的②号代码所示。
阅读全文
0 0
- Android3.0以前的Fragment支持(ViewPager)
- Android3.0以前的Fragment支持实现Tab导航
- android3.0之Fragment(碎片)基础
- Fragment in Android3.0
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- 【Android】实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- Android 实现个性的ViewPager切换动画 实战PageTransformer(兼容Android3.0以下)
- php笔记-1
- Codeforces Round #429 (Div2) C
- AD里的app_id概念
- 《机器学习&&深度学习》 视频课程资源百度云下载
- 自学问题总结1:关于JSP导入图片扩展名大小写具有敏感性
- Android3.0以前的Fragment支持(ViewPager)
- CRISC风险及信息系统监控认证
- 使用ssh工具进行服务器资料的上传下载
- SpringMVC详解(二)------详细架构
- onClick、onTouch、onTouchEvent的调用
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- The First DIY------基于树莓派3代实现定时播放天气预报功能
- 实现MATLAB匿名函数重载
- 栈的压入、弹出序列