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. ...
随机推荐
- dubbo之服务降级
向注册中心写入动态配置覆盖规则:(通过由监控中心或治理中心的页面完成) RegistryFactory registryFactory = ExtensionLoader.getExtensionLo ...
- Erwin 带注释(comment )
1. Database>Pre & Post Script > Model-level %ForEachTable() { alter TABLE %TableName COMME ...
- 【笔记JS/HTML/CSS】CSS3实现鼠标滑动显示动画(transition、transform)
内容中包含 base64string 图片造成字符过多,拒绝显示
- GetArxPath
extern HINSTANCE _hdllInstance;CString GetArxPath(){ CString strArxPath; GetModuleFileName(_hdllInst ...
- css去掉div的滚动条
懒得讲原理了,直接贴代码: css部分: .slide-box { margin-top: 200px; display: -webkit-box; overflow-x: scroll; overf ...
- Game Rank(NCPC 2016 大模拟)
题目: The gaming company Sandstorm is developing an online two player game. You have been asked to imp ...
- Ubuntu终端常用的快捷键(转载)
本文转自:https://www.cnblogs.com/nucdy/p/5251659.html 侵删 Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应 ...
- Win10中创建Hyper-V虚拟机
Win10虚拟机创建方法方法 1 开始菜单->所有应用->Windows系统->控制面板,程序->启用或关闭Windows功能,勾选Hyper-V下所有选项 如果Hyper-V ...
- Redis多实例配置以及主从同步
一.多实例配置 1.准备俩配置文件,开两个就准备两个 redis-6380.conf redis-6381.conf 2.分别写入配置信息(这里简化了配置) # 运行在6380端口 bind 172. ...
- Python基础(十一) 异常处理
在程序运行过程中,总会遇到各种各样的错误,有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这样的错误我们通常称之为BUG,BUG是必须修复的.在Python中内置了一套异常处理机 ...