Android-打造无敌解耦的BaseActivity
文章目录
封装库:zone-sdk
设计模式:观察者模式
目的:解耦,各司其职。拍照等涉及onActivityResult的封装
逻辑图
BaseActivity
ActivityKinds(观察者的基类): 在使用的BaseActivity注册ActivityKinds或者移除不必要的ActivityKinds
专注:
onCreate
,onResume
,onActivityResult
,onPause
,onDestroy
名字 | 功能 |
---|---|
CollectionActivityKind | 收集所有Activity用的 |
FeaturesKind | 专门处理关于onActivityResult的 |
ScreenSettingKind | setNoTitle,setFullScreen的 |
SwipeBackKind | 左滑退出Activity用的 集成别的项目~ xml额外的配置,参考地址 |
考虑兼容(简称BaseActivity)分成三块:
BaseActivity
BaseAppCompatActivity
BaseFragmentActivity
BaseActivity里的主要工作
名字 | 功能 |
---|---|
updateKinds | 在这里 移除与注册 ActivityKinds |
ActivityKinds范例:
1 | public class StatKind extends ActivityKinds { |
BaseActivity移除不必要的SwipeBackKind 功能,注册StatKind;
1 | public abstract class DBaseAppCompatActivity extends BaseAppCompatActivity { |
FeaturesKind
观察者模式:
ExtraFeature(观察者的基类):专注:
init(onResume中使用)
,onActivityResult
,destory
RequestCodeConfig(所有ExtraFeature的Code声明):其中的START_CODE(默认1000开始)可以修改,而进行整体code偏移 主要是怕碰到别的类似开源项目code重复导致不必要的问题;
名字 | 功能 |
---|---|
Feature_Pic | 拍照功能与相册选择功能(如果写建议参考这个) |
Feature_SystemClip | 系统裁剪(demo 让我删除了.) |
Featrue_CustomCamera | 自定义相机(demo 没有. 很久以前的了就不给demo了~) |
Tips:
返回值的方法要抽象
,这样就不会忘记写。 剩下的方法就可以public不抽象了~
Activity中拍照的使用范例:
声明后 注意 把拍照的功能添加到FeaturesKind里面
mKindControl.get(FeaturesKind.class).addFeature(feature_Pic);
1 | @Override |
然后调用此方法就好了~
feature_Pic.openCamera();
feature_Pic.openPhotos();
1 | @Override |
原文作者: Zone
原文链接: https://luhaoaimama1.github.io/2016/03/23/BaseActivity/
许可协议: 知识共享署名-非商业性使用 4.0 国际许可协议