参考视频教程:
**Android通用框架设计与完整电商APP开发 **
目录
单Activity多Fragment架构的优点:
1、Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。
2、Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。
3、Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。
4、Fragment 切换流畅,轻量切换。
5、Fragment 在4.2.版本中新增嵌套fragment使用方法,能够生成更好的界面效果。
6、Fragment做局部内容更新更方便,原来为了到达这一点要把多个布局放到一个activity里面,现在可以用多Fragment来代替,只有在需要的时候才加载Fragment,提高性能。
7、可以从startActivityForResult中接收到返回结果,但是View不能。
1、Fragment的根容器设计
分为三部分实现,都是抽象类,继承关系。
1.1根Fragment
位于latte-core模块下的BaseDelegate,抽象类,内部含有设置布局方法和对控件进行操作的方法,需要子类实现。
主要作用:与Activity绑定,根据子类传入的布局,初始化View,完成Butterknife绑定。
public abstract Object setLayout();
public abstract void onBindView(@Nullable Bundle savedInstanceState, View rootView);
1.2权限Fragment
位于latte-core模块下的PermissionCheckerDelegate,抽象类,继承自BaseDelegate。
主要作用:处理和权限有关的设定,例如:拍照、图片剪裁、二维码扫描等全限。
1.3对外使用的Fragment
位于latte-core模块下的LatteDelegate,抽象类,继承自PermissionCheckerDelegate。
主要作用:拥有BaseDelegate和PermissionCheckerDelegate类的所有功能;包含获取父类Fragment的功能。
public <T extends LatteDelegate> T getParentDelegate() {
return (T) getParentFragment();
}
设计的优点:
使用抽象类:实现解耦,子类继承父类,还为父类增添方法,功能相互独立,后续更改方便。
2、单Activity页面架构设计
2.1 根Activity
位于latte-core模块下的ProxyActivity类,抽象类;内部含有设置根Fragment的方法,需要子类实现。
主要作用:初始化Activity,通过子类传入的Fragment与Activity绑定来初始化视图。
public abstract LatteDelegate setRootDelegate();
2.2 对外使用的Activity
位于example模块下的ExampleActivity类,继承自ProxyActivity类;
主要作用:隐藏ActionBar,传入的Fragment视图,完成一些需要在Activity中进行初始化的功能。