/Android_framework

android framework 用来快速开发的android框架

Primary LanguageJavaBSD 2-Clause "Simplified" LicenseBSD-2-Clause

android_framework

an android framework in order for rapid development

##1.开发环境## 环境为android studio + jdk1.7
framework

##2.框架结构## 该框架分为三个部分:
libcore
libcore-ui
testsample
第三层为测试代码,重点在第一和第二层...

##3.框架详细概述##

###第一层libcore### 该层为基础核心代码层,该层的代码特点是封装了应用所应该使用的基础功能,好处是封装的功能仅仅提供简单的接口,使得应用只需要更改libcore的封装实现,而不用修改底层的代码,从而轻松实现功能的变更,功能列表如下所示

  1. Application封装,使用了weakRefrence指向当前Activity的context,方便使用,还增加了应用crash,应用关闭等处理
  2. 最基础的Activity和Fragment类,配合Application类和ActivityManager类进行Activity的集中管理
  3. ActivityManager类,使用栈来管理所有的activity
  4. BaseNetApi类,实现了网络请求,网络访问的底层使用的是volley框架。现在提供两种方案:第一种就是可更换的网络框架,为了可更换,就要对volley进行大程度的封装,所有子module不可直接使用volley相关类,以后网络框架更改,只需要修改这几个相关类即可,由于volley功能的复杂性,只能封装最基本的网络访问功能,tag和cache等功能由于不通用性,暂时不封装;
  5. BaseVolleyApi类,第二种就是纯粹的volley框架,不会更换网络访问框架,只需对其进行最基本的封装,所有功能类都可在子module中使用,所以会增大项目对volley框架的耦合性
  6. ImageLoader类,用来进行图片的加载,封装的是volley的imageloader功能,支持lrucache和sd卡二级存储功能
  7. log类,用来打印log,打印的日志信息非常完整
  8. Toast类,该类用来弹出toast,支持弹出toast的位置
  9. GuideManager类,用来显示指引蒙版,支持全屏展示和只在内容区域展示
  10. BaseDialog类,定义了一个应用dialog所应该具备的基础行为
  11. 数据库相关类,将数据库类进行了非常便捷的封装,创建数据库应该继承自BaseDB类,为了该数据库的访问应该再创建一个helper类继承自BaseDBHelper,封装该数据库的所有操作,另外还需要对表名和列名进行了枚举的封装,这样使用该数据库直接使用该枚举类获取表名和表的相关列名。对数据库的版本升级也做了相应快捷的处理
  12. CacheManager类,这个类使用SharedPreference来存储基本对象,有临时和永久两种,临时存储将会在每次应用退出之后自动清空,永久存储则永久存储
  13. FileDownloadManager类,用来下载相关文件,为多线程断点续传式下载,支持开始,停止和删除操作
  14. Utils类:
    • CommonUtils,用来集中管理一些杂项函数,比如dp2px等
    • FileUtils,用来管理文件的相关操作
    • ImageUtils,用来处理图片的相关操作

###第二层libcore-ui层### 该层为基础核心扩展层,扩展libcore的层的代码,并且定义应用的基本样式,够统一样式,方便管理

  1. 扩展实现的Activity和Fragment类,BaseActivity类中定义了整个应用的基本简单样式(现在提供两种样式,顶部透明样式和底部透明样式),顶部bar的样式(顶部bar有自定义bar和系统控件toolbar)等,BaseActivityWithPopWindow类继承BaseActivity类,实现了底部的弹出框;Fragment类定义了fragment和activity之间的通信方式和topbar的交互,
  2. NetApi类,NetApi继承自BaseNetApi类,在原来的基础上扩展相关的功能,支持自定义继承自volley request的请求,额外的处理就只是在NetApi类中添加相应的函数
  3. VolleyApi类,用来对BaseVolleyApi类进行功能扩展
  4. PermanentCacheDB类,用来存储一些和应用生命周期相关的变量,写入数据库,永久保存
  5. WebFragment类,该fragment用来显示网页,可以单独作为一个fragment嵌入一个页面的任何地方
  6. WebActivity类,该activity用来展示网页,传入url即可显示网页,有进度条和刷新操作
  7. AppDialog类,该类继承自父类BaseDialog类,定义了基本的样式,实现了基础的行为
  8. DialogCreator类,该类用来生成基本样式的dialog
  9. LoadingDialog类,用来定义一个应用最基本的加载框
  10. 基本实用的控件:
    • SimpleGridLayout类,自定义网格布局,自动换行,自定义attr
    • FlowLayout类,自定义流式布局,支持方向选择,自动换行,自定义attr

###第三层应用层### 该层为模拟应用层,用来测试下层的代码。一个应用在使用了libcore层和libcore-ui层之后,可能还需要在封装一层或几层module,但是保证最基础的两层是应用所通用的module即可