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 ...
随机推荐
- MVC备忘笔记
1.增加样式 @Html.EditorFor(model => model.AssociationName, new { @class="inputtext input-220&quo ...
- Oracle 错误代码小结
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...
- Linux中编写Bash脚本的10个技巧
Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式.尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能. 本文中,我们将分享 ...
- OpenCV中HSV颜色模型及颜色分量范围
HSV颜色模型 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)..这 ...
- 20145127《java程序设计》第四周学习总结
教材学习内容总结 第六章 继承与多态 6.1 何为继承 0.面向对象中,子类继承父类,避免城府的行为定义.正确判断使用继承的时机,以及继承之后如何活用多态,才是学习继承时的重点. 1.继承:避免多个类 ...
- 20145312袁心《网络对抗》Web基础实践
20145312袁心<网络对抗>Web基础实践 问题回答 1.什么是表单: 表单在网页中主要负责数据采集功能. 一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程 ...
- UVa 10635 Prince and Princess - 动态规划
讲一下题目大意,就是有两个长度为p + 1和q + 1的序列,求它们的LCS. 如果用O(pq)的算法对于这道题来说还是太慢了.所以要另外想一些方法.注意到序列中的所有元素都不相同,所以两个序列中数对 ...
- TCP 的连接建立:采用三报文握手
- TCP客户端【TcpClient】
一.阻塞模式 1.命名空间 System.Net.Sockets 2.对象声明 TcpClient dpu1TcpClient = null;//dpu1tcp客户端,TcpClient模式 Netw ...
- 设置控件如ImageButton可见与否
继承view的控件有三种ui属性: 1.setVisibility(View.Gone); 不可见,不占有空间 2.setVisibility(View.VISIBLE); 可见 3.setVisib ...