文档章节

为什么 Android 开发者都应该尝试一下 Anko?

极光开发者服务
 极光开发者服务
发布于 06/10 17:41
字数 641
阅读 42
收藏 1

简评: 这里介绍的仅仅是 Anko 中很小的一部分,Kotlin + Anko 真的让 Android 开发简化了不少,用了 Anko 基本就可以告别那些什么 Android 不得不知的代码收集贴了。

Anko 是 JetBrains 针对 Kotlin 推出的 Android 开发库,其目的是通过 Kotlin 让 Android 开发更加简单。

Anko 主要有四个模块:

  • Commons
  • Layouts
  • SQLite
  • Coroutines

在这篇文章中,我们先主要介绍其 Commons 模块中的一些内容:

首先,View.setOnClickListener 方法可以说是广大 Android 开发者写得最多的方法之一了,如果你是用 Kotlin,那么代码看起来应该是类似这样的:

button.setOnClickListener(object : View.OnClickListener{
 override fun onClick(v: View) {
 }
})

通过使用 Anko 可以把代码缩减为:

button.onClick { }

Intent

当我们希望跳转到新的 Activity 时,代码类似这样:

val intent = Intent(this, MainActivity::class.java)
intent.putExtra("id", 5)
intent.putExtra("name", "John")
startActivity(intent)

而通过 Anko:

startActivity<mainactivity>("id" to 5, "name" to "John")

Anko 还封装了一些常用的功能,让我们无需定义 Intent:

browse("https://makery.co")
share("share", "subject")
email("hello@makery.co", "Great app idea", "potato")

尺寸的单位问题

通过 Anko,Android 中的尺寸单位换算也变得无比简单:

val dpAsPx = dip(10f)
sp(15f)

API level 的问题

碎片化是 Android 开发者必须要面对的问题,我们不希望不管那些还在用旧版本的用户,但也希望能使用新 Android 版本中酷炫的功能。最常见的做法是像这样:

if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP){ }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ }

现在让我们看看 Anko 是怎么做的:

doIfSdk(Build.VERSION_CODES.LOLLIPOP){ }
doFromSdk(Build.VERSION_CODES.LOLLIPOP){ }

真是简单又易懂。

处理线程

处理多线程一直都不太容易,但在 Android 开发中我们经常需要面对。在 Anko 中的做法会相当的简洁:

doAsync {
 //IO task or other computation with high cpu load
 uiThread {
   toast("async computation finished")
 }
}

集成 Anko

如果你也心动了,想尝试一下,可以通过下面的方式来集成 Anko:

ankoVersion = "0.10.1"
dependencies {
 compile "org.jetbrains.anko:anko-appcompat-v7-listeners:$ankoVersion"
 compile "org.jetbrains.anko:anko-design-listeners:$ankoVersion"
 compile "org.jetbrains.anko:anko-design:$ankoVersion"
 compile "org.jetbrains.anko:anko-sdk15-listeners:$ankoVersion"
 compile "org.jetbrains.anko:anko-sdk15:$ankoVersion"
}

不夸张的说,Anko 可以算是我学习 Kotlin Android 开发的一个重要原因了。


原文链接: Why every Android developer should use Anko - Kotlin Development 推荐阅读: 跨浏览器问题的五种解决方案

© 著作权归作者所有

极光开发者服务
粉丝 43
博文 240
码字总数 257306
作品 1
深圳
个人站长
私信 提问
使用 Kotlin 开发 Android 应用 | 8 个最优秀的 Android Studio 插件 Kotlin Android 素材

butterknife http://jakewharton.github.io/butterknife/ Annotate fields with @BindView and a view ID for Butter Knife to find and automatically cast the corresponding view in your......

程序员诗人
2017/07/21
0
0
【Kotlin For Android】(三): Anko 库

一、简介 Github地址 是一个使 Android应用程序 开发更快,更容易的库。它使你的代码变得简洁易读,并让您忘记 的粗糙边缘。 Anko 由几部分组成: :一个轻量级的库,里面充满了,对话框,日...

Agnes2017
2018/04/27
87
0
Kotlin入门(26)数据库ManagedSQLiteOpenHelper

共享参数毕竟只能存储简单的键值对数据,如果需要存取更复杂的关系型数据,就要用到数据库SQLite了。尽管SQLite只是手机上的轻量级数据库,但它麻雀虽小、五脏俱全,与Oracle一样存在数据库的...

aqi00
2018/10/19
0
0
Android 开发者应该知道的 Kotlin

Android开发者在语言限制方面面临着一个困境。众所周知,目前的Android开发只支持Java 6(语言本身从Java 7开始进行了一些改进),因此我们每天只能使用一种古老的语言来进行开发,这极大地降...

oschina
2016/01/09
6.9K
24
开发者 请优先开发 Android 应用而非 iOS

在移动设备百花齐放的今天用户有多个系统平台可供选择,除了iOS和Android还有Windows和黑莓等等。可能对于一些规模比较大的公司他 们拥有更多的资源针对不同平台开发应用是一件很自然的事情,...

oschina
2015/06/14
7.8K
39

没有更多内容

加载失败,请刷新页面

加载更多

500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部