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即可

android framework,GitHub - zhaozepeng/Android_framework: android framework 用来快速开发的android框架...相关推荐

  1. android 仿ofo页面,ReactNative 仿造 ofo 共享单车快速开发的app

    ofo ReactNative 仿版(主要是做 iOS版本) 原因 之前一直想做个 ReactNative 关于地图相关的 demo ,然后近两天在群里看见有人发的 RN 做的 ofo 共享单车的仿版 ...

  2. android地图画线,绘制折线-在地图上绘制-开发指南-Android 轻量版地图SDK | 高德地图API...

    地图上绘制的线是由 Polyline 类定义实现的,线由一组经纬度(LatLng对象)点连接而成. 绘制一条线 与点标记一样,Polyine的属性操作集中在PolylineOptions类中,添加一条 ...

  3. android 前后同时预览_GitHub 上优质项目整理,不只 Android

    (1)整理了所有跟编程相关的免费书籍 https://github.com/EbookFoundation/free-programming-books/blob/master/free-progra ...

  4. 国产平台之T507 开发板Android 安全策略漫谈 -飞凌嵌入式

    硬件平台:飞凌嵌入式 OKT507-C开发板 操作系统:Android10.0 飞凌嵌入式 T507 开发板 Android系统版本为Android10.0,默认开启了SELinux.基于MAC访问控 ...

  5. android l camera no panorama,Android Camera从App层到framework层到HAL层的初始化过程

    Android camera 从上到下能够分为四个部分: Application层. framework层. HAL(hardware abstract layer)层. Kernel层 通常面向开发 ...

  6. 【Android】GitHub Android 开源项目汇总

    参考网址:http://blog.csdn.net/ithomer/article/details/8882236 GitHub 上的开源项目不胜枚举,越来越多的开源项目正在迁移到GitHub平台上. ...

  7. GitHub标星8-3k的学习习惯,未来的Android高级架构师:别让这几个点毁了你

    4.记得带上最少两份简历,你可以针对公司做不同的简历,没有任何一份简历是万能的,自己准备一支笔.现在虽然天气热,但别穿个短裤就跑来-至少也要打扮的像个上班族. 5.面试的时候一直在问你关于java,而 ...

  8. 开源需自立!Android、GitHub、Apache全线告急!

    作者 | 胡巍巍&伍杏玲 责编 | 唐小引 出品 | CSDN(ID:CSDNnews) 华为四面楚歌,"破窗效应"爆发! 继5月16日美国商务部工业与安全局(BIS)将华 ...

  9. Android使用Github Actions持续集成并自动上传apk到蒲公英App内测分发平台(含证书密码脱敏)

    目录 1.前言 2.Github Actions持续集成 3.上传apk到蒲公英 4.Gradle配合Github Actions的Secret使用 4.1设置Github Actions Secre ...

最新文章

  1. python语言入门p-MicropPython的学习,如何从0到1?
  2. 为什么读博士以及有什么意义
  3. linux 网卡配置不一致,linux环境下,双网卡配置不同网段后,路由问题
  4. 精通Spring Boot—— 第二十一篇:Spring Social OAuth 登录简介
  5. python将list写入文件_Python:将 list 写入一个 txt 文件
  6. 下一代低延时直播CDN:HLS、RTMP 与UDP +WebRTC
  7. 【完整流程】用VSCode替换Vivado默认编辑器
  8. readdirectorychangesw 链接错误 undeclared identifier 解决方法
  9. 工作305:对选择的数值清空
  10. mysql配置连接远程_MySql配置远程访问
  11. 当前页面跳转网页,新打开和在本页面打开
  12. 【转】NPOI自定义单元格背景颜色
  13. Extjs 例外被抛出且未被接住
  14. 软件工程课程实践-用户操作手册
  15. html中引入字体包
  16. matlab生成主对角占优,matlab实现判断是否能否生成严格对角占优矩阵
  17. C++ 应用程序性能优化 -- 内存池
  18. 重庆市总工会送法到中建三局城建档案馆项目
  19. 实习每日总结_20161222
  20. 你今天好帅用计算机,华师表白墙 | 计算机系最帅的男孩子,我喜欢你!

热门文章

  1. 数据字典怎么写_求职数据分析,项目经验该怎么写
  2. Android开发之修改ImageView(图片)的颜色
  3. 怎么查看地址值_西门子S7-200 SMART PID回路控制,配置PID向导,查看项目组件
  4. centos7上配置Samba服务器完成与windows的文件共享
  5. 1066. [SCOI2007]蜥蜴【最大流】
  6. 使用SVN提示“工作副本已经锁定”的解决办法
  7. spring事物管理(配置文件方式)
  8. js事件冒泡和事件委托
  9. HDU 2993 MAX Average Problem(斜率优化DP)
  10. android 中Dialog对话框及自定义Dialog的方法