本文主要介绍如何利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果。即google play首页、新浪微博消息(at、评论、私信、广播)页面的效果。ViewPager+Fragment组合为google推荐方式,比TabActivity+Activity的效率高的多

1、添加android support包
因为上面的几个类都是在android support包中才提供,我们先添加包。
在Eclipse->Window->Android SDK Manager,选择列表中Extras->Android
Support
Library进行安装。下载完后在android-sdk\extras\android\support目录下,这里我们选择v4版本,进入v4目
录,拷贝其中的android-support-v4.jar文件到工程的libs目录(若没有新建)下即可,编译时ADT会自动将其导入项目中。

2、新建ViewPager的layout,内容如下

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical" >
  6. <android.support.v4.view.ViewPager
  7. android:id="@+id/viewPager"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_gravity="center" >
  11. <android.support.v4.view.PagerTabStrip
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:layout_gravity="top" />
  15. </android.support.v4.view.ViewPager>
  16. </LinearLayout>

ViewPager用来管理layout并可以左右滑动显示各个页面数据,PagerTabStrip用来显示页面title,android:layout_gravity="top"表示title在顶部,可设置bottom等。

3、新建FragmentActivity页面
FragmentActivity页面含有ViewPager元素,可以用来显示Fragment,定义如下:

  1. FragmentActivity页面
  2. public class ViewPagerDemo extends FragmentActivity {
  3. /** 页面list **/
  4. List<Fragment> fragmentList = new ArrayList<Fragment>();
  5. /** 页面title list **/
  6. List<String>   titleList    = new ArrayList<String>();
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.view_pager_demo);
  11. ViewPager vp = (ViewPager)findViewById(R.id.viewPager);
  12. fragmentList.add(new ViewPagerFragment1("页面1"));
  13. fragmentList.add(new ViewPagerFragment1("页面2"));
  14. fragmentList.add(new ViewPagerFragment1("页面3"));
  15. titleList.add("title 1 ");
  16. titleList.add("title 2 ");
  17. titleList.add("title 3 ");
  18. vp.setAdapter(new myPagerAdapter(getSupportFragmentManager(), fragmentList, titleList));
  19. }
  20. /**
  21. * 定义适配器
  22. *
  23. * @author gxwu@lewatek.com 2012-11-15
  24. */
  25. class myPagerAdapter extends FragmentPagerAdapter {
  26. private List<Fragment> fragmentList;
  27. private List<String>   titleList;
  28. public myPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList){
  29. super(fm);
  30. this.fragmentList = fragmentList;
  31. this.titleList = titleList;
  32. }
  33. /**
  34. * 得到每个页面
  35. */
  36. @Override
  37. public Fragment getItem(int arg0) {
  38. return (fragmentList == null || fragmentList.size() == 0) ? null : fragmentList.get(arg0);
  39. }
  40. /**
  41. * 每个页面的title
  42. */
  43. @Override
  44. public CharSequence getPageTitle(int position) {
  45. return (titleList.size() > position) ? titleList.get(position) : "";
  46. }
  47. /**
  48. * 页面的总个数
  49. */
  50. @Override
  51. public int getCount() {
  52. return fragmentList == null ? 0 : fragmentList.size();
  53. }
  54. }
  55. }


中的myPagerAdapter集成自ragmentPagerAdapter,为ViewPager提供数据源。onCreate函数得到
ViewPager实例并设置数据源,getSupportFragmentManager表示得到Fragment管理器。
ViewPagerFragment1表示具体的页面,见下面介绍。

4、新建Fragment页面
Fragment页面即为左右滑动需要显示的页面,新建类集成Fragment,并重写onCreateView函数即可。onCreateView函数相当于Activity的onCreate函数。如下:

  1. public class ViewPagerFragment1 extends Fragment {
  2. private String   text;
  3. private TextView tv = null;
  4. //  Fragment 不能写构造函数
  5. //    public ViewPagerFragment1(String text){
  6. //        super();
  7. //        this.text = text;
  8. }
  9. /**
  10. * 覆盖此函数,先通过inflater inflate函数得到view最后返回
  11. */
  12. @Override
  13. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  14. View v = inflater.inflate(R.layout.view_pager_fragment_demo1, container, false);
  15. tv = (TextView)v.findViewById(R.id.viewPagerText);
  16. tv.setText("第一个页面");
  17. return v;
  18. }
  19. }

简单效果如下:

Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果的更多相关文章

  1. 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果

    本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...

  2. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  3. Android中通过Fragment进行简单的页面切换

    首先是activity中的布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constr ...

  4. android使用GestureDetector实现手势下滑关闭页面的效果。

    实现类似Android风云直播手机端注册登录页,当手势向下滑动的时候,关闭页面的效果. 使用GestureDetector来实现这个效果,当手势在屏幕上面滑动的时候 ,会掉用onFling方法,所以, ...

  5. Android中实现整个视图切换的左右滑动效果

    Android中提供了一个Gallary,可以实现图片或者文本的左右滑动效果. 如何让整个视图都能实现左右滑动,达到类似于Gallary的效果呢?可以直接用一个开源的ViewFlow来实现.   项目 ...

  6. Android利用ViewPager实现滑动广告板

    •android-support-v4.jar,这是谷歌官方 给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api.而ViewPager就是其 ...

  7. Android之Viewpager+Fragment实现懒加载

    我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用.而ViewPager默认会缓存三页数据,即:Viewpager每加载一个Fra ...

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

    Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等.可以看做是一个子Activity. 先看一下布局: 1 <LinearLayout xmlns:a ...

  9. Android利用ViewPager仿微信主界面-android学习之旅(78)

    首先是介绍ViewPager这个控件 ,这个控件需要pagerAdapter作为容器来提供数据,同时pagerAdapter的数据源是View数组 效果图如下 部分代码如下,实现如下的方法 mPage ...

随机推荐

  1. linux命令:压缩解压命令

    压缩解压命令:gzip 命令名称:gzip 命令英文原意:GNU zip 命令所在路径:/bin/gzip 执行权限:所有用户 语法:gzip 选项  [文件] 功能描述:压缩文件 压缩后文件格式:g ...

  2. Shell篇(三)TC Shell

    Shell脚本的首行一般写为"#!+路径"来告诉系统,以路径所指定的程序来解释此脚本. 可以写为 #! /bin/tcsh -f (-f表示快速启动,不启动~/.tcshrc) S ...

  3. eclipse设置字体、字符编码、快捷键

    1.设置字体: preferences->general->appearnce->colors and fonts->edit->字体大小14,字形常规,字体Consol ...

  4. 网站建设中常用的JS代码段落

    1.屏蔽左右键 这个不介绍了. <script language="JavaScript"> document.oncontextmenu=new Function(& ...

  5. ngxin开启rewrite伪静态

    1.编辑nginx配置文件 vi /usr/local/nginx/conf/nginx.conf #include enable-php.conf; include enable-php-pathi ...

  6. css3 弹性盒模型 变化

    如果你使用google搜索Flexbox,你会发现很多过时的信息.这里将告诉你如何迅速的辨别你需要的信息. 如果你正在查找有关于Flexbox的博客资料,你看到了“display:box;”或者“bo ...

  7. css3 3d翻转效果

    <div class="demo">       <span class="front">            aaaaaaaaaaa ...

  8. python2.7运行selenium webdriver api报错Unable to find a matching set of capabilities

    在火狐浏览器33版本,python2.7运行selenium webdriver api报错:SessionNotCreatedException: Message: Unable to find a ...

  9. web前端----JavaScript的BOM

    一.引入 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和 ...

  10. pyDay5

    内容来自廖雪峰的官方网站 1.递归函数的优点是定义简单,逻辑清晰. 2.使用递归函数需要注意防止栈溢出. 3.在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会 ...