title | date | author | tags | keywords | categories | reward | reward_title | reward_wechat | reward_alipay | source_url | translator | translator_url |
---|---|---|---|---|---|---|---|---|---|---|---|---|
[译]Anko 0.6 is Released |
2015-04-30 05:31:00 -0700 |
Andrey Breslav |
官方动态 |
false |
Have a nice Kotlin! |
今天我们很高兴地介绍新版本 安科 - 促进 Android 应用程序开发的库。我们很高兴收到了很多反馈,以及一些变化 0.6 实际上是由社区提出的
那我们很抱歉由于历史原因,Anko 软件包的名称曾经是kotlinx.android.anko
,我们将它改为 0.6 中的org.jetbrains.anko
,以与 Maven 工件一致名称。
Anko 0.5 引入了部分定义的减少代码冗长度的监听器:当我们只需要定义一个多方法监听器的一个方法时,我们就不用实现我们不在乎的方法。根据您的反馈(谢谢, SalomonBrys !)此功能已重新设计为 0.6:
- 局部定义的听众现在可以在 DSL 布局外面使用;
- 语法更易于理解;
- “引擎盖”下的逻辑更简单。
这就是现在的样子:
{% raw %}
{% endraw %}editText {
textChangedListener {
onTextChanged { text, start, before, count ->
toast("New text: $text")
}
}
}
{% raw %}
{% endraw %}配置限定符 限定词 用于支持不同设备,区域设置等的不同布局。
Anko 的 DSL 现在支持configuration()
函数,该函数指定布局的限定符:
{% raw %}
{% endraw %}configuration(screenSize = ScreenSize.LARGE, orientation = Orientation.LANDSCAPE) {
/*
This code will be only executed
if the screen is large and its orientation is landscape
*/
}
{% raw %}
{% endraw %}此代码相当于将您的 XML 布局放在layout-large-land
目录下。在技术上,它通过检查指定的限定符并且仅在configuration()
中执行代码(如果它们的值匹配)来实现。因此,configuration()
的用法不仅限于 DSL:例如,您可以安全地使用配置调用在旧版本的系统中不存在的 Android SDK 功能(fromSdk = 版本>){/ * code * /}
。
支持的限定符的完整列表可用 这里 。
将您自己的自定义视图合并到 DSL 中的最简单的方法是创建自己的视图 构建器类功能 ,但由于它是耗时的,Anko 现在支持更快的方式:
{% raw %}
{% endraw %}frameLayout {
customView<CustomView> {
backgroundResource = R.drawable.custom_view_bg
}.linearLayout(width = matchParent)
}
{% raw %}
{% endraw %}它通过 Java Reflection 实现。虽然它比普通的 DSL 功能更慢,但是当您进行原型制作时,会更容易。
我们已经做出了初步的步骤,以支持appcompat.v7
Android 库。扩展功能为支持包中的View
类和其属性的扩展属性添加到 Anko。 小部件着色 不支持,我们希望能在以后的版本中实现。
由于不太可能有简单的非容器视图(如 TextView)作为活动的内容视图,因此我们删除了Activity
和Fragment
的这些视图的 DSL 功能,代码>接收器。在不太可能的情况下需要顶级的这种观点,使用UI()
包装函数:
{% raw %}
{% endraw %}UI {
textView(R.string.name)
}
{% raw %}
{% endraw %}安科是根据 Apache 许可证 2.0 授权的,该项目是 在 Github 上可用 。
欢迎您的反馈和拉动请求!