Android扩展Kotlin

来源:互联网 发布:哪里可以购买淘宝账号 编辑:程序博客网 时间:2024/06/10 22:46
        本教程介绍如何使用Kotlin Android Extensions来改进对Android开发的支持。

        在本教程中,我们将介绍使用Kotlin Android Extensions插件所需的步骤,增强Android的开发体验。


一.背景
        每个Android开发人员都很清楚findViewById()函数。 毫无疑问,这种写法一方面难以阅读和支持,并且存在潜在错误和令人讨厌的引用错误。 虽然有几个可用的库可以为此问题提供解决方案,但是依赖于运行时库,它们需要为每个View注释字段。
        Kotlin Android Extensions插件允许我们获得与这些库中的一些相同的体验,而无需添加任何额外的代码或运送任何额外的运行时。

        实质上,它允许以下代码:


        其中,textView是Activity的扩展属性,它与在activity_main.xml中声明的类型相同。


二.使用Kotlin Android扩展


2.1配置依赖关系
        在本教程中,我们将使用Gradle,但可以使用IntelliJ IDEA项目结构或Maven完成相同的操作。Android扩展程序是Kotlin IDEA插件的一部分。不需要安装其他插件。
需要的是在项目本地启用Android Extensions Gradle插件。


build.gradle file:

    apply plugin: 'kotlin-android-extensions'


2.2导入合成属性
        一次性导入特定布局的所有窗口小部件属性都很方便:
        import kotlinx.android.synthetic.main.<layout>.*  


        因此,如果布局文件名是activity_main.xml,我们将导入:

        kotlinx.android.synthetic.main.activity_main*


        如果要在View上调用合成属性(在适配器类中有用),我们还应该导入                          kotlinx.android.synthetic.main.activity_main.view.*


        一旦我们这样做,我们可以调用相应的扩展名,这些扩展名是XML文件中的视图后面命名的属性。 例如,对于这个视图:



        将有一个名为hello的属性:

        activity.hello.setText("Hi!");


三.Android风格

        Android Extensions插件支持Android风格。 假设你的build.gradle文件中有一个名为free的配置:



        因此,可以通过添加此导入来导入free / res / layout / activity_free.xml布局的所有合成属性:

        import kotlinx.android.synthetic.free.activity_free.*


四.在引擎盖下
        Kotlin Android Extensions是Kotlin编译器的插件,它有两件事情要做:
        在每个Kotlin活动中添加一个隐藏的缓存功能和一个字段。 该方法很小,所以它不会增加APK的大小。
        用函数调用替换每个合成属性调用。
        这是如何工作的呢?当调用合成属性时,接收方是模块源中的Kotlin Activity / Fragment类,缓存函数被调用。 例如,给定



        在MyActivity内部生成一个隐藏的缓存功能,所以我们可以使用缓存机制。但在以下情况下例外:



        我们不知道这个函数是否仅在我们的来源的活动或普通Java活动中被调用。 因此,即使上一个示例中的MyActivity实例是接收器,我们也不使用缓存。





原创粉丝点击