摘要:过去的时间里,Android开发逐步走向成熟。而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的。这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库。
过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷。不过,在面对各种新鲜事物时,不要忘了那些我们每天使用的大量开源库。在这里,向大家介绍的就是,在这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库。希望通过对它们的了解,能够对你的开发工作有所帮助。
使用的开源函数库
1. 开源日志记录函数库JakeWharton's Timber
https://github.com/JakeWharton/timber
Timber是明星程序员 JakeWharton 开源的一个日志记录函数库,它基于Android Log类基础上, 提供了简洁可扩展的API。
日志记录行为被抽象为一颗一颗的树��,例如有打印日志到Logcat的树,有打印日志到文件的树等等,如果我们要使用某种类型的树,首选需要创建一个实例,并调用Timer.plant函数将其种植下来,之后就可以随意使用了。
2. 轻量级的ORM框架ActiveAndroid
https://github.com/pardom/ActiveAndroid
ActiveAndroid是目前常见的几个ORM框架之一(除此之外,比较有名的开源解决方案还有GreenDAO 和ORMLite ),可以极大的简化数据库的使用,使用面向对象的方式管理数据库,告别手写SQL的历史。每一个数据库表都可以被映射为一个类,开发者只需使用类似save()或者delete()这样的函数即可。
参考文档:
官方文档(http://www.activeandroid.com/)
3. JSON解析函数库GSON
https://github.com/google/gson
GSON是Google出品的函数库,可以将JSON字符串反序列化为对应的Java对象,或者反过来将Java对象序列化为对应的JSON字符串。免去了开发者手动通过JSONObject和JSONArray逐个JSON字段进行解析的烦恼,也减少了出错的可能性,增强了代码的质量。
参考文档:
官方的用户指南http://sites.google.com/site/gson/gson-user-guide
第三方的用户指南http://www.studytrails.com/java/json/java-google-json-introduction.jsp
4. 点击涟漪效果控件RippleView
https://github.com/siriscac/RippleView
这个控件是在Android 2.3及以上平台实现的兼容Android L平台引入的View点击涟漪效果。
5. 现代的HTTP函数库OkHttp
https://github.com/square/okhttp
OkHttp是一个高效的HTTP客户端,具有如下特性:
-
支持HTTP/2和SPDY,对同一台主机的所有请求共享同一个socket
-
当SPDY不可用时,使用连接池减少请求的延迟
-
透明的GZIP压缩减少下载的数据大小
-
缓存响应避免重复的网络请求
OkHttp在网络性能很差的情况下能够很好的工作,它能够避免常见的网络连接问题。如果你的HTTP服务有多个IP地址,OkHttp在第一次连接失败时,会尝试其他可选的地址。这对于IPv4+IPv6以及托管在冗余数据中心的服务来说是必要的。OkHttp使用现代的TLS特性(SNI, ALPN)初始化HTTP连接,当握手失败时,会降级使用TSL1.0尝试初始化连接。
更详细的使用方法参见 文档 。
6. 滚轮选择器控件android-wheel
https://github.com/maarek/android-wheel
android-wheel是Android平台上使用广泛的滚轮选择器,可用于实现日期时间选择器,省市区三级选择菜单等等。在最美时光这个app里面是作为日期时间选择器使用,效果如下所示:
7. 现代的I/O操作函数库okio
https://github.com/square/okio
okio作为java.io和java.nio的补充,是由square公司开发的一个函数库,使得开发者可以更方便的访问,存储和处理数据。一开始是作为okhttp的一个组件存在的,当然我们也可以单独使用它。
8. 类型安全的REST客户端Retrofit
https://github.com/square/retrofit
Retrofit是将REST API转换成Java接口的一个开源函数库,它要求服务器API接口遵循REST规范。它基于注解使得代码变得很简洁,Retrofit默认情况下使用GSON作为JSON解析器,使用OkHttp实现网络请求,三者通常配合使用,当然我们也可以将这两者替换成其他解析函数库。
Retrofit默认情况下使用的是GSON,所以无需自定义解析,同时还支持其他转换器。
参考文档:
Retrofit官方文档
http://square.github.io/retrofit/
快速Android开发系列网络篇之Retrofit
http://www.cnblogs.com/angeldevil/p/3757335.html
Retrofit – Java(Android) 的REST 接口封装类库
http://blog.chengyunfeng.com/?p=491&utm_source=tuicool
再谈RESTAPI最佳实践
http://blog.jobbole.com/70511/
使用Android API最佳实践
http://blog.jobbole.com/65170/
深入剖析Android网络开发库-part1: OkHttp, Volley and Gson
http://www.devtf.cn/?p=985
9. 下拉刷新组件Android-PullToRefresh
https://github.com/chrisbanes/Android-PullToRefresh
Android平台上广泛使用的下拉刷新组件,Github上star五千多,目前不再维护。支持的下拉刷新控件有:
-
ListView
-
ExpandableListView
-
GridView
-
WebView
-
ScrollView
-
HorizontalScrollView
-
ViewPager
-
10. 图片异步加载缓存函数库Android-Universal-Image-Loader
https://github.com/nostra13/Android-Universal-Image-Loader
这个函数库简称UIL,是一个功能强大灵活且高度可自定义的用于加载,缓存和显示图片的开源函数库,它提供一系列配置选项,并能很好的控制图片加载和缓存的过程。
主要特性有:
-
同步或者异步的多线程图片加载
-
高度可自定义:线程池,下载器,解码器,内存和磁盘缓存,图片显示选项等等
-
每张图片的显示支持多种自定义选项:默认存根图片,缓存切换,解码选项,Bitmap处理和显示等
-
图片可缓存在内存或者磁盘(设备的文件系统或者SD卡)上
-
可实时监听图片加载流程,包括下载进度。
-
参考文档:
Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
http://blog.youkuaiyun.com/vipzjyno1/article/details/23206387
Android 开源框架Universal-Image-Loader完全解析
http://blog.youkuaiyun.com/xiaanming/article/details/26810303
Android Universal Image Loader 源码分析
http://codekk.com/open-source-project-analysis/detail/Android/huxian99/Android%2520Universal%2520Image%2520Loader%2520%25E6%25BA%2590%25E7%25A0%2581%25E5%2588%2586%25E6%259E%2590
11. EVENTBUS
EventBus是用于简化应用中各个部件之间通信的一个库。比如从一个Activity发送消息到一个正在运行的服务,亦或是片段之间简单的互动。而下面使用的示例,就是如果网络连接丢失,该如何通知一个活动:
[js] view plaincopy在CODE上查看代码片派生到我的代码片
public class NetworkStateReceiver extends BroadcastReceiver {
// post event if there is no Internet connection public void onReceive(Context context, Intent intent) { super.onReceive(context, intent); if(intent.getExtras()!=null) { NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO); if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) { // there is Internet connection } else if(intent .getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) { // no Internet connection, send network state changed EventBus.getDefault().post(new NetworkStateChanged(false)); } }
// event public class NetworkStateChanged {
private mIsInternetConnected;
public NetworkStateChanged(boolean isInternetConnected) { this.mIsInternetConnected = isInternetConnected; }
public boolean isInternetConnected() { return this.mIsInternetConnected; } }
public class HomeActivity extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
EventBus.getDefault().register(this); // register EventBus }
@Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); // unregister EventBus }
// method that will be called when someone posts an event NetworkStateChanged public void onEventMainThread(NetworkStateChanged event) { if (!event.isInternetConnected()) { Toast.makeText(this, "No Internet connection!", Toast.LENGTH_SHORT).show(); } }
}
使用的第三方SDK
1.信鸽推送(腾讯)
http://xg.qq.com/ http://developer.xg.qq.com/index.php/Main_Page
腾讯信鸽(XG Push)是一款专业的免费移动App推送平台,支持百亿级的通知/消息推送,秒级触达移动用户,现已全面支持Android和iOS两大主流平台。
开发者可以方便地通过嵌入SDK,通过API调用或者Web端可视化操作,实现对特定用户推送,大幅提升用户活跃度,有效唤醒沉睡用户,并实时查看推送效果。
2.小米推送(MiPush)
http://dev.xiaomi.com/doc/?page_id=1670
小米推送(MiPush)是小米公司为开发者提供的消息推送服务,通过在云端和客户端之间建立一条稳定、可靠的长连接,为开发者提供向客户端应用推送实时消息的服务,帮助开发者有效地拉动用户活跃。
3.友盟统计分析SDK
http://dev.umeng.com/analytics/android-doc/integration
友盟统计分析平台是国内最大的移动应用统计分析平台。我们帮助移动应用开发商统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。
4.友盟用户反馈SDK
http://dev.umeng.com/feedback/android/integration
友盟用户反馈SDK两行代码实现开发者和用户轻松高效沟通。收集用户建议,了解用户需求,解决用户问题,全在应用之内。
5.新浪微博SDK
https://github.com/sinaweibosdk/weibo_android_sdk
微博 Android 平台 SDK 为第三方应用提供了简单易用的微博API调用服务,使第三方客户端无需了解复杂的验证机制即可进行授权登陆,并提供微博分享功能,可直接通过微博官方客户端分享微博。