Kotlin Android Extensions工具使用
2017-05-18 15:48
148 查看
本教程介绍如何使用Kotlin Android Extensions来改进对Android开发的支持。
在本教程中,我们将介绍使用Kotlin Android Extensions插件所需的步骤,增强Android的开发体验。
每个Android开发人员都知道这个
Kotlin Android Extensions插件允许我们获得与这些库中的一些相同的体验,而无需添加任何额外的代码或运送任何额外的运行时。
实质上,这将允许以下代码:
在本教程中,我们将使用Gradle,但可以使用IntelliJ IDEA项目结构或Maven完成相同的操作。有关设置Gradle与Kotlin一起工作的详细信息,请参阅使用Gradle。
Android扩展程序是Kotlin IDEA插件的一部分。您不需要安装其他插件。
您需要的是在项目本地
一次性导入特定布局的所有窗口小部件属性是方便的:
因此,如果布局文件名是
如果我们要调用合成属性
一旦我们这样做,我们可以调用相应的扩展,这是在XML文件中的视图之后命名的属性。例如,对于这个视图:
将会有属性命名
Android Extensions插件支持Android风格。假设你
因此,您可以
Kotlin Android Extensions是Kotlin编译器的插件,它有两件事情:
在每个Kotlin内添加一个隐藏的缓存功能和一个字段
用函数调用替换每个合成属性调用。
这是如何工作的,当调用合成属性时,接收方是模块源中的Kotlin Activity / Fragment类,缓存函数被调用。例如给定
MyActivity内部生成隐藏的缓存功能,因此我们可以使用缓存机制。
但在以下情况下:
我们不知道这个函数是否仅在我们的来源的活动或普通Java活动中被调用。因此,即使上一个示例中的MyActivity实例是接收器,我们也不使用缓存。
在本教程中,我们将介绍使用Kotlin Android Extensions插件所需的步骤,增强Android的开发体验。
背景
每个Android开发人员都知道这个findViewById()功能。毫无疑问,这是一个难以阅读和支持的潜在错误和恶劣代码的来源。虽然有几个可用的库可以为此问题提供解决方案,但是依赖于运行时的库,它们需要为每个库注释字段
View。
Kotlin Android Extensions插件允许我们获得与这些库中的一些相同的体验,而无需添加任何额外的代码或运送任何额外的运行时。
实质上,这将允许以下代码:
// Using R.layout.activity_main from the main source set import kotlinx.android.synthetic.main.activity_main.* class MyActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) textView.setText("Hello, world!") // Instead of findView(R.id.textView) as TextView } }
textView是一个扩展属性
Activity,它的声明类型相同
activity_main.xml。
使用Kotlin Android扩展
配置依赖关系
在本教程中,我们将使用Gradle,但可以使用IntelliJ IDEA项目结构或Maven完成相同的操作。有关设置Gradle与Kotlin一起工作的详细信息,请参阅使用Gradle。Android扩展程序是Kotlin IDEA插件的一部分。您不需要安装其他插件。
您需要的是在项目本地
build.gradle文件中启用Android Extensions Gradle插件:
apply plugin: 'kotlin-android-extensions'
导入合成属性
一次性导入特定布局的所有窗口小部件属性是方便的:import kotlinx.android.synthetic.main.<layout>.*
因此,如果布局文件名是
activity_main.xml,我们将导入
kotlinx.android.synthetic.main.activity_main.*。
如果我们要调用合成属性
View(在适配器类中有用),我们也应该导入
kotlinx.android.synthetic.main.activity_main.view.*。
一旦我们这样做,我们可以调用相应的扩展,这是在XML文件中的视图之后命名的属性。例如,对于这个视图:
<TextView android:id="@+id/hello" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World, MyActivity" />
将会有属性命名
hello:
activity.hello.setText("Hi!")
Android Flavors
Android Extensions插件支持Android风格。假设你free的
build.gradle文件中有一个风味:
android { productFlavors { free { versionName "1.0-free" } } }
因此,您可以
free/res/layout/activity_free.xml通过添加此导入来导入布局的所有合成属性:
import kotlinx.android.synthetic.free.activity_free.*
在引擎盖下
Kotlin Android Extensions是Kotlin编译器的插件,它有两件事情:在每个Kotlin内添加一个隐藏的缓存功能和一个字段
Activity。方法很小,所以它不会增加APK的大小。
用函数调用替换每个合成属性调用。
这是如何工作的,当调用合成属性时,接收方是模块源中的Kotlin Activity / Fragment类,缓存函数被调用。例如给定
class MyActivity: Activity() fun MyActivity.a() { this.textView.setText(“”) }
MyActivity内部生成隐藏的缓存功能,因此我们可以使用缓存机制。
但在以下情况下:
fun Activity.b() { this.textView.setText(“”) }
我们不知道这个函数是否仅在我们的来源的活动或普通Java活动中被调用。因此,即使上一个示例中的MyActivity实例是接收器,我们也不使用缓存。
相关文章推荐
- 【自用】canvas.drawText()中y坐标的位置问题,Android(java)的一个坑。。附Kotlin。。
- 快速排序——Kotlin、Java实现
- Kotlin基础(一)android studio中配置Kotlin
- Kotlin语法(七)-属性和字段
- Kotlin开发AndroidStudio,IDEA配置/java转换Kotlin
- Android的Kotlin秘方(II):RecyclerView 和 DiffUtil
- Kotlin - package、import及as等关键字
- Kotlin——环境搭建
- Kotlin如何成为我们Android的主要语言
- Kotlin-解构声明
- Kotlin开发环境搭建及第一行KL代码
- Kotlin偏好设置
- Kotlin控制流
- Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07)
- Kotlin中功能操作与集合(KAD 11)
- Kotlin语法(二十)-变形声明(Destructuring Declarations)
- Kotlin Primer·第三章·Kotlin 与 Java 混编
- Kotlin Primer·第四章·Kotlin 的类特性(下)
- Kotlin的属性委托:无上下文情况下Android的赋值(KAD 15)
- 使用Kotlin开发Android应用(II):创建新工程