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. ...
随机推荐
- 并发编程学习笔记(11)----FutureTask的使用及实现
1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...
- acedssget
大多数ObjectARX函数在处理选择集和实体时,都用名字来识别选择集或实体,该名字用一个长整型对来表示的,并对AutoCAD来维护.在ObjectARX中,该名字的类型为ads_name.在对选择集 ...
- SkiaSharp drawText中文乱码问题
var fontManager = SKFontManager.Default; var emojiTypeface = fontManager.MatchCharacter('时'); var te ...
- Java基本输入输出
Java基本输入输出 基本输入 基本输出 package com.ahabest.demo; public class Test { public static void main(String[] ...
- idea必选配置
参考: IDEA配置
- python面向对象的特点,类定义等,私有属性、公有属性、成员属性
引子:类的对象在内存中的表示def dog(name,dog_type): def bark(d): print(d,'wang wang wang ...') data = { 'name':nam ...
- Pycharm Anaconda 安装dlib
由于采用python3.7安装会出现各种问题,两种解决方法. 1)安装Cmake boost等(不推荐,麻烦且不容易成功). 2)安装Anaconda,创建一个python3.6的环境. 这里使用第二 ...
- PHP上传文件到七牛(Qiniu)
上传文件到七牛最简单的方式就是使用七牛官方最新的SDK 安装PHP SDK composer require qiniu/php-sdk 上传文件到七牛 use Qiniu\Auth; use Qin ...
- python基础学习 str,list,dict,set,range,enumerate
一.字符串 s = 'python' s1 = 'python' + 'learn' #相加其实就是简单拼接 s2 = 'python' * 5 #相乘其实就是复制自己多少次,再拼接在一起 字符串切片 ...
- 腾讯云,搭建Git服务器
下载安装 git 任务时间:5min ~ 10min Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 此实验以 CentOS 7.2 x64 的系统为环境,搭建 ...