Skip to content

Allure0/QuickFragment

Repository files navigation

QuikcFragment

Fragment的使用一般用于Tab类型UI界面,或者模块化流程式中使用.

特性

  • 适用于单Activity+多Fragment或者多Activity+多Fragment
  • 使用于模块化,便于业务组的开发维护
  • 支持Tab类型界面一句话调用显示
  • 支持模块化流程式界面控制
  • 支持fragment配合ViewPager的懒加载
  • 支持Fragment动画入栈出栈的控制显示
  • 支持单独设置某一个Fragment的动画
  • 支持Fragment单个实例或多个实例
  • 支持回退栈BackStack管理
  • 支持类似Activity的startActivityForResult的回执信息
  • 支持参数传递并且回执

引入方式

compile 'com.allure0:QuickFragment:1.0.2'

动画设置

注意使用的时候使用属性动画,否则出栈动画会有显示异常。 对于入栈动画和出栈动画只需要重写返回enterAnim和popExitAnim即可。

下图的动画是设置了3秒的动画时间

Anim.gif

方法 解释 默认值
useAnim 是否使用Fragment动画 false
enterAnim 入栈动画 R.animator.fragment_slide_left_enter
exitAnim ---- R.animator.fragment_slide_left_exit
popEnterAnim ---- R.animator.fragment_slide_right_enter
popExitAnim 出栈动画 R.animator.fragment_slide_right_exit

注意使用的时候使用属性动画,否则出栈动画会有显示异常。

public class FlowModeActivity extends QuickActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.flowmode_activity);

        startFragment(StartFragment.class);

    }

   @Override
    public boolean useAnim() {
        return true;
    }

    @Override
    public int enterAnim() {
        return super.enterAnim();
    }

    @Override
    public int exitAnim() {
        return super.exitAnim();
    }

    @Override
    public int popEnterAnim() {
        return super.popEnterAnim();
    }

    @Override
    public int popExitAnim() {
        return super.popExitAnim();
    }

    @Override
    public int fragmentId() {
        return R.id.rootview;
    }

}

Tab类型(使用showFragment(XXX))

Tab类型UI界面的fragment属于同一层级,一般不将其加入回退栈,并且直接采用Hide Show的方式进行显示隐藏控制。

Tab类型使用方式

 showFragment(FragmentOne.class);
 showFragment(new FragmentOne());

模块化流程式(使用startFragment(XXX))

模块化流程式的Fragment一般用于模块或者流程,比如登录-注册-忘记密码等等,可以将其理解为用户模块,对页面采用Fragment处理进行流程控制化.着重于需要对Fragment的栈进行管理控制

模块流程式类型的允许存在一个fragment实例

Fragment之间Intent单独传参

  • 传递
 Bundle bundle = new Bundle();
                bundle.putString("msg", "我爱你");
                QuickFragment fragment = fragment(ArgumentFragment.class, bundle);
                startFragment(fragment);
  • 接受
  Bundle bundle = getArguments();
        message = bundle.getString("msg");

startFragmentForResult()回执信息

  • 请求
 startFragmentForResquest(CallBackFragment.class, 100);
  • 返回信息
  Bundle bundle = new Bundle();
                bundle.putString("message", editText.getText().toString());
                setResult(RESULT_OK, bundle);
                finish();
  • 获取回执信息
@Override
    public void onFragmentResult(int requestCode, int resultCode, @Nullable Bundle result) {
        switch (requestCode) {
            case 100: {
                if (resultCode == RESULT_OK) {
                    String message = result.getString("message");
                    if (TextUtils.isEmpty(message)) {
                        Toast.makeText(activity, "没有返回信息", 1).show();
                    } else {
                        Toast.makeText(activity, message, 1).show();
                    }
                } else if (resultCode == RESULT_CANCELED) {
                }
                break;
            }

            case 101: {
                if (resultCode == RESULT_OK) {
                    String message = result.getString("message");
                    if (TextUtils.isEmpty(message)) {
                        Toast.makeText(activity, "没有返回信息", 1).show();
                    } else {
                        Toast.makeText(activity, message, 1).show();
                    }
                } else if (resultCode == RESULT_CANCELED) {
                }
                break;
            }
        }
    }

传递参数并且回执信息

结合单独发送消息以及获取回执消息即可(参见DEMO)

BackStack回退栈

保存回退栈

所谓保存回退栈意思为A-->B-->C,那么按返回键回来的时候会依次回到C-->B-->A

startFragment(BackStackFragment1.class, true);

不保存回退栈

同样的A-->B-->C-->D,如果我们在启动的时候不保存B和C,那么按返回键回来会直接D-->A,中间的B,C将不会出现

startFragment(BackStackFragment1.class, false);

License

Copyright 2017 Cherish(Allure)

Source code of the QuickFragment Project can be used according to the Apache License, Version 2.0.

About

简单易用易扩展的Fragment架构库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages