自己总结的目前Android通用的流行框架大全

Android 通用流行框架大全


1、性能优化


1.1、内存泄漏检测(LeakCanary)

1.1.1、LeakCanary.install(this);//初始化

1.2、奔溃报告(ARCA Application Report For Android)

1.2.1、当你的程序奔溃时,会给开发者发送一个Report。即使程序没有奔溃,也会发送错误Report。


2、调试框架


2.1、Stetho(Facebook开发的工具)

2.1.1、 Stetho.initializeWithDefaults(this);
2.1.2、评价:android3.0后这个功能都直接集成在IDE中了。


3、测试框架

3.1、Mockito

3.1.1、mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法

3.2、Robotium

3.3、Robolectric


4、Log框架

4.1、Logger  使用方式:String userName = "Jerry"   Logger.i(userName);

4.1.1、线程的信息

4.1.2、类的信息

4.1.3、方法的信息

4.1.4、格式打印json、xml

4.1.5、点击链接跳转到源码打印处

//能够自由选择打印以上五种类型的信息

4.2、Hugo  使用方式:classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1'

4.2.1、注解@DebugLog

4.3、Timer  使用方式:compile 'com.jakewharton.timber:timber:4.1.2'

4.3.1、在application里面的onCreate()里面注册


5、响应式编程

5.1、Rx系列   相关链接:http://gank.io/post/560e15be2dca930e00da1083

5.1.1、RxJava  (包含了四个对象 Observable  Observer  Subscribe  Event)

5.1.1.1、随着程序逻辑变得越来越复杂,它依然能够保持简洁

5.1.2、RxJavaJoins

5.1.3、RxAndroid

5.1.4、RxBinding

5.1.4.1、简介:是 Jake Wharton 的一个开源库,它提供了一套在 Android 平台上的基于 RxJava 的 Binding API。所谓 Binding,就是类似设置 OnClickListener 、设置 TextWatcher 这样的注册绑定对象的 API。

5.2、Agera  使用方式:compile 'com.google.android.agera:agera:1.0.0-rc2'

5.2.1、简介:类似于RxJava


6、事件总线

6.1、EventBus

6.1.1、简介:EventBus是一个消息总线,以观察者模式实现,用于简化程序的组件、线程通信,可以轻易切换线程、开辟线程。EventBus3.0跟先前版本的区别在于加入了annotation @Subscribe,取代了以前约定命名的方式。

6.1.2、一般使用方式:OnCreate()注册,OnDestroy反注册

6.2、Otto

6.2.1、简介:otto基于Guava项目的Android支持库,如果你在Android程序开发的过程中想要不同的组件之间进行有效的通信可以使用这个库。通过otto库可以降低程序之间的耦合性。

6.2.2、一般使用方式:@subscrible


7、后台处理

7.1、Tape

7.1.1、简介:一个轻快的、事务性的、基于文件的FIFO的库

7.2、Android Priority JobQueue  使用方式:compile 'com.birbit:android-priority-jobqueue:1.3.5'

7.2.1、简介:Android Priority Job Queue是一款专门为Android平台编写,实现了Job Queue的后台任务队列类库,能够轻松的在后台执行定时任务,提高用户体验和应用的稳定性。

7.2.2、比如有3个线程,在执行前三个job的OnAdd()方法,同时执行job1的OnRun()方法。



8、图标

8.1、WilliamChart

8.1.1、画图控件  开源源码:https://github.com/diogobernardino/WilliamChart

8.2、HelloCharts

8.2.1、简介:hellocharts是一个用来生成统计图表的三方库,目前支持折线图、柱状图和饼状图等常见图表。支持缩放、滑动和动画效果。是一个非常实用的Android平台的图标库

8.2.1.1、Line chart  线图

8.2.1.2、Column chart  柱形图

8.2.1.3、Pie chart 饼图

8.2.1.4、Bubble chart 泡泡图

8.2.1.5、Combo chart 柱图和线图的组合图

8.2.1.6、Preview charts 预览图

8.3、MPAndroidCharts

8.3.1、简介:支持线状图、柱状图、散点图、烛状图、气泡图、饼状图和蜘蛛网状图
支持缩放、拖动(平移)、选择和动画
适用于 Android 2.2 ( API 8 ) 和以上


9、依赖注入

9.1、ButterKnife

9.1.1、使用方式:@BindView(R.id.tv_a  TextView tv_a)

9.2、Dagger2

9.2.1、使用方式:dagger2是一个依赖注入框架,在编译期间自动生成代码,负责依赖对象的创建。

9.3、AndroidAnotations  使用方式:@EActivity   @ ViewById  @Click

9.3.1、使用依赖注入(Dependency Injection)

9.3.2、简化的线程模型(Simplified  threading model) 

9.3.3、事件绑定(Event binding)

9.3.4、REST Client

9.3.5、No Magic

9.4、RoboGuice

9.4.1、方便findViewById在XML中查找一个View,并将其强制转换到所需类型

9.4.2、check for null when you getIntent().getExtras()

9.4.3、Less code means fewer opportunities for bugs



10、缓存

10.1、DiskLruCache(Lru磁盘缓存)

10.1.1、防止多图OOM的核心解决思路

10.1.1.1、本地缓存路径  SD卡  /sdcard/Android/data/<application package>/cache

10.1.1.2、本地缓存路径 本机   /data/data/<application package>/cache

10.1.1.3、获取缓存地址:public File getDiskCacheDir(Context context, String uniqueName) {  
    String cachePath;  
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())  
            || !Environment.isExternalStorageRemovable()) {  
        cachePath = context.getExternalCacheDir().getPath();  
    } else {  
        cachePath = context.getCacheDir().getPath();  
    }  
    return new File(cachePath + File.separator + uniqueName);  

10.1.1.4、获取当前版本号:public int getAppVersion(Context context) {  
    try {  
        PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);  
        return info.versionCode;  
    } catch (NameNotFoundException e) {  
        e.printStackTrace();  
    }  
    return 1;  


10.1.2、写入缓存

10.1.3、读取缓存

10.1.4、删除缓存


11、图片加载

11.1、Android Universal Image Loader

11.1.1、多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等

11.1.2、支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置

11.1.3、支持图片的内存缓存,文件系统缓存或者SD卡缓存

11.1.4、支持图片下载过程的监听

11.1.5、根据控件(ImageView)的大小对Bitmap进行裁剪,减少Bitmap占用过多的内存

11.1.6、较好的控制图片的加载过程,例如暂停图片加载,重新开始加载图片,一般使用在ListView,GridView中,滑动过程中暂停加载图片,停止滑动的时候去加载图片

11.1.7、提供在较慢的网络下对图片进行加载

11.2、Picasso  使用方式:compile 'com.squareup.picasso:picasso:2.5.2' 

11.2.1、RequestHandler

11.2.2、BitmapHunter

11.2.3、PicassoDrawable

11.2.4、DeferredRequestCreator

11.2.5、Action

//以上为Picasso的主要类

11.3、Fresco
11.3.1、Image Pipeline  它负责从网络,从本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级磁盘)。

11.3.2、Drawees   它会在图片加载完成前显示占位图,加载成功后自动替换为目标图片。当图片不再显示在屏幕上时,它会及时地释放内存和空间占用。

//五个主要的功能

11.3.3、内存管理

11.3.4、图片加载

11.3.5、图片绘制

11.3.6、图片的渐进式呈现

11.3.7、动态加载

11.4、Glide   使用方式:compile 'com.github.bumptech.glide:glide:3.7.0'

11.4.1、Glide.with(context).resumeRequests()和 Glide.with(context).pauseRequests()     

  当列表在滑动的时候,调用pauseRequests()取消请求,滑动停止时,调用resumeRequests()恢复请求

11.4.2、Glide.clear()

当你想清除掉所有的图片加载请求时,这个方法可以帮助到你。

11.4.3、ListPreloader

如果你想让列表预加载的话,不妨试一下ListPreloader这个类。



12、图片处理

12.1、Picasso-transformations

12.1.1、基于Picasso的图片处理库,包括图片裁剪等

12.2、Glide-transformations

12.2.1、基于Glide的transformation库,拥有裁剪,着色,模糊,滤镜等多种转换效果

12.3、Android-gpuimage  使用方式:compile'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'

12.3.1、new GPUImageGrayscaleFilter() 滤镜处理,new一个对象为一种处理效果




13、网络解析

13.1、json解析

13.1.1、Gson

13.1.1.1、fromJson() 实现反序列化

13.1.1.2、toJson()  实现序列化

13.1.1.3、@SerializedName注解

13.1.2、Jackson

13.1.2.1、Streanming API

13.1.2.2、Tree Model

13.1.2.3、Data Binding

13.1.2.4、json 转换为 list:
 public static <T> List<T> jsonToList(String jsonStr,
            Class<?> collectionClass, Class<?>... elementClasses)
            throws Exception {
        ObjectMapper mapper = new ObjectMapper();

        JavaType javaType = mapper.getTypeFactory().constructParametricType(
                collectionClass, elementClasses);

        return mapper.readValue(jsonStr, javaType);
    }

13.1.3、Fastjson  Alibaba开发的一个框架

13.1.3.1、快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)

13.1.3.2、强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)

13.1.3.3、 零依赖(没有依赖其它任何类库除了JDK)

13.2、html解析

13.2.1、HtmlParser

13.2.1.1、org.htmlparser      定义了htmlparser的一些基础类,其中最为重要的是Parser。Parser是htmlParser的最核心的类。

13.2.1.2、org.htmlparser.beans    对Visitor和Filter的方法进行了封装,定义了针对一些常用HTML元素操作的JavaBean,简化对常用元素的提取操作。包括:FilterBean、HTMLLinkBean、HTMLTextBean、LinkBean、StringBean、BeanyBaby等。

13.2.1.3、org.htmlparser.nodes      定义了基础的node,包括:AbstractNode、RemarkNode、TagNode、TextNode等。 Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现。

13.2.1.4、org.htmlparser.tags     定义了HtmlParser进行解析的网页中的各种标签。

13.2.1.5、org.htmlparser.filters      定义了各种过滤器filter,主要通过extractAllNodesThatMatch (NodeFilter filter)来对html页面指定类型的元素进行过滤,包括:AndFilter、CssSelectorNodeFilter、HasAttributeFilter、HasChildFilter、HasParentFilter、HasSiblingFilter、IsEqualFilter、LinkRegexFilter、LinkStringFilter、NodeClassFilter、NotFilter、OrFilter、RegexFilter、StringFilter、TagNameFilter、XorFilter

13.2.1.6、org.htmlparser.visitors    定义了各种访问者visitor,主要通过visitAllNodesWith (NodeVisitor visitor)来对html页面元素进行遍历,包括:HtmlPage、LinkFindingVisitor、NodeVisitor、ObjectFindingVisitor、StringFindingVisitor、TagFindingVisitor、TextExtractingVisitor、UrlModifyingVisitor

13.2.1.7、org.htmlparser.parserapplications      定义了一些实用的工具,包括LinkExtractor、SiteCapturer、StringExtractor、WikiCapturer,这几个类也可以作为HtmlParser使用样例。

13.2.1.8、org.htmlparser.tests      各种功能的单元测试用例,可作为HtmlParser使用的样例。

13.2.2、Jsoup   Jsoup是一款比较好的Java版HTML解析器。可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

13.2.2.1、从一个URL,文件或字符串中解析HTML

13.2.2.2、使用DOM或CSS选择器来查找、取出数据

13.2.2.3、可操作HTML元素、属性、文本



14、数据库

14.1、OrmLite(Object Relational Mapping)

14.2、SugarORM   使用方式: compile 'com.github.satyan:sugar:1.5' 

14.2.1、配置AndroidManifest.xml

14.2.2、创建实体类

14.2.3、保存entity   .save()

14.2.4、加载entity  .findById()

14.2.5、删除entity   .delete()

14.2.6、批量操作   .deleteAll()

14.3、GreenDAO   使用方式:classpath 'org.greenrobot:greendao-gradle-plugin:3.1.0'     差不多都是同样的操作  增删查改

14.4、ActiveAndroid    使用方式:compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'     一个开源的数据库框架

14.5、SQLBrite  一个响应式的数据查询框架  GitHub地址:https://github.com/square/sqlbrite

14.6、Realm  相关内容,查看官方文档

14.6.1、Realm

14.6.2、RealmConfiguration

14.6.3、RealmObject

14.6.4、RealmList

14.6.5、RealmQuery

14.6.6、RealmResults

14.7、Litepal  比较熟悉一个,也是比较熟练的一个   在项目中经常运用到这个框架   导入方便  操作方便




15、网络请求

15.1、Android Async HTTP

15.1.1、基本用法:
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
    @Override
    public void onSuccess(String response) {
        System.out.println(response);
    }
});

15.1.2、AsyncHttpRequest    继承自Runnabler,被submit至线程池执行网络请求并发送start,success等消息

15.1.3、AsyncHttpResponseHandler     接收请求结果,一般重写onSuccess及onFailure接收请求成功或失败的消息,还有onStart,onFinish等消息

15.1.4、TextHttpResponseHandler    继承自AsyncHttpResponseHandler,只是重写了AsyncHttpResponseHandler的onSuccess和onFailure方法,将请求结果由byte数组转换为String

15.1.5、TextHttpResponseHandler     继承自TextHttpResponseHandler,同样是重写onSuccess和onFailure方法,将请求结果由String转换为JSONObject或JSONArray

15.1.6、BaseJsonHttpResponseHandler          继承自TextHttpResponseHandler,是一个泛型类,提供了parseResponse方法,子类需要提供实现,将请求结果解析成需要的类型,子类可以灵活地使用解析方法,可以直接原始解析,使用gson等。

15.1.7、 RequestParams    请求参数,可以添加普通的字符串参数,并可添加File,InputStream上传文件

15.1.8、AsyncHttpClient     核心类,使用HttpClient执行网络请求,提供了get,put,post,delete,head等请求方法,使用起来很简单,只需以url及RequestParams调用相应的方法即可,还可以选择性地传入Context,用于取消Content相关的请求,同时必须提供ResponseHandlerInterface(AsyncHttpResponseHandler继承自ResponseHandlerInterface)的实现类,一般为AsyncHttpResponseHandler的子类,AsyncHttpClient内部有一个线程池,当使用AsyncHttpClient执行网络请求时,最终都会调用sendRequest方法,在这个方法内部将请求参数封装成AsyncHttpRequest(继承自Runnable)交由内部的线程池执行。

15.1.9、SyncHttpClient     继承自AsyncHttpClient,同步执行网络请求,AsyncHttpClient把请求封装成AsyncHttpRequest后提交至线程池,SyncHttpClient把请求封装成AsyncHttpRequest后直接调用它的run方法。

15.2、AndroidAsync

15.3、OkHTTP    使用方式:https://github.com/square/okhttp

15.3.1、支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求

15.3.2、如果SPDY不可用,则通过连接池来减少请求延时

15.3.3、无缝的支持GZIP来减少数据流量

15.3.4、缓存响应数据来减少重复的网络请求

15.4、Retrofit   项目中经常用到的一个,很方便

15.5、Volley

15.5.1、Gson,图像等的异步下载,不用在去考虑图片下载的时候出现listview滚动过快,造成的没有必要的数据请求。

15.5.2、网络请求的排序

15.5.3、缓存的处理,代替了自己动手写,或者ImageLoader

15.5.4、多级别的取消求情

15.5.5、Activity结束时同时取消所有网络请求

这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方开源组件: 网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService调用库ksoap2 XML解析XStream 动画开源库nineoldandroids 表单验证库android-validation-komensky 更多优秀开源库等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持多种接口回调 SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据库操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、对话框三种提示 文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验 证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共 通方法 数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操 作 读取本地资源工具类(ToolResource.java),反射本地资源文件API,避免依赖R文件,方便 jar形式发布 Android单位转换工具类(ToolUnit.java),sp/dp/px互转 自定义Toast工具类(ToolToast.java),自定义背景色、字体颜色、大小、边框等 Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/XMLPullPaser模式解析、生成XML操作 XMPP操作工具类(ToolXMPP.java),基于XMPP协议的相关API操作 适配字体工具类(ToolAutoFit.java),代码根据设备密度自动缩放View的字体大小 LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务 器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片RoundImageView 自定义样式风格Progres
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值