热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android应用中利用ViewPager实现多页面滑动切换效果示例

这篇文章主要介绍了Android应用中利用ViewPager实现多页面滑动切换效果示例,配合了Fragment和PagerTabStrip,需要的朋友可以参考下

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,内容如下

<&#63;xml version="1.0" encoding="utf-8"&#63;>

  
  
    
  

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

 

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

public class ViewPagerDemo extends FragmentActivity {

  /** 页面list **/
  List fragmentList = new ArrayList();
  /** 页面title list **/
  List  titleList  = new ArrayList();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view_pager_demo);

    ViewPager vp = (ViewPager)findViewById(R.id.viewPager);
    fragmentList.add(new ViewPagerFragment1("页面1"));
    fragmentList.add(new ViewPagerFragment1("页面2"));
    fragmentList.add(new ViewPagerFragment1("页面3"));
    titleList.add("title 1 ");
    titleList.add("title 2 ");
    titleList.add("title 3 ");
    vp.setAdapter(new myPagerAdapter(getSupportFragmentManager(), fragmentList, titleList));
  }

  /**
   * 定义适配器
   */
  class myPagerAdapter extends FragmentPagerAdapter {

    private List fragmentList;
    private List  titleList;

    public myPagerAdapter(FragmentManager fm, List fragmentList, List titleList){
      super(fm);
      this.fragmentList = fragmentList;
      this.titleList = titleList;
    }

    /**
     * 得到每个页面
     */
    @Override
    public Fragment getItem(int arg0) {
      return (fragmentList == null || fragmentList.size() == 0) &#63; null : fragmentList.get(arg0);
    }

    /**
     * 每个页面的title
     */
    @Override
    public CharSequence getPageTitle(int position) {
      return (titleList.size() > position) &#63; titleList.get(position) : "";
    }

    /**
     * 页面的总个数
     */
    @Override
    public int getCount() {
      return fragmentList == null &#63; 0 : fragmentList.size();
    }
  }
}

其中的myPagerAdapter集成自ragmentPagerAdapter,为ViewPager提供数据源。

onCreate函数得到ViewPager实例并设置数据源,getSupportFragmentManager表示得到Fragment管理器。ViewPagerFragment1表示具体的页面,见下面介绍。

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

public class ViewPagerFragment1 extends Fragment {

  private String  text;
  private TextView tv = null;

  public ViewPagerFragment1(String text){
    super();
    this.text = text;
  }

  /**
   * 覆盖此函数,先通过inflater inflate函数得到view最后返回
   */
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.view_pager_fragment_demo1, container, false);
    tv = (TextView)v.findViewById(R.id.viewPagerText);
    tv.setText(text);
    return v;
  }
}

5、示例工程代码:

package cn.trinea.android.demo;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

public class ViewPagerDemo extends BaseFragmentActivity {

  private static int TOTAL_COUNT = 3;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState, R.layout.view_pager_demo);

    ViewPager vp = (ViewPager)findViewById(R.id.view_pager);
    List fragmentList = new ArrayList();
    List titleList = new ArrayList();
    for (int i = 0; i  fragmentList;
    private List  titleList;

    public myPagerAdapter(FragmentManager fm, List fragmentList, List titleList) {
      super(fm);
      this.fragmentList = fragmentList;
      this.titleList = titleList;
    }

    @Override
    public Fragment getItem(int arg0) {
      return (fragmentList == null || fragmentList.size() == 0) &#63; null : fragmentList.get(arg0);
    }

    @Override
    public CharSequence getPageTitle(int position) {
      return (titleList.size() > position) &#63; titleList.get(position) : "";
    }

    @Override
    public int getCount() {
      return fragmentList == null &#63; 0 : fragmentList.size();
    }
  }
}

简单效果如下:

2016323102800943.jpg (476×204)


推荐阅读
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • JBPM 6.5 环境配置深入解析(下篇)
    本文深入探讨了JBPM 6.5 的环境配置细节,从零开始详细介绍了下载、解压后的文件结构,并结合实际操作步骤,为初学者提供了全面的配置指南。通过具体的示例和详细的解释,帮助读者快速掌握 JBPM 6.5 的安装与配置过程。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 《精通 jQuery》第六章:深入解析与实战应用
    《精通 jQuery》第六章:深入解析与实战应用本章详细探讨了 Ajax 技术的核心机制及其实际应用。Ajax 通过 XMLHttpRequest 对象实现客户端与服务器之间的异步数据交换,从而在不重新加载整个页面的情况下更新部分内容。这种技术不仅提升了用户体验,还提高了应用的响应速度和效率。此外,本章还介绍了如何利用 jQuery 简化 Ajax 操作,并提供了多个实战案例,帮助读者更好地理解和掌握这一重要技术。 ... [详细]
  • 深入解析 Android 选择器与形状绘制技术
    本文深入探讨了 Android 中选择器(Selector)与形状绘制(Shape Drawing)技术的应用与实现。重点分析了 `Selector` 的 `item` 元素,其中包括 `android:drawable` 属性的使用方法及其在不同状态下的表现。此外,还详细介绍了如何通过 XML 定义复杂的形状和渐变效果,以提升 UI 设计的灵活性和美观性。 ... [详细]
  • Spring Security 认证模块的项目构建与初始化
    本文详细介绍了如何构建和初始化Spring Security认证模块的项目。首先,通过创建一个分布式Maven聚合工程,该工程包含四个模块,分别为core、browser(用于演示)、app等,以构成完整的SeehopeSecurity项目。在项目构建过程中,还涉及日志生成机制,确保能够输出关键信息,便于调试和监控。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • 通过自定义 `TextView`,实现了在用户点击或焦点变化时动态调整字体颜色的效果。该方法利用了 `ColorStateList` 和 `Selector` 资源文件,确保了界面交互的流畅性和视觉效果的提升。具体实现中,通过重写 `onTouchEvent` 和 `onFocusChanged` 方法,精确控制了颜色变化的时机和状态。此外,还对性能进行了优化,确保在高频率操作下依然保持高效响应。 ... [详细]
  • 解决基于XML配置的MyBatis在Spring整合中出现“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”问题的方法
    在将Spring与MyBatis进行整合时,作者遇到了“无效绑定语句(未找到):com.music.dao.MusicDao.findAll”的问题。该问题主要出现在使用XML文件配置DAO层的情况下,而注解方式配置则未出现类似问题。作者详细分析了两个配置文件之间的差异,并最终找到了解决方案。本文将详细介绍问题的原因及解决方法,帮助读者避免类似问题的发生。 ... [详细]
  • Eclipse 错误解决:找不到指定的 APK 文件,项目名称未正确配置
    摘要:此问题可能是因为当前项目被错误地配置为库项目。解决方法如下:首先,打开项目属性(Project > Properties),在左侧列表中选择“Android”选项卡,取消选中“Is Library”复选框,然后点击“Apply”并重新构建项目。如果问题仍然存在,建议检查项目的构建路径和依赖关系,确保所有配置正确无误。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 在椭圆形状设计中,色彩搭配方案对视觉效果和用户体验至关重要。本文分析了不同色彩组合在椭圆形状设计中的应用效果,特别探讨了白色背景与绿色文字的搭配,指出长期观看这种配色可能会导致视觉疲劳。通过引入多种色彩搭配方案,本文旨在为设计师提供更加科学和舒适的色彩选择建议。 ... [详细]
  • 优化Android BroadcastReceiver时需关注的关键事项与最佳实践
    在优化Android中的BroadcastReceiver时,开发者应关注若干关键事项并遵循最佳实践。本文探讨了在BroadcastReceiver中编码时可能遇到的意外异常及其解决方法,同时提供了提高性能和稳定性的建议。通过合理配置和使用BroadcastReceiver,可以有效避免常见的问题,如内存泄漏、响应延迟等,确保应用的高效运行。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
author-avatar
mobiledu2502892903
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有