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

这个效果相当好!

1、新建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等。

2、新建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表示具体的页面,见下面介绍。

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

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

 

简单效果如下:

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

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

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

  2. [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络)

    [Android实例] app引导页(背景图片切换加各个页面动画效果)(申明:来源于网络) 地址: http://www.eoeandroid.com/thread-918356-1-1.html h ...

  3. Android 自定义View 之利用ViewPager 实现画廊效果(滑动放大缩小)

    http://www.2cto.com/kf/201608/542107.html

  4. Android真正简单的教程-第十二枪(ViewFlipper实现滑动效果)

    直接看代码 1.MainActivity.java: package org.yayun.demo; import android.app.Activity; import android.os.Bu ...

  5. Android进阶:ListView性能优化异步加载图片 使滑动效果流畅

    ListView 是一种可以显示一系列项目并能进行滚动显示的 View,每一行的Item可能包含复杂的结构,可能会从网络上获取icon等的一些图标信息,就现在的网络速度要想保持ListView运行的很 ...

  6. 模仿原生淘宝app点击搜索时的页面滑动效果

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  7. 转:ViewPager+Fragment基本使用方法(附源码)

    ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料 首先在activit ...

  8. ViewPager+Fragment基本使用方法(附源码)

    ViewPager+Fragment可以做出多页面滑动效果,让我们的应用程序界面操作起来更加灵活 对于ViewPager和Fragment组件还不熟悉的朋友,可以先看看相关的资料. 首先在activi ...

  9. Android ViewPager实现软件的第一次加载的滑动效果

    public class MainActivity extends Activity { private ViewPager viewPager; private List<View> V ...

随机推荐

  1. hdu 5532 Almost Sorted Array

    http://acm.hdu.edu.cn/showproblem.php?pid=5532  题目大意: 给你一个不规则的序列,问是否能够通过删除一个元素使其成为一个有序的序列(递增或递减(其中相邻 ...

  2. HTTP原理

    HTTP原理 1 简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统. HTTP协议的主要特点可概括如下: 1.支持客户/服务器模式. 2.简单快速:客 ...

  3. JVM启动参数小结

    一:JVM启动参数共分为三类:         其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:        其二是非标准参数(-X),指的是JVM底层的一些配置参数, ...

  4. ASP.NET读取配置文件发送邮件

    之前写过一篇文章C#使用SMTP发送邮件 后来做了改进,改成读取独立的配置文件,本文只记录读取配置文件的部分,发送部分见上面的链接. 读取配置文件C#代码: using System; using S ...

  5. Unity3d:加载Gif格式图片

    unity里不支持Gif格式的图片,网上搜索也没有相关资料,殊不知我们已经太相信度娘了,而没有了自己的分析,我们知道Gif图是由多个静态图做成的,那我们就回归本土,第一步:把gif拆成n个静态图放在集 ...

  6. OC: 类的扩展、类的延展、协议、 NSDate

      NSDateFormatter 指定⽇日期格式: NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter ...

  7. 函数WideCharToMultiByte() 详解

    函数原型: int WideCharToMultiByte( UINT CodePage, DWORD dwFlags, LPWSTR lpWideCharStr, int cchWideChar, ...

  8. Painter 12安装教程

    1 首先打开激活器 2 开始安装,点击我有序列码,把激活器中的序列码粘贴到安装文件中. 3 安装完成后,点击activate option选项,点击电话联系: 激活成功

  9. 重载PostNcDestroy()函数做一些清理工作

    转自:http://zhidao.baidu.com/link?url=W-OOWnvUx58w1esKfRAMtvbzBhjfyKodhk8j2DcTtlcDKAOy8sBNW-8Ey2RAhc0l ...

  10. TMsgThread, TCommThread -- 在delphi线程中实现消息循环

    http://delphi.cjcsoft.net//viewthread.php?tid=635 在delphi线程中实现消息循环 在delphi线程中实现消息循环 Delphi的TThread类使 ...