Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果
本文主要介绍如何利用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,内容如下
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <android.support.v4.view.ViewPager
- android:id="@+id/viewPager"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center" >
- <android.support.v4.view.PagerTabStrip
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="top" />
- </android.support.v4.view.ViewPager>
- </LinearLayout>
ViewPager用来管理layout并可以左右滑动显示各个页面数据,PagerTabStrip用来显示页面title,android:layout_gravity="top"表示title在顶部,可设置bottom等。
3、新建FragmentActivity页面
FragmentActivity页面含有ViewPager元素,可以用来显示Fragment,定义如下:
- FragmentActivity页面
- public class ViewPagerDemo extends FragmentActivity {
- /** 页面list **/
- List<Fragment> fragmentList = new ArrayList<Fragment>();
- /** 页面title list **/
- List<String> titleList = new ArrayList<String>();
- @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));
- }
- /**
- * 定义适配器
- *
- * @author gxwu@lewatek.com 2012-11-15
- */
- class myPagerAdapter extends FragmentPagerAdapter {
- private List<Fragment> fragmentList;
- private List<String> titleList;
- public myPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> titleList){
- super(fm);
- this.fragmentList = fragmentList;
- this.titleList = titleList;
- }
- /**
- * 得到每个页面
- */
- @Override
- public Fragment getItem(int arg0) {
- return (fragmentList == null || fragmentList.size() == 0) ? null : fragmentList.get(arg0);
- }
- /**
- * 每个页面的title
- */
- @Override
- public CharSequence getPageTitle(int position) {
- return (titleList.size() > position) ? titleList.get(position) : "";
- }
- /**
- * 页面的总个数
- */
- @Override
- public int getCount() {
- return fragmentList == null ? 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;
- // Fragment 不能写构造函数
- // 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("第一个页面");
- return v;
- }
- }
简单效果如下:

Android 利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果的更多相关文章
- 【Android 界面效果27】利用ViewPager、Fragment、PagerTabStrip实现多页面滑动效果
本文主要介绍如何利用ViewPager.Fragment.PagerTabStrip实现多页面滑动效果.即google play首页.新浪微博消息(at.评论.私信.广播)页面的效果.ViewPage ...
- Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...
- Android中通过Fragment进行简单的页面切换
首先是activity中的布局 <?xml version="1.0" encoding="utf-8"?> <androidx.constr ...
- android使用GestureDetector实现手势下滑关闭页面的效果。
实现类似Android风云直播手机端注册登录页,当手势向下滑动的时候,关闭页面的效果. 使用GestureDetector来实现这个效果,当手势在屏幕上面滑动的时候 ,会掉用onFling方法,所以, ...
- Android中实现整个视图切换的左右滑动效果
Android中提供了一个Gallary,可以实现图片或者文本的左右滑动效果. 如何让整个视图都能实现左右滑动,达到类似于Gallary的效果呢?可以直接用一个开源的ViewFlow来实现. 项目 ...
- Android利用ViewPager实现滑动广告板
•android-support-v4.jar,这是谷歌官方 给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api.而ViewPager就是其 ...
- Android之Viewpager+Fragment实现懒加载
我们在做应用开发的时候,一个Activity里面可能会以viewpager(或其他容器)与多个Fragment来组合使用.而ViewPager默认会缓存三页数据,即:Viewpager每加载一个Fra ...
- android中viewPager+fragment实现的屏幕左右切换(进阶篇)
Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等.可以看做是一个子Activity. 先看一下布局: 1 <LinearLayout xmlns:a ...
- Android利用ViewPager仿微信主界面-android学习之旅(78)
首先是介绍ViewPager这个控件 ,这个控件需要pagerAdapter作为容器来提供数据,同时pagerAdapter的数据源是View数组 效果图如下 部分代码如下,实现如下的方法 mPage ...
随机推荐
- 7.10 Models -- Handling Metadata(处理元数据)
1. 随着从store中返回的records,你可能需要处理一些元数据.Metadata是伴随着特定model或者type的一种数据,而不是record. 2. 分页是使用元数据的一个常见的例子.想象 ...
- Lintcode: First Position of Target (Binary Search)
Binary search is a famous question in algorithm. For a given sorted array (ascending order) and a ta ...
- 【安装vsftpd】安装vsftpd工具步骤
1 安装vsftpd组件 [root@bogon ~]# yum -y install vsftpd 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件. 2 添 ...
- mongodb权限
1.在无密码模式下添加账号 db.createUser( { user: "user", pwd: "pwd", roles: [ { role: " ...
- Devenv 命令行开关
Devenv 可用来设置集成开发环境 (IDE) 的各个选项,以及从命令行生成.调试和部署项目.使用这些开关从脚本或 .bat 文件(例如每夜生成的脚本)运行 IDE,或以特定配置启动 IDE. 说明 ...
- 性能分析之– JAVA Thread Dump 分析
最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相关知识整理在一起,输出文章如下. 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Du ...
- 数据仓库原理<3>:数据仓库与ODS
1. 引言 本篇主要讲述操作数据存储(ODS)系统产生的背景.定义.特点,以及它与数据仓库的区别. 在前两篇,笔者介绍了什么是数据仓库?为什么需要数据仓库?数据仓库系统的体系结构是什么?因此可能在读者 ...
- excel选择元角分下拉菜单选择框自动变更数字
excel选择元角分下拉菜单选择框自动变更数字 (M2列),数据-->数据有效性-->在“允许”栏中选择序列-->在“来源”栏中输入:分,角,元单位倍数公式(M4列):=IF(M2= ...
- LOJ10067 构造完全图
LOJ10067 构造完全图 最小生成树 每次找到最小的边,将边两端的块合并 (我之前想的是什么鬼) #include<cstdio> #include<algorithm> ...
- nginx配置https并强制http自动跳转到https
关于使用HTTPS/SSL的必要性,可以自行baidu,援引的说法,EFF(Electronic Frontier Foundation),全球过半流量采用https. https://www.osc ...