Kotlin在Android工程中的应用

@author ASCE1885的 Github 简书 微博 CSDN
原文链接

简介

Kotlin是由JetBrains设计的开放源码的编程语言,它正在Java开发者中变得越来越流行。Kotlin通常被吹捧为Java的继承者,相比较Java而言,Kotlin提供更为丰富的开发经验,因为它更现代,更具表现力和更简介。

如果你在寻求Android开发的可替代编程语言,那么应该试一下Kotlin。使用Kotlin,你可以很容易的在Android工程中替代Java或者与Java混合使用。

本文接下来将介绍在Android Studio工程中如何使用Kotlin和Kotlin插件。

前置条件

继续本文之前,你首先需要完成如下两件事情:

  • 将你的Andoid Studio更新到最新版本
  • 理解Kotlin的基本语法

如果你不熟悉Kotlin编程语言的话,建议先阅读Kotlin指南中的开始章节。

1. 安装Kotlin插件

在Android Studio的快速开始菜单中,选择Configure>Plugins:

在打开的页面中,点击底部的Install JetBrains plugin…:

在插件列表中选择或者搜索Kotlin Extensions For Android并点击右边窗口的Install Plugin按钮:

由于这个扩展插件依赖于Kotlin插件,因此会弹出一个对话框提示我们同时去下载它,点击Yes按钮开始插件的下载:

当下载安装完成之后,重启Android Studio就可以激活插件了。

2. 创建Kotlin Activity

在Android Studio中,右键单击工程包名在弹出的菜单中选择New>Kotlin File:

在弹出的对话框中,输入Activity的名字并在类型下拉列表中选择Class。我们把名字命名为MainActivity:

当类被创建出来后,你将会看到一个警告,提示你配置app模块来支持Kotlin:

单击警告提示条的链接,在弹出的对话框中点击OK按钮选择默认的Kotlin插件版本即可:

为了配置你的工程支持Kotlin,Kotlin插件修改了build.gradle文件。点击Sync Now按钮就可以应用这些改动了:

到这里,工程的配置完成了。让我们回到刚才创建的Kotlin类来开始Kotlin的编程吧。

3. 使用Kotlin

为了保持例子的简单,我们将展示如何创建一个Activity,它包含一个用于显示String字符串的TextView。

确保你的类继承自Activity,并重写其onCreate函数。当然,你要使用Kotlin的方式实现。如果你还不熟悉Kotlin,建议通过快捷键Control+O来激活Android Studio的代码生成功能,从而得到正确的函数签名:

生成之后,我们的类应该如下所示:

package com.hathy.kotlinsampleimport android.app.Activityimport android.os.Bundlepublic class MainActivity: Activity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)    }}

使用val关键字创建TextView的一个只读实例:

val myMessage = TextView(this)

调用TextView的setText函数设置要显示的字符串,接着调用setContentView将TextView设置给它:

myMessage.setText("Hello")setContentView(myMessage)

就像在Java Activity中,你也需要在AndroidManifest.xml文件中声明Kotlin Activity,以便让Android系统识别到它。假如这是你工程中唯一的Activity,那么manifest文件看起来如下所示:

<activity android:name=".MainActivity">    <intent-filter>        <action android:name="android.intent.action.MAIN"/>        <category android:name="android.intent.category.LAUNCHER"/>    </intent-filter></activity>

现在你可以在你的Android设备或者模拟器上运行这个app了。虽然Kotlin编译器比Java编译器稍微慢一点,但你可能察觉不到编译时间的显著变化。

4. 使用Kotlin的Android扩展插件

Kotlin的Android扩展插件使得开发者可以像对待Activity属性一样对待定义在Activity的XML布局文件中的组件。也就是说,如果使用这个插件,你将不再需要调用findViewById。这些属性因此被称为合成属性(synthetic properties)。

要在项目中使用这个特性,需要在app模块的build.gradle文件中加入org.jetbrains.kotlin:kotlin-android-extensions作为构建脚本依赖。不要忘了点击Sync Now按钮来同步这个改变到工程中:

buildscript {    dependencies {        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"    }}

现在让我们创建一个和前面步骤创建的类似的Activity,但是使用布局XML文件来定义TextView。创建一个布局XML文件并命名为another_activity.xml。在这个文件中,定义TextView,id为myMessage:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">    <TextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="Large Text" android:id="@+id/myMessage" /></LinearLayout>

新建另一个Kotlin类AnotherActivity,继承自Activity并重写onCreate函数,实现如下所示:

package com.hathy.kotlinsampleimport android.app.Activityimport android.os.Bundlepublic class AnotherActivity: Activity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)    }}

在onCreate函数中调用setContentView并把刚才创建的布局XML文件设置给它:

setContentView(R.layout.another_activity)

现在,你可以使用下面代码片段导入TextView,而不是使用findViewById的方式:

import kotlinx.android.synthetic.another_activity.myMessage

如果布局文件中存在其他的组件,你可以使用如下语句来一次性全部导入:

import kotlinx.android.synthetic.another_activity.*

现在你可以通过使用id来访问TextView,就像该TextView是Activity类的一个属性一样。例如,修改TextView显示的字符串:

myMessage.setText("Hello")

5. 将Java类转换为Kotlin

我们可以使用Kotlin插件将现存的Java类转换成Kotlin类。为了尝试这个特性,首先创建如下所示的Java类,它是一个打印两个整数之和的简单的Activity:

public class YetAnotherActivity extends Activity {    private int a,b;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        a=10;        b=20;        Log.d("MESSAGE", "The sum is "+(a+b));    }}

使用快捷键Control+Alt+Shift+J,或者选择菜单Code>Convert Java File to Kotlin File:

转换后的Kotlin类如下所示:

public class YetAnotherActivity : Activity() {    private var a: Int = 0    private var b: Int = 0    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        a = 10        b = 20        Log.d("MESSAGE", "The sum is " + (a + b))    }}

除了文件内容改变之外,文件的扩展名也从.java变为了.kt。

总结

本文我们通过在Android Studio中安装Kotlin插件和Kotlin Android扩展插件学到了如何在Android工程中使用Kotlin。由于Kotlin和Java在很大程度上可互操作,如果你还在学习Kotlin,那么最好是逐步在你的Android项目中应用它。

为了学习更多的Kotlin相关知识,我建议浏览Kotlin指南。开始章节将会帮助你尽快熟悉这门新语言。

文末美图鉴赏

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)AndroidManifest 清单文件以及权限详解
  6. Android的SurfaceView使用
  7. Android下的实现对本地指定和筛选文件的目录显示
  8. Android(安卓)根文件系统启动分析
  9. Android最火的框架系列(三)JiaoZiVideoPlayer

随机推荐

  1. 对“Android输入事件流程中的EventHub分
  2. TextView 借助Linkify,使用自定义模式设置
  3. android之PULL解析xml文档
  4. Project Ara 开发者大会后的进展
  5. android 2.3 ubuntu 下编译环境配置
  6. [推荐] 一个android个人开发者的总结[问
  7. [ 转]Android 监控网络状态
  8. 向Button上添加OnclickListener的另一种
  9. Android中ActivityManagerService与应用
  10. Android Media系统主框架