Android高可拓展框架Conductor源码解析(1)

先上源码地址,点我!

介绍

Conductor是一个基于视图的“麻雀虽小,五脏俱全”的Android框架,它给标准Android-View进行简单的封装,去掉不必要的特性。

  • 简单聚合
  • 不使用Fragment
  • 简单强力的生命周期
  • 导航与回退的处理
  • 优雅的视图跳转
  • 状态持久化
  • onActivityResult,onRequestPermissionsResult等方法回调
  • MVP / MVVM / VIPER / MVC 拓展

Conductor不强制使用任何一个设计模式。

组件

组件 介绍
Controller 包装了View并给出生命周期。可以看作是有更简单生命周期的Fragment
Router Controller提供导航,依附于Activity并持有ViewGroup,通过 ControllerChangeHandler执行transaction去操作ViewGroup
ControllerChangeHandler 负责不同Controller之间的跳转,例如动画和过渡画面
ControllerTransaction 控制传递到Controller的数据

使用

先看一看这个框架的威力。
下面展现一下Activity的写法

public class MainActivity extends Activity {

    private Router mRouter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        ViewGroup container = (ViewGroup)findViewById(R.id.controller_container)

        mRouter = Conductor.attachRouter(this, container, savedInstanceState);
        if (!mRouter.hasRootController()) {
            mRouter.setRoot(new HomeController());
        }
    }

    @Override
    public void onBackPressed() {
        if (!mRouter.handleBack()) {
            super.onBackPressed();
        }
    }

}

一眼看上去,很简洁。

再看主要组件Controller的实现

public class HomeController extends Controller {

    @Override
    protected View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
        View view = inflater.inflate(R.layout.controller_home, container, false);
        ((TextView)view.findViewById(R.id.tv_title)).setText("Hello World");
        return view;
    }

}

嗯 原来也有onCreateView,把子View放进了Activity的容器内。

生命周期

Android高可拓展框架Conductor源码解析(1)_第1张图片

待续

下一篇讲解源码

你可能感兴趣的:(Android)