Skip to content
This repository has been archived by the owner on Apr 13, 2023. It is now read-only.

Latest commit

 

History

History
117 lines (92 loc) · 4.27 KB

Anko 0.6 is Released.md

File metadata and controls

117 lines (92 loc) · 4.27 KB
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 视图和属性

我们已经做出了初步的步骤,以支持appcompat.v7 Android 库。扩展功能为支持包中的View类和其属性的扩展属性添加到 Anko。 小部件着色 不支持,我们希望能在以后的版本中实现。

移除简单视图的顶级 DSL 功能

由于不太可能有简单的非容器视图(如 TextView)作为活动的内容视图,因此我们删除了ActivityFragment的这些视图的 DSL 功能,代码>接收器。在不太可能的情况下需要顶级的这种观点,使用UI()包装函数:

{% raw %}

{% endraw %}
UI {
    textView(R.string.name)
}

{% raw %}

{% endraw %}

您的反馈是欢迎

安科是根据 Apache 许可证 2.0 授权的,该项目是 在 Github 上可用
欢迎您的反馈和拉动请求!