近期看新闻发现新闻的页面是能够左右滑动的。于是自己就好奇起来了,之前做过ViewPager展示图片,在想怎么载入页面呢?研究了一下。发现就是加入了Fragment,废话不多说,揭秘奥秘的时候到了。

使用过ViewPager小伙伴们都知道,Viewpager载入数据。须要数据源,这里我们定义4个Fragment。

为了方便其它同事使用,我给这4个Fragment加入了一个基类。详细代码例如以下:

  public abstract class BaseFragment extends Fragment {
public Context mContext;//上下文
private View mView; @Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initData(savedInstanceState);
} @Override
public void onCreate(Bundle savedInstanceState) {
mContext = getActivity();
super.onCreate(savedInstanceState);
} @Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,Bundle savedInstanceState) {
mView = initView(inflater);
return mView;
}
/**
* 初始化界面
*/ public abstract View initView(LayoutInflater inflater); /**
* 初始化数据
*/
public abstract void initData(Bundle savedInstanceState); }

里面我加入了2个方法,一个是初始化界面。一个初始化数据,这样其它Fragment继承该类实现其两种方法,我们看一下当中一个Fragment里面的代码:

public class WeiFragment extends BaseFragment {

    @Override
public View initView(LayoutInflater inflater) {
//加入页面布局
View view = inflater.inflate(R.layout.fragment_weixin, null); return view;
} @Override
public void initData(Bundle savedInstanceState) { } }

这样其它同事就知道该怎样处理数据了。在主页面。我们仅仅要做两件事。一是把数据给Viewpager,还有一件事则是要使以下的tab能够控制页面变化。以下是传递数据的代码:

     //加入数据
list = new ArrayList<BaseFragment>();
list.add(new WeChatFragment());
list.add(new FriendFragment());
list.add(new AddressFragment());
list.add(new SettingFragment());

然后我们须要给ViewPager绑定一个适配器。针对Fragment的adapter,Google提供了专用的FragmentPagerAdapter。详细代码例如以下:

public class FragmentAdapter extends FragmentPagerAdapter {
private List<BaseFragment> list; public FragmentAdapter(FragmentManager fm,
List<BaseFragment> list) {
super(fm);
this.list = list;
} //得到数据
@Override
public Fragment getItem(int position) {
return list.get(position);
} @Override
public int getCount() {
return list.size();
}
}

最后我们要把适配器绑定到ViewPager上面;

   //绑定适配器
adapter = new FragmentAdapter(getFragmentManager(), list);
mViewPager.setAdapter(adapter);

第二件事就是处理tab改变页面变化。这里我们给tab设置了编号,依据编号来处理tab显示页面的问题,这里就不贴代码了,详细请看demo。

效果图例如以下:

项目源代码

如有疑问,能够给我留言。多多交流。谢谢!

Android之实现ViewPager+Fragment左右滑动的更多相关文章

  1. Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版

    描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的: 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发: APP已经完善了 ...

  2. Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?

    DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...

  3. Android:使用ViewPager实现左右滑动切换图片(图上有点点)

    在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...

  4. Android:使用ViewPager实现左右滑动切换图片 (简单版)

    ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...

  5. Android Viewpager+Fragment实现滑动标签页

    ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 <?xml version="1.0" ...

  6. Android ViewPager + Fragment实现滑动页面

    效果: PagerData类: package com.cloud.viewpagerdemo; import java.io.Serializable; class PagerData implem ...

  7. ViewPager+Fragment实现滑动显示,且Fragment里面又放Fragment+viewPager

    思路:新建一个Activity,且这个Activity要继承FragementActivity,在Activity的布局文件中放入了一个viewPager,为了效果好看,还做了个导航,使得ViewPa ...

  8. android 中的 ViewPager+ Fragment

    android的Viewpager 的各种经常的用法,朋友问我要过,所以就稍微总结一下, ViewPager + Fragment 经常用到  代码是从   actionbarsherlock 中提取 ...

  9. ViewPager+Fragment实现滑动切换页面

    1.实现思路 主界面四个导航按钮使用RadioButton,通过Selector 设置它的drawableTop属性来设置所显示的图片.通过 FragmentPagerAdapter 实现切换. 2. ...

随机推荐

  1. Mac上简单常用Terminal命令

    方案1 SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选.SSH是加密的,OpenSSH加密所有通信(包括密码),有效消除了窃听,连接劫持和其它攻击.本文将为 ...

  2. Linux kernel 内存 - 页表映射(SHIFT,SIZE,MASK)和转换(32位,64位)

    0. Intro 如下是在32位下的情况,32位下,只有三级页表:PGD,PMD,PTE 在64位情况下,会有四级页表:PGD,PUD,PMD,PTE 但是原理基本上是一样的,本文主要是想记录一下页表 ...

  3. 类模板成员函数默认值问题:an out-of-line definition of a member of a class template cannot have default arguments

    template <typename T> class A { ); }; template<typename T> ) { /* */ } 对于类似上文代码,VS编译器会报 ...

  4. css--小白入门篇6(终)

    一.相对定位 定位有三种,分别是相对定位.绝对定位.固定定位. 相对定位: 1 position:relative; 绝对定位: 1 position:absolute; 固定定位: 1 positi ...

  5. 【2018百度之星资格赛】 A 问卷调查 - 位运算&动规

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6344 参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/941923 ...

  6. PHP+Python,轻量维护超轻松

    window下安装Python 直接去Python官网下载msi安装程序安装即可(选择自定义安装才能修改程序安装路径哦) widows下Python的数据库访问模块PyMysql的安装 1.open ...

  7. js之标签操作

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

  9. vue 安装+下载

    1. npm init -y [生成package.json文件] 2. 增加 "private": true, 3.npm install 4. npm install vue ...

  10. CRC校验算法学习

    原文:http://www.repairfaq.org/filipg/LINK/F_crc_v31.html 本文根据上述链接原文翻译而来,如有错误,忘广大网友互相帮忙纠正,谢谢! 1.前言: 1.0 ...