XFrag使用简便、功能强大的Fragment管理器
#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();
- open(fragment) //打开指定fragment
- close(fragment) //关闭指定fragment
###静态独立方法-不能链式调用只能单独执行 例: XFrag.addListner(new ExecuteListner() { @Override public void onExecutePre(Request request) { //命令有效准备执行时 调用 }
@Override
public void onExecuteComplete(Request request) {
//命令执行完成时 调用
}
});
- initXFrag(activity) //在简单使用时,用于初始化 XFrag
- removeListner(ExecuteListner listner) //移除侦听
- addListner(ExecuteListner listner) //添加侦听
- setAnim(addIn, addOut, quitOut, quitIn,animTime) //动画资源文件 开启动画
- setAnim(true) //开启默认动画 或关闭动画
- unlock(fragment) //单独解锁fragment
- onBackPressed //拦截返回键 实现自动回退 用于activity对应绑定
- save //保存锁定和隐藏状态 用于activity对应绑定
- restore //恢复锁定和隐藏状态 用于activity对应绑定
- onDestroy //销毁时XFrag 用于activity对应绑定
###链式方法 例: XFrag.close(fragment1).open(fragment2).show(fragment3).lock(false).execute();
- layout(fragLayoutId) //指定布局ID,用于指定Fragment显示在哪里
- hide(fragment) //隐藏
- bundle(bundle) //为打开的Fragment 传数据
- mode(stackMode) //与打开activity一样指定Fragment 打开模式 4种STANDARD, SINGLE_TOP, SINGLE_TASK, SINGLE_INSTANCE
- setAnim(addIn, addOut, quitIn, quitOut) //链式设置一次性请求动画 动画只在当前调用有效
- addListner()//功能同 静态独立方法
- removeListner()//功能同 静态独立方法.
- open(fragment) //功能同 静态链式启动方法
- 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方法中
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);//重建时不销毁Fragment
}
继承后建议将onCreate内容写到onCreateNow方法中 XFragActivity 三个抽象方法:
protected abstract int getFrameLayoutResID();//指定默认空间
protected abstract Class<? extends Fragment> getDefFragment();//定义初始Fragment
public abstract void onCreateNow(Bundle savedInstanceState);//将你onCreate的内容写在这里
例如:
@Override
protected int getFrameLayoutResID() {
return R.id.main_fl;
}
@Override
protected 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: [email protected]
QQ : 318740003
QQ群 : 490770868