欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Kotlin在Android工程中的应用详解

程序员文章站 2023-11-29 10:58:22
kotlin在android工程中的应用 简介 kotlin是由jetbrains设计的开放源码的编程语言,它正在java开发者中变得越来越流行。kotlin通常被...

kotlin在android工程中的应用

简介

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:

Kotlin在Android工程中的应用详解

在打开的页面中,点击底部的install jetbrains plugin...:

Kotlin在Android工程中的应用详解

在插件列表中选择或者搜索kotlin extensions for android并点击右边窗口的install plugin按钮:

Kotlin在Android工程中的应用详解

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

Kotlin在Android工程中的应用详解

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

2. 创建kotlin activity

在android studio中,右键单击工程包名在弹出的菜单中选择new>kotlin file:

Kotlin在Android工程中的应用详解

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

Kotlin在Android工程中的应用详解

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

Kotlin在Android工程中的应用详解

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

Kotlin在Android工程中的应用详解

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

Kotlin在Android工程中的应用详解

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

3. 使用kotlin

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

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

Kotlin在Android工程中的应用详解

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

package com.hathy.kotlinsample

import android.app.activity
import android.os.bundle

public 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.kotlinsample

import android.app.activity
import android.os.bundle

public 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在Android工程中的应用详解

转换后的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指南。章节将会帮助你尽快熟悉这门新语言。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。