Android开发者必知的开源库


摘要:过去的时间里,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框架之一(除此之外,比较有名的开源解决方案还有GreenDAOORMLite ),可以极大的简化数据库的使用,使用面向对象的方式管理数据库,告别手写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.csdn.net/vipzjyno1/article/details/23206387

Android 开源框架Universal-Image-Loader完全解析

http://blog.csdn.net/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调用服务,使第三方客户端无需了解复杂的验证机制即可进行授权登陆,并提供微博分享功能,可直接通过微博官方客户端分享微博。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值