本文主要介绍如何利用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. Twitter OA prepare: even sum pairs

    思路:无非就是扫描一遍记录奇数和偶数各自的个数,比如为M和N,然后就是奇数里面选两个.偶数里面选两个,答案就是M(M-1)/2 + N(N-1)/2

  2. mysql主从数据库不同步的2种解决方法 (转载)

    今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist; 查看下进程是否Sleep太多.发现很正常. show master status; ...

  3. sql 各种锁

    SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但 ...

  4. VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)

    上一节中鸡啄米讲了定时器Timer的用法,本节介绍下文件操作类CFile类的使用. CFile类概述 如果你学过C语言,应该知道文件操作使用的是文件指针,通过文件指针实现对它指向的文件的各种操作.这些 ...

  5. Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  6. Object-C-Foundation-set

    无序集合 哈希表 NSSet *colors=[NSSet setWithObjects:@@"yellow",@"red",@"blue" ...

  7. Spring 自动扫描 不支持jar包 <component-scan>

    问题描述: 本机windows myeclipse10.7 运行非maven java项目,其中部分类使用spring3 注解进行注入,使用配置文件component-scan进行扫描,在本机debu ...

  8. sql server数据库备份单个表的结构和数据生成脚本

    1.使用场景:sql server数据库备份单个表的结构和数据,在我们要修改正式系统的数据的一天或者多条某些数据时候,要执行update语句操作,安全稳健考虑,最好先做好所修改的表的结构和数据备份! ...

  9. 04: 事件驱动、五种I/O操作、I/O多路复用select和epoll

    网络编程其他篇 目录: 1.1 事件驱动 1.2 五种I/O操作 1.3 I/O 多路复用之select.poll.epoll详解 1.1 事件驱动返回顶部 1.什么是事件驱动  定义:就是根据不同事 ...

  10. 基础知识 - Golang 中的格式化输入输出

    ------------------------------------------------------------ [格式化输出] // 格式化输出:将 arg 列表中的 arg 转换为字符串输 ...