经验法则:函数表达式加上 in-line 函数和同样实现的 Java 代码一模一样。现在我们就能清理我们想清理的任何 API 了,找到你安卓里面最差的 API,这样的 API 肯定到处都是。这其中有很多是基于 transaction 的,所以我们可以为 fragments 或者为 shared preferences 使用同样的模式。这是一个增加功能的好方法,而且不会对自动产生的代码带来额外开销。
JetBrains 提供的 Anko
JetBrains 的同事把这个思路用到了极致,并且创建了一个库叫做 Anko。基本想法是 XML 描述性非常好,而且很适合定义 UI,因为它是分级的。当你创建 UI 的时候,它们也是具备分层特性的。
在这些函数表达式的帮助下,我们可以用同样分层式方式来编写代码。当然我们还能够引用其他所有的方法,其他的重构工具,和其他的 Java 代码的静态分析工具来展示 UI。
[代码]csharp代码:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
verticalLayout {
padding = dip(30)
editText {
hint = "Name"
textSize = 24f
}
editText {
hint = "Password"
textSize = 24f
}
button("Login") {
textSize = 26f
}
}
这仅仅是扩展函数表达式的一个发展分支。它们会创建这些类的实例,把它们加到它们的父亲那里,设置合适的属性。除了我们在 XML 里面使用的概念以外,比如 layout,你可以调用一个函数来返回这些 layout 和把这些东西组织在一起。
这一定是个有趣的概念。但不一定适合每一个人。它们也有定制的预览插件。使用 XML 的一个好处就是你可以预渲染视图,然后看到它在设备上的样子。他们也写了一个为 Java 代码的工具,这个工具可以解析 Kotlin 代码并且完成渲染。
这也是个 XML 也会令人烦恼的例子。Java 和 XML 这两个分离的系统,会带来一些一般的麻烦。而这个方法会把这两个分离的系统统一到一个 Koltin 的源文件里面。这会导致性能的提升,因为你减少了 XML 解析的开销,也会减少寻找 XML 中定义的类而发生的反射的开销。
所以虽然不是每个人都喜欢这个解决方法,但是这确是个解决他们碰到问题的新的方案。
结论
我想给你们介绍现在解决安卓系统中的问题过程中的最有用的一些概念。Koltin 语言还有许多其他的一般性的改进,但那都是为了 Java 语言的。
这就是今天我想讨论的让你意识到的一些安卓系统开发的问题和可能解决它们的具体途径。Kotlin 网站 有着非常多的好的资源。那有一个交互性编辑器,使用它你可以在你的浏览器里面创建和运行 Kotlin 代码。
在同样的编辑器里面,它们也有一系列的交互性教程来帮助你一步步学习语法。
对于那些因为这个原因而持观望态度的人,希望你们快加入了。我鼓励你们都试试 Kotlin 语言。