Android之实现ViewPager+Fragment左右滑动
近期看新闻发现新闻的页面是能够左右滑动的。于是自己就好奇起来了,之前做过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左右滑动的更多相关文章
- Android Studio 使用ViewPager + Fragment实现滑动菜单Tab效果 --简易版
描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的: 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发: APP已经完善了 ...
- Android 中 DrawerLayout + ViewPager 怎么解决滑动冲突?
DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了.今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决 ...
- Android:使用ViewPager实现左右滑动切换图片(图上有点点)
在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...
- Android:使用ViewPager实现左右滑动切换图片 (简单版)
ViewPager,它是google SDk中自带的一个附加包的一个类, 可以使视图滑动. 步骤: 1.引入android-support-v4.jar包,在主布局里加入 <android.su ...
- Android Viewpager+Fragment实现滑动标签页
ViewPager 结合Fragment实现一个Activity里包含多个可滑动的标签页,每个标签页可以有独立的布局及响应. 主页布局 <?xml version="1.0" ...
- Android ViewPager + Fragment实现滑动页面
效果: PagerData类: package com.cloud.viewpagerdemo; import java.io.Serializable; class PagerData implem ...
- ViewPager+Fragment实现滑动显示,且Fragment里面又放Fragment+viewPager
思路:新建一个Activity,且这个Activity要继承FragementActivity,在Activity的布局文件中放入了一个viewPager,为了效果好看,还做了个导航,使得ViewPa ...
- android 中的 ViewPager+ Fragment
android的Viewpager 的各种经常的用法,朋友问我要过,所以就稍微总结一下, ViewPager + Fragment 经常用到 代码是从 actionbarsherlock 中提取 ...
- ViewPager+Fragment实现滑动切换页面
1.实现思路 主界面四个导航按钮使用RadioButton,通过Selector 设置它的drawableTop属性来设置所显示的图片.通过 FragmentPagerAdapter 实现切换. 2. ...
随机推荐
- Spartan6系列之Spartan6系列之芯片时钟资源深入详解
1. 时钟资源概述 时钟设施提供了一系列的低电容.低抖动的互联线,这些互联线非常适合于传输高频信号.最大量减小时钟抖动.这些连线资源可以和DCM.PLL等实现连接. 每一种Spartan-6芯片提 ...
- HTML meta信息含义
<meta name="viewport" content="width=device-width,initial-scale=1.0"> cont ...
- vs2017 创建C#类时添加文件头
C#类模板地址:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ItemTemplates\C ...
- C++ 程序的编译
一.编译器都具备集成开发环境(Integrated Developed Environment,IDE) 二.程序源文件命名约定: C++ 的后缀一般是 .cpp .cc .C .cpp .cxx 三 ...
- 【原】Mysql存储关联数组
$fruits= array("apple" => "苹果", "banana" => "香蕉"," ...
- Linux常用命令——目录处理命令
1.建立目录:mkdir mkdir -p [目录名] -p 递归创建 命令英文原意:make directories 实例: [root@localhost ~]# ls anaconda-ks.c ...
- 了解固态硬盘SSD,竟然如此简单!小白也能懂!
https://www.youtube.com/watch?v=alb6-zp52mA
- TestNG套件测试(一)
测试套件是用于测试软件程序的行为或一组行为的测试用例集合. 在TestNG中,我们无法在测试源代码中定义一个套件,但它可以由一个XML文件表示,可以灵活配置要运行的测试. 套件用<suite&g ...
- js之定时器操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 腾讯云,搭建Git服务器
下载安装 git 任务时间:5min ~ 10min Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 ...