本文主要介绍如何利用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. 自己制作 SPx N合1 自动安装盘(x86)

    来处"xinso" 一.制作方法: 以技嘉和惠普为例作,其它的可以如法泡制及变通: 1.复制一份最常用的 OEM XP,例如技嘉,到D:\1TO2 2.在 D:\ 创造一个 HP ...

  2. StructLayout特性

    StructLayout特性          公共语言运行库利用 StructLayoutAttribute控制类或结构的数据字段在托管内存中的物理布局,即类或结构需要按某种方式排列.如果要将类传递 ...

  3. Jquery 获取文件内容

    $('.ke-edit-iframe').contents().find('body').text() <iframe class="ke-edit-iframe" hide ...

  4. jquery自定义方法

    总结: * jQuery中添加自定义或函数方法1,如 $.fn.extend({'aa':function(){}}) 或 jQuery.fn.aa=function(){}, 这种调用时就得这样,$ ...

  5. wikioi 1010 过河卒

    题目描述 Description 如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点 ...

  6. iOS开发-核心动画随笔

    核心动画可以让View旋转,缩放,平移(主要是操作View的layer(层)属性)但是核心动画改变的位置不是真实的位置,一切都是假象所以有时候要用到其他动画,如UIView本来封装的动画,还有定时器 ...

  7. iOS开发-用预处理指令代替注释

    有时候我们在调试程序的时候,想不执行某一段代码或者某些方法,我们会用注释,但是这样看上去就会让你的代码显示“很绿”,此时我们可以用一下代码 #if 0 // 你不想执行的代码 #endif 这样就可以 ...

  8. Java中移位操作运算符的理解

    java中的移位运算符有三种: 1. <<: 左移 2. >>: 右移 3. >>>: 无符号右移 使用方法:左移就是将左边的操作数在内存中的二进制数据左移指 ...

  9. OpenGL光照测试

    OpenGL光照测试 花了大概半个月,研究了OpenGL的光照.请注意是固定管线渲染的光照,如果使用着色器的高手们请飘过.这个程序是通过光照对模型的照射,来研究OpenGL光照的性质.以后可以通过这个 ...

  10. inline-block 前世今生

    曾几何时,display:inline-block 已经深入「大街小巷」,随处可见 「display:inline-block; *display:inline; *zoom:1; 」这样的代码.如今 ...