安卓强大的Fragment管理器
来源:互联网 发布:sjcam sj5000x淘宝 编辑:程序博客网 时间:2024/05/21 06:54
XFrag简介
版本号:1.0.1 测试版
XFrag https://github.com/zkbutt
XFrag 采用函数式链式调用,即可轻松管理应用中的所有Fragment
XFrag 帮忙我们轻松应对主流中一个Activity多个Fragment情况
XFrag 与APP完全解藕,轻松集成到任何一个APP中
XFrag 能够方便的在启动各个Fragment时传blund数据
XFrag 集成默认动画,能够方便的在定义并应用各种切换动画
XFrag 支持返回键自动按顺序回退Fragment
XFrag方法函数定义
静态链式启动方法-使用XFrag.open 开启链式调用
例:XFrag.close(fragment1).open(fragment2).show(fragment3).lock(false).execute();
1. open(fragment) //打开指定fragment
2. close(fragment) //关闭指定fragment
静态独立方法-不能链式调用只能单独执行
例:XFrag.addListner(new ExecuteListner() { @Override public void onExecutePre(Request request) { //命令有效准备执行时 调用 } @Override public void onExecuteComplete(Request request) { //命令执行完成时 调用 } });
1. initXFrag(activity) //在简单使用时,用于初始化 XFrag
2. removeListner(ExecuteListner listner) //移除侦听
3. addListner(ExecuteListner listner) //添加侦听
4. setAnim(addIn, addOut, quitOut, quitIn,animTime) //动画资源文件 开启动画
6. setAnim(true) //开启默认动画 或关闭动画
7. unlock(fragment) //单独解锁fragment
8. onBackPressed //拦截返回键 实现自动回退 用于activity对应绑定
9. save //保存锁定和隐藏状态 用于activity对应绑定
10. restore //恢复锁定和隐藏状态 用于activity对应绑定
11. onDestroy //销毁时XFrag 用于activity对应绑定
链式方法
例:
XFrag.close(fragment1).open(fragment2).show(fragment3).lock(false).execute();
1. layout(fragLayoutId) //指定布局ID,用于指定Fragment显示在哪里
2. hide(fragment) //隐藏
3. bundle(bundle) //为打开的Fragment 传数据
4. mode(stackMode) //与打开activity一样指定Fragment 打开模式 4种STANDARD, SINGLE_TOP, SINGLE_TASK, SINGLE_INSTANCE
5. setAnim(addIn, addOut, quitIn, quitOut) //链式设置一次性请求动画 动画只在当前调用有效
6. addListner()//功能同 静态独立方法
7. removeListner()//功能同 静态独立方法.
8. open(fragment) //功能同 静态链式启动方法
9. close(fragment)//功能同 静态链式启动方法
链式结束方法-调用此方法才开始执行
- execute() //
- initOpen() //
XFrag使用
在您的项目的build.gradle中,添加仓库
allprojects { repositories { ... maven { url "https://jitpack.io" } }}
在您的应用的build.gradle中,添加依赖
dependencies { compile 'com.github.zkbutt:XFrag:v1.0.1'}
使用XFrag通常有两种方式:
一、智能模式:强烈推荐项目应用这种方法
XFragActivity 具有以下功能 (当然您也可以复制关键代码到您项目)
1、自动初始化XFrag并快速设置默认2、解决在重建时自动恢复Fragment原有显示状态3、解决内存泄漏4、智能回退Fragment
继承XFragActivity 并在Fragment的基类的onCreate方法中
@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true);//重建时不销毁Fragment}
继承后建议将onCreate内容写到onCreateNow方法中
XFragActivity 三个抽象方法:
protected abstract int getFrameLayoutResID();//指定默认空间protected abstract Class<? extends Fragment> getDefFragment();//定义初始Fragmentpublic abstract void onCreateNow(Bundle savedInstanceState);//将你onCreate的内容写在这里
例如:
@Overrideprotected int getFrameLayoutResID() { return R.id.main_fl;}@Overrideprotected Class<? extends Fragment> getDefFragment() { return MainFragment.class;}
如果您需要在onCreate 初始化多个 Fragment,一定要使用initopen
通过初始化打开的 Fragment XFrag会自己将其锁定lock,无法隐藏和关闭,如需关闭初始化的Fragment 必须在链式命令中调用lock(false)解锁!
XFrag.close(fragment).lock(false).execute();
注意在使用锁定和解锁时,链式中如果出现多个fragment,将全部进行解锁,或锁定如:
XFrag.close(fragment1).open(fragment2).show(fragment3).lock(false).execute();
二、简单模式:(不推荐)
如果您只想简单使用XFrag 帮忙您打开、关闭、显示、隐藏等基本操作,可以在activity中调用initXFrag注册,该模式不能自动智能回退fragment,只能进行fragment等操作,适合于只Fragment比较固定且数据较少的情况.
XFrag.initXFrag(this);
注意XFrag使用的是V4包的FragmentManager,因此activity只支持FragmentActivity。
初始化后,即可在任意地方进行调用。
XFrag.open(fragment2).layoutID(R.id.fl_1).show(fragment3).lock(false).execute();
注意当XFrag注册后打开和关闭只能注册的activity中,如果应用需要销毁注册的 activity,需要在activity中调用,如下方法,否则会产生activity泄漏
XFrag.onDestroy(this);
动画设置注意事项
动画时间超过500,建议在调用设置动画时,填入正确的延时。
XFrag.setAnim(R.anim.left_in,
R.anim.left_out,
R.anim.right_in,
R.anim.right_out, 2000);如需使用动画建议在初始化Activity时开启设置。当启用动画后,再去关闭一个添加时没有动画的Fragment会产生异常
XFrag.setAnim(true);
关于作者—Fredre
有任何建议或者使用中遇到问题或是其它什么都可以联系我!技术交流,idea分享,欢迎有志之士一起研究,共同创造!Email: zkbutt@qq.comQQ : 318740003QQ群 : 490770868
- 安卓强大的Fragment管理器
- 强大的fragment
- 安卓Fragment的用法
- 安卓Fragment的用法
- 很强大的安卓学习网站
- 安卓声音管理器AudioManager的使用
- 自写的安卓SQLite管理器
- 安卓 密码管理器
- 安卓静态Fragment与动态Fragment的理解
- Linux TOP命令 ---强大的任务管理器
- 强大的任务管理器-Process Hacker
- 强大的任务管理器-Process Hacker
- 安卓--第七天--fragment的实现
- 安卓开发之Fragment的嵌套
- 安卓的fragment跳转问题
- 安卓:Fragment的懒加载
- 基于安卓的文件管理器的开发
- 安卓-Fragment 详解
- 如何在eclipse-ee中配置maven插件
- Leecode刷题
- 安装并配置Hadoop
- tcp短连接TIME_WAIT问题解决方法
- 最优子结构(optimal substructure)
- 安卓强大的Fragment管理器
- gulp + webpack 构建多页面前端项目
- 基于 webpack 搭建前端工程基础篇
- uva 10288 Coupons 数学期望
- codeforces 706D (字典树)
- objc/runtime中SEL、IMP和method动态定义
- [React项目总结] 基于 webpack 搭建前端工程基础篇
- 在多个Android项目工程中共享一个库模块
- webpack & react项目搭建一:环境