2015 年度 Android 开发者必备的 5 个开源库

简介: 本文讲的是2015 年度 Android 开发者必备的 5 个开源库,在2014年6月,我们发表了一篇关于5 个顶级 Android 开源库的文章,我们一直在用,并且相信每个 Android 开发者都应该了解这些开源库。
本文讲的是2015 年度 Android 开发者必备的 5 个开源库,

在2014年6月,我们发表了一篇关于5 个顶级 Android 开源库的文章,我们一直在用,并且相信每个 Android 开发者都应该了解这些开源库。从那之后,Android 方面已经发生了很多变化,所以我们写了这篇文章,我们最喜欢的5个开源库的更新版。

下面是更新列表:

Top 5 Android libraries

1. Retrofit

当涉及到实现 REST APIs 时,Retrofit 仍是我们的最爱。

他们的网站上写着: “Retrofit 将 REST API 转换为 Java 接口。”是的,还有其他解决方案,但是 Retrofit 已经被证明是在一个项目中管理 API 调用最优雅、最方便的解决方案。使用注解添加请求方法和相对地址使得代码干净简单。

通过注解,你可以轻松地添加请求体,操作 URL 或请求头并添加查询参数。

为方法添加返回类型会使该方法同步执行,然而添加Callback(回调)会使之异步执行,完成后回调 success 或 failure 方法。

public interface RetrofitInterface {

    // 异步带回调
    @GET("/api/user")
    User getUser(@Query("user_id") int userId, Callback<User> callback);

    // 同步
    @POST("/api/user/register")
    User registerUser(@Body User user);
}


// 例子
RetrofitInterface retrofitInterface = new RestAdapter.Builder()
            .setEndpoint(API.API_URL).build().create(RetrofitInterface.class);

// 获取 id 为 2048 的用户
retrofitInterface.getUser(2048, new Callback<User>() {
    @Override
    public void success(User user, Response response) {

    }

    @Override
    public void failure(RetrofitError retrofitError) {

    }
});

Retrofit 默认使用 Gson,所以不需要手动解析 JSON。当然其他的转换器也是支持的。

现在 Retrofit 2.0 正在活跃地开发着,仍然是 beta,但你可以从这里获取到。从 Retrofit 1.9 开始,很多的东西都被砍了,也有一些重大的变化比如使用新的调用接口取代回调。

2. DBFlow

如果你正准备在你的项目中存储任意复杂的数据,你应该使用 DBFlow。正如他们的 GitHub 上所说,这是“一个速度极快,功能强大,而且非常简单的 Android 数据库 ORM 库,为你编写数据库代码”。

一些简单的栗子:

// Query a List
new Select().from(SomeTable.class).queryList();
new Select().from(SomeTable.class).where(conditions).queryList();

// Query Single Model
new Select().from(SomeTable.class).querySingle();
new Select().from(SomeTable.class).where(conditions).querySingle();

// Query a Table List and Cursor List
new Select().from(SomeTable.class).where(conditions).queryTableList();
new Select().from(SomeTable.class).where(conditions).queryCursorList();

// SELECT methods
new Select().distinct().from(table).queryList();
new Select().all().from(table).queryList();
new Select().avg(SomeTable$Table.SALARY).from(SomeTable.class).queryList();
new Select().method(SomeTable$Table.SALARY, "MAX").from(SomeTable.class).queryList();

DBFlow 是一个不错的 ORM,这将消除大量用于处理数据库的样板代码。虽然 Android 也有其他的 ORM 方案,但对我们来说 DBFlow 已被证明是最好的解决方案。

3. Glide

Glide 是一个用于加载图片的库。当前备选方案有 Universal Image Loader 和 Picasso;但是,以我来看,Glide 是当前的最佳选择。

下面是一个简单的例子,关于如何使用 Glide 从 URL 加载图片到 ImageView。

ImageView imageView = (ImageView) findViewById(R.id.my_image_view);

Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);

4. Butterknife

一个用于将 Android 视图绑定到属性和方法的库(例如,绑定一个 view 的 OnClick 事件到一个方法)。较之前版本而言,基本功能没有变化,但可选项增加了。栗子:

class ExampleActivity extends Activity {
  @Bind(R.id.title) TextView title;
  @Bind(R.id.subtitle) TextView subtitle;
  @Bind(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
    // TODO Use fields...
  }
}

5. Dagger 2

自从我们迁移到 MVP 架构,我们就开始了广泛使用依赖注入。Dagger 2 是著名的依赖注入库 Dagger 的继承者,我们强烈推荐它。

一个主要的改进就是生成的注入代码不再依赖反射,这使得调试容易了许多。

Dagger 为您创建类的实例,并满足他们的依赖。这依赖于 javax.inject.Inject 注解,以确定哪些构造函数或字段应被视为依赖。以著名的咖啡机(CoffeeMaker)为例:

译者注:Dagger 和 Dagger 2 的官方文档里都是使用这个例子,所以著名…

class Thermosiphon implements Pump {
  private final Heater heater;

  @Inject
  Thermosiphon(Heater heater) {
    this.heater = heater;
  }

  ...
}

直接注入到字段的栗子:

class CoffeeMaker {
  @Inject Heater heater;
  @Inject Pump pump;

  ...
}

通过 modules 和 @Proivides 注解提供依赖(Dependencies):

@Module
class DripCoffeeModule {
  @Provides Heater provideHeater() {
    return new ElectricHeater();
  }

  @Provides Pump providePump(Thermosiphon pump) {
    return pump;
  }
}




原文发布时间为:2016年01月07日

本文来自云栖社区合作伙伴掘金,了解相关信息可以关注掘金网站。
目录
相关文章
|
20天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
4月前
|
安全 API Android开发
Android网络和数据交互: 解释Retrofit库的作用。
Android网络和数据交互: 解释Retrofit库的作用。
41 0
|
5月前
|
XML Android开发 数据安全/隐私保护
Android 自定义开源库 EasyView
Android 自定义开源库 EasyView
|
21天前
|
Unix Linux Shell
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境下交叉编译Android所需的FFmpeg so库,首先下载`android-ndk-r21e`,然后解压。接着,上传FFmpeg及相关库(如x264、freetype、lame)源码,修改相关sh文件,将`SYSTEM=windows-x86_64`改为`SYSTEM=linux-x86_64`并删除回车符。对x264的configure文件进行修改,然后编译x264。同样编译其他第三方库。设置环境变量`PKG_CONFIG_PATH`,最后在FFmpeg源码目录执行配置、编译和安装命令,生成的so文件复制到App工程指定目录。
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
|
4天前
|
Java Android开发 开发者
Android10 修改开发者选项中动画缩放默认值
Android10 修改开发者选项中动画缩放默认值
9 0
|
4天前
|
Android开发 开发者
Android打开开发者权限
Android打开开发者权限
13 0
|
5天前
|
Android开发 C++
Android S HAL库的编译
Android S HAL库的编译
9 0
|
6天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
4月前
|
JSON Java Android开发
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
Android网络和数据交互: 请解释Android中的JSON解析库,如Gson。
25 0
|
4月前
|
Android开发
Android源码学习(五):AVB2.0-libavb库介绍2
Android源码学习(五):AVB2.0-libavb库介绍2
119 0