android_framework
an android framework in order for rapid development
##1.开发环境##
环境为android studio + jdk1.7
##2.框架结构##
该框架分为三个部分:
libcore层
libcore-ui层
testsample层
第三层为测试代码,重点在第一和第二层...
##3.框架详细概述##
###第一层libcore###
该层为基础核心代码层,该层的代码特点是封装了应用所应该使用的基础功能,好处是封装的功能仅仅提供简单的接口,使得应用只需要更改libcore的封装实现,而不用修改底层的代码,从而轻松实现功能的变更,功能列表如下所示
Application封装,使用了weakRefrence指向当前Activity的context,方便使用,还增加了应用crash,应用关闭等处理
最基础的Activity和Fragment类,配合Application类和ActivityManager类进行Activity的集中管理
ActivityManager类,使用栈来管理所有的activity
BaseNetApi类,实现了网络请求,网络访问的底层使用的是volley框架。现在提供两种方案:第一种就是可更换的网络框架,为了可更换,就要对volley进行大程度的封装,所有子module不可直接使用volley相关类,以后网络框架更改,只需要修改这几个相关类即可,由于volley功能的复杂性,只能封装最基本的网络访问功能,tag和cache等功能由于不通用性,暂时不封装;
BaseVolleyApi类,第二种就是纯粹的volley框架,不会更换网络访问框架,只需对其进行最基本的封装,所有功能类都可在子module中使用,所以会增大项目对volley框架的耦合性
ImageLoader类,用来进行图片的加载,封装的是volley的imageloader功能,支持lrucache和sd卡二级存储功能
log类,用来打印log,打印的日志信息非常完整
Toast类,该类用来弹出toast,支持弹出toast的位置
GuideManager类,用来显示指引蒙版,支持全屏展示和只在内容区域展示
BaseDialog类,定义了一个应用dialog所应该具备的基础行为
数据库相关类,将数据库类进行了非常便捷的封装,创建数据库应该继承自BaseDB类,为了该数据库的访问应该再创建一个helper类继承自BaseDBHelper,封装该数据库的所有操作,另外还需要对表名和列名进行了枚举的封装,这样使用该数据库直接使用该枚举类获取表名和表的相关列名。对数据库的版本升级也做了相应快捷的处理
CacheManager类,这个类使用SharedPreference来存储基本对象,有临时和永久两种,临时存储将会在每次应用退出之后自动清空,永久存储则永久存储
FileDownloadManager类,用来下载相关文件,为多线程断点续传式下载,支持开始,停止和删除操作
Utils类:
CommonUtils,用来集中管理一些杂项函数,比如dp2px等
FileUtils,用来管理文件的相关操作
ImageUtils,用来处理图片的相关操作
###第二层libcore-ui层###
该层为基础核心扩展层,扩展libcore的层的代码,并且定义应用的基本样式,够统一样式,方便管理
扩展实现的Activity和Fragment类,BaseActivity类中定义了整个应用的基本简单样式(现在提供两种样式,顶部透明样式和底部透明样式),顶部bar的样式(顶部bar有自定义bar和系统控件toolbar)等,BaseActivityWithPopWindow类继承BaseActivity类,实现了底部的弹出框;Fragment类定义了fragment和activity之间的通信方式和topbar的交互,
NetApi类,NetApi继承自BaseNetApi类,在原来的基础上扩展相关的功能,支持自定义继承自volley request的请求,额外的处理就只是在NetApi类中添加相应的函数
VolleyApi类,用来对BaseVolleyApi类进行功能扩展
PermanentCacheDB类,用来存储一些和应用生命周期相关的变量,写入数据库,永久保存
WebFragment类,该fragment用来显示网页,可以单独作为一个fragment嵌入一个页面的任何地方
WebActivity类,该activity用来展示网页,传入url即可显示网页,有进度条和刷新操作
AppDialog类,该类继承自父类BaseDialog类,定义了基本的样式,实现了基础的行为
DialogCreator类,该类用来生成基本样式的dialog
LoadingDialog类,用来定义一个应用最基本的加载框
基本实用的控件:
SimpleGridLayout类,自定义网格布局,自动换行,自定义attr
FlowLayout类,自定义流式布局,支持方向选择,自动换行,自定义attr
###第三层应用层###
该层为模拟应用层,用来测试下层的代码。一个应用在使用了libcore层和libcore-ui层之后,可能还需要在封装一层或几层module,但是保证最基础的两层是应用所通用的module即可