35 Star 80 Fork 12

qlslylq / AndroidDesign

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
群问答解惑.txt 5.95 KB
一键复制 编辑 Web IDE 原始数据 按行查看 历史
AndroidDesign开源中国下载地址:https://git.oschina.net/qlslylq/AndroidDesign.git
AndroidDesignDemo开源中国下载地址:https://git.oschina.net/qlslylq/AndroidDesignDemo.git
1.工程依赖与jar,工程依赖与jar之间的区别在于前者可有资源,后者不可。没有资源的情况下,将jar变为工程的存在形式,则是因为其中源码与有所改善。比如阿里的fastjson,众所周知,Java,C#,php等都可以作为后台开发语言,由于用作数据的发送与接收,本质上没有影响,但实际开发中仍有优劣,Java是最适合与客户端对接的语言,系列原因略,当使用C#作后台向客户端发送json数据时,即toJsonString时,C#不便配置容器(或其它数据类型)为null时转为[]的情况,而前端,谷歌的gson可在前端配置,但阿里的fastjson无法在前端配置。为避免解析后繁复处理的麻烦,故而需要修改fastjson源码,而AndroidDesign的依赖工程中,fastjson由jar转为工程的存在形式即是基于此原因,二次修改的fastjson源码,修复了容器在前端解析时返回null的情况,现返回[].
2.环境配置方面,主要要明确工程间的依赖关系。众所周知,actionbarsherk与slidingmenu是依赖的,其余工程依赖于主工程AndroidDesign,实际项目开发是在此主工程上。由于是一个综合型的框架,首次包含的依赖比较多,可以根据自身需要进行删减。比如框架中使用的xutils用的仅是其中的网络模块,如果要改为okhttp,需解除xutils依赖,并且删除或修改AndroidDesign主工程中网络层对应于xutils的使用部分即可,相关使用部分极低耦合,删除的代码不会很多
3.其它依赖方面,如果不想使用多选图片模块,可以解除photoselector依赖并删除AndroidDesign中对应使用的代码。关于actionbarsherlock与slidingmenu的依赖,由于为最早期开发,与AndroidDesign主工程耦合较大,不建议解除此依赖,若实在想解除,多花点时间也是可以解除的。对于opencv依赖,AndroidDesign主工程与其对应的代码部分主要使用的是其角点检测功能,使用度极低,可以解除其依赖并删除对用使用代码。
4.窗口自定义栈方面,AndroidDesign主工程中manager包中ActivityManager为窗口的栈管理类,包含基本的窗口跨级返回功能。
5.jar版本方面,AndroidDesign主工程config包中有详细对所有引用的jar包进行的说明文档文件
6.网络层方面,AndroiDesign主工程部分网络层是与xutils进行对接的。由于AndroidDesign作为开发框架,所以没有具象服务器域名,服务器的url等暂时是没有值的,实际开发时填写真实服务器域名,修改网络参数及值,修改url签名算法,优化成真实对接服务器的逻辑流程即可使调通网络
7.必看方面,readme文件,即对整个框架的模块介绍是必看的,由此可以知道此框架做了哪些事情,以在看源码时有初步的印象。工程及依赖方面,AndroidDesign主工程是必看的,所有包的类源码需要大致浏览,由此可以了解方案的实现方式,层级通信,结构设计,以及此包主要是处理什么行为的。包查看亦有其优先级,比如窗口层,适配器层,网络层可以细致查看,工具层,集成的pulltorefresh层可以大致略过
8.源码集成方面,比如集成pulltorefresh到AndroidDesign主工程,有jar,工程依赖,工程耦合三种方式,在集成时间,可修改性,更新维护等方面各有各的优缺点,AndroidDesign主工程中集成的pulltorefresh亦是经过了二次修改的,主要修复了源码中分页显示的问题
9.模板开发方面,AndroidDesign主工程中有模板的概念,套用模板进行应用层开发为推荐的方式,比如窗口(Activity,Fragment)层的模板为CopyActivity,CopyFragment,使用方式为对模板进行复制粘贴并修改名称[勿覆盖模板],由此代替缓慢的环境工具创建文件的方式,模板开发,既可规范结构也可快速填充,比如窗口层模板中的initView(),initData(),initListener()为框架层自动调用的,勿须再手动调用,在由模板生成的新窗口中填充既定的函数既可完成一个窗口的基础功能,漂亮规范而耐看且码量少。另外,例如经过结构处理的适配器层,子适配器仅实现getView()即可,而getView()中又优化了ViewHolder的实现方式,适配器代码极度减少。当然,也可以不按照模板进行开发,更进一步地,甚至可以不按照设计的结构进行开发,结构层的强制性不代表无法改变,例如每个窗口都有fuctionView的概念,例如窗口不继承规定好的BaseActivity,不开辟FuctionView对象都可以正常开发,区别就是无法使用既定结构带来的某些好处,如不继承BaseActivity(默认被迫进入栈管理),则就逃出了自定义栈的监控,无法享受自定义栈的带来的跨级返回便利
10.宏观调控方面
(1).findViewByID(函数存在于窗口与View中)举例:functionView中的findViewByID经过了上层的拦截处理,可进行宏观调控,例如修改(rename)较长的findViewByID函数命名为findView使所有子functionView控件查找函数简要,清爽化。
(2).栈管理举例:默认由框架层自动完成窗口的栈进出行为,在BaseSherlockFragmentActivity中屏蔽这一默认行为即可让所有窗口不进行栈管理,减少开销,在需要或不需要窗口跨级返回功能的需求中,可快速一键开启或关闭这一行为。
(3).未登录提示举例:为避免在各个子窗口中进行完全分步的相同行为处理,可以对共有行为进行先交合再散发结构处理,利用子层-->上层-->子层的方式可以解决某些问题,例如应用的未登录提示问题,具体略。
(4).宏观调控并不是单级调控的,可以在不同的层级分别进行不同程度的或适合的宏观调控行为(如网络数据接收过程中的各个节点均可以做适合的宏观调控行为),任何结构并不是单一性的完美无缺的,而应该是平衡的,在内存开销,运行速度,代码规范等方面具有各自的优劣特性,不同的时刻,某个因素占主要,其它因素占次要乃是由于不同情境所致,如窗口层相关结构设计应以运行速度为主,子窗口中某些功能的实现处理以功能函数化,减少全局变量为主,适当降低运行速度,提高可读性为主。自动化处理减少了码量,增加了规范,提高了效率,但增加了没必要使用时的多余开销,降低了运行速度。人识别可以提高开发速度,但增加了结构开销;机器识别则降低了结构开销,但降低了开发速度。一个合理的应用是人识别与机器识别平衡的过程。缺少结构设计让开发效率低下,过度设计让应用负重累累,平衡的把握需要智慧地考虑。
11.AndroidDesignDemo方面,其apk并没有展现异与常见的特殊功能,重要在于AndroidDesignDemo源码而非其apk,AndroiDesignDemo中使用AndroidDesign框架进行开发的对应代码是学习,熟悉,和使用AndroidDesign框架的桥梁。
12.控件层方面,控件层也具有不同层级的宏观调控功能,如对于艺术字,可以在字体工具类屏蔽艺术字使用,可以在本地数据库默认配置中屏蔽使用,可以在其自定义控件类屏蔽使用,可以在布局层屏蔽使用,可以在窗口层改变使用;二次开发的某些自定义控件具有控件调试功能,readme文件中有相关初步说明,控件调试为方便软件测试人员在手机屏幕上动态改变某个控件的颜色,尺寸等属性,实时生效,快速查看效果以满足不断变化的UI需求,长按二次开发控件弹出其调试窗口,调试模式受控于AndroidDesign主工程util包Log类中的运行模式,在发布模式下自行关闭。对于完全不使用艺术字,不使用控件调试功能的需求下,布局中使用系统原生控件即可。
13.框架更新方面,框架源码会每次更新到开源中国网站,即文档头所示地址,AndroidDesign交流QQ群326550832群文件中不会实时更新源码。
14.鉴于群里的问答,会逐次更新问答细节到本文件中,本文件会在交流群共享中实时整理更新,但可能不会实时更新到开源中国网站上。
Android
1
https://gitee.com/qlslylq/AndroidDesign.git
git@gitee.com:qlslylq/AndroidDesign.git
qlslylq
AndroidDesign
AndroidDesign
master

搜索帮助

14c37bed 8189591 565d56ea 8189591