从网上收集一些框架,写程序偷懒这些框架很有用,必须记下来,为了以后少写代码,用别人好的框架
ThinkAndroid
ThinkAndroid(一个ThinkAndroid教程地址:http://my.oschina.net/u/1046077/blog/127603)虽然有很多使用的功能,如下,很齐全,而且下面这些功能做一个安卓项目都是需要的
- MVC模块
- ioc模块使用方法:
- 数据库模块
- Http模块使用方法:
- 异步get方法
- 同步get方法
- 使用http下载文件:
- 缓存模块 方法
- 打印模块使用方法
- 下载器模块
- 下载器后台运行
- 配置器模块:
- 网络状态检测模块:
不过后来发现,一来这个框架好久没维护了,二来,因为做的是一个比较麻烦的项目,所以一个肯定要修改很多,这个框架改起来不方便,当时把这个框架的源码都看了一遍,折腾了近半个月,还是决定放弃了(不是他不好用,只是不够灵活,比如你要用这个框架,你的Application,Activity都必须继承这个框架的,不继承就不能用框架的,因为现在Android多了很多新的Activity,那你要想着按他的TAActivity改也非常麻烦)。
后来又发现了一个比较厉害的集成框架(这里说的意思是功能方面的集大成,类似第一个),叫
DroidParts
(官网:http://droidparts.org)
功能也是非常强大,基本上也涵盖了上面说的那些功能,而且框架相对灵活一些,作者将自己的Activity也命名为Activity,而且增加的代码很少,所以,如果你要集成一个特殊的Activity进来,只需要一两行代码的改变。他的功能如下:
- DI - injection of Views, Fragments, Services, anything.:依赖注入
- ORM - efficient persistence utilizing Cursors & fluent API.:ORM对象关系模型,就是将SQLite转为面向对象,类似Hibernate
- EventBus for subscribing to and posting events.:EventBus
- Simple JSON (de)serialization capable of handling nested objects.:JSON转换
- Improved AsyncTask & IntentService with Exceptions & result reporting support.:同步异步请求
- L ogger that figures out tag itself & logs any object.:日志
- RESTClient for GETting, PUTting, POSTing, DELETing & InputStream-getting, also speaks JSON.:简单的RESTFUL客户端
- ImageFetcher to asynchronously attach images to ImageViews, with caching, cross-fade & transformation support.:图片加载和缓存
- Numerous Utils .:其他工具(如一些新的组件)
这个对我来说已经感觉很好的,框架很灵活,而且自定义也方便,做一般的简单的项目应该没有任何问题了,我还因此将官网的文档完全翻译了一遍在博客中写了一个系列,这个框架我前前后后也使用了半个多月的时间,为什么后来又放弃了呢!原因在于,他里面所有的功能基本上是自己的实现,所以,就导致了一个问题就是可定制性不强,整体功能强大,但是每个小功能就比较薄弱了,所以我又放弃了。
后来在GitHub上到处找啊找啊,又找到一个框架(其实也不算是一个框架,应该是一个演示项目),名字叫Android Bootstrap,不过这里要插一点的是,还有另外一个Android Bootstrap,和Web中的Bootstrap算是有一点对应,那个Android Bootstrap是一个安卓组件风格的集合(还有一些文字图标),这个我在使用DroidParts的使用也继承了这个工具,后来放弃了(没有用,因为美工都已经把界面设计好了,我要这个就没有用了),回到正题说我们的主角了。
Android Bootstrap
官网:http://www.androidbootstrap.com/
GitHub地址:https://github.com/AndroidBootstrap/android-bootstrap
Android Bootstrap是一个演示项目,他集合了安卓开发中常用的工具集(这些开源工具基本涵盖了我们上面提到的两个集大成框架的所有功能点),然后做了一个有几个最初功能的应用(比如安卓账户管理等),基本上把那些开源工具都整合进去使用了一遍,所以,我们就可以把这个项目作为我们的项目的雏形的雏形来进行开发。现在我的程序也做了好长时间了,一个人做起来的确有些慢,不过也算渐渐进入状态了,后来我又整合了好些个开源工具来实现不同的功能,总体来说,选择这个项目程序来开发我的app是对的。现在可以列一下我项目中用到的所有的开源工具给大家一个参考(很多工具我都是经过认真的多个中选择的,除了最初的那几个基本保留外):
//这个就不说了,安卓自己的
compile ‘com.android.support:support-v4:19.+‘ :
//这个也不用说吧,安卓自己的 compile ‘com.android.support:appcompat-v7:19.+‘
//这个工具都应该知道,谷歌开发的JSON工具包,因为我们传数据都是用的JSON,所以经常要在对象和JSON字符串之间进行转换,这个工具没有显示的用,而是在下面的RETROFIT这个工具中调用的 compile ‘com.google.code.gson:gson:2.2.4‘
//这个工具是做图片加载的,大家知道我们的app的图片肯定实现先显示占位符,然后再异步加载的,中间涉及到(异步加载,内存,硬盘缓存等)好多事情,这个工具通过简单的API(一种链式API风格,我很喜欢)去实现,中间的事情完全不需要我们操心了,不过听说另外一个做图片缓存的工具,比这个功能强大,叫什么忘记了,不过这个工具绝对牛 compile ‘com.squareup.picasso:picasso:2.3.2‘
//依赖注入:简单来说就是帮我们统一新建对象的,详情看我的博文 compile ‘com.squareup.dagger:dagger:1.2.1‘
//dagger的编译工具,因为dagger会用到很多注解,这个工具就是说,我们的注解不是通过反射去处理的,而是直接生成代码,速度快,和下面的几个注解工具一样的方式,详情看我的博文 compile ‘com.squareup.dagger:dagger-compiler:1.2.1‘
//视图注入:我们经常会findById了,setOnClickListener了这些方法,很麻烦,而且看着代码很乱,这个工具就是通过注解去实例化你的View,当然,还有其他功能,详情看我的博文 compile ‘com.jakewharton:butterknife:5.0.0‘
//这个工具好像是基于HttpClient的,不过我现在不用这个了,我是完全用的Retrofit compile ‘com.github.kevinsawicki:http-request:3.0‘
//这个工具也是大名鼎鼎,是viewpager的指示器的开源工具(Viewpager现在也是一种非常常用的View) compile ‘com.actionbarsherlock:viewpagerindicator:[email protected]‘
//pusher:通知框架,目前还没开始用 compile ‘com.github.kevinsawicki:android-pusher:0.6‘
//一个工具集吧,比如我现在用的最频繁的Toaster.showLong|showShort,其实就是安卓自己的Toast类的封装 compile ‘com.github.kevinsawicki:wishlist:0.9‘
//EventBus:是用来解耦各个类的,比如我的Fragment和Activity交互,平常是要定义一个接口然后传入进来操作的,用这个就直接post了,很方便,当然他的功能很强大的,可以参考我的博文(最好是官方的英文文档,我的博文是个简单翻译) compile ‘com.squareup:otto:1.3.4‘
//Restful是现在比较流行的一个WEB设计风格吧,我其实也很喜欢这种风格,这个工具绝对帅爆了,写一个请求只需要写接口,实现都由工具来帮你搞定了,其实我们发送请求本来也不需要写逻辑代码(只需要发送URL,参数,Header等,这些都可以通过注解设置了) compile ‘com.squareup.retrofit:retrofit:1.6.1‘
//这个是一个简单的图片Slider,支持图片下面的标题文字 compile ‘com.daimajia.slider:library:[email protected]‘
//瀑布流,用这个可是费了我好大的功夫,因为他不支持上拉家在更多,我在他和PullToRefresh的整合可是花了不少时间(两天了) compile ‘com.etsy.android.grid:library:1.0.5‘
//圆角图形工具,可以理解为一个View,这个View可以设置你的组件是圆形的,椭圆的,边框等,很灵活 compile ‘com.makeramen:roundedimageview:1.3.0‘
//下拉刷新上拉加载组件,很有名气,支持很多的组件(如ListView,WebView,ViewPager等等) compile ‘com.mcxiaoke.pulltorefresh:library:2.5.3‘
//,可以在3.0以前的系统上使用属性动画,是一个向下兼容3.0的新的动画特性的包 compile ‘com.nineoldandroids:library:2.4.0‘
//这个是做字段校验的工具:比如你可以在一个TextView上面使用注解,约束这个TextView的文本必须是邮箱格式 compile (‘eu.inmite.android.lib:android-validation-komensky:0.9.2‘){
exclude module: ‘support-v4‘ }
当然,还有一些必要工具我还没有列出来,最明显的如ORM(因为现在还没有用到呢),日志等