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:
在打开的页面中,点击底部的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.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类如下所示:
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指南。开始章节将会帮助你尽快熟悉这门新语言。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Kotlin
# Android
# Android Kotlin的使用及简单实例
# Kotlin开发Android应用实例详解
# 使用Kotlin开发Android应用教程
# 五分钟教你Android-Kotlin项目编写
# AndroidStudio kotlin配置详细介绍
# Android开发必备知识 为什么说Kotlin值得一试
# 如何使用Kotlin进行Android开发
# Android中使用Kotlin实现一个简单的登录界面
# 利用Kotlin开发你的第一个Android应用
# Android动画入门教程之kotlin
# 你可以
# 所示
# 创建一个
# 就像
# 让我们
# 将会
# 编程语言
# 要在
# 重写
# 命名为
# 在弹出
# 给它
# 使用这个
# 单击
# 就可以
# 在这个
# 你要
# 是由
# 列表中
# 对话框中
相关文章:
如何快速生成凡客建站的专业级图册?
相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?
如何挑选最适合建站的高性能VPS主机?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
高端建站三要素:定制模板、企业官网与响应式设计优化
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
香港服务器选型指南:免备案配置与高效建站方案解析
山东网站制作公司有哪些,山东大源集团官网?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何高效完成独享虚拟主机建站?
ppt制作免费网站有哪些,ppt模板免费下载网站?
建站主机选哪种环境更利于SEO优化?
网站制作难吗安全吗,做一个网站需要多久时间?
高端企业智能建站程序:SEO优化与响应式模板定制开发
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
深圳网站制作的公司有哪些,dido官方网站?
制作营销网站公司,淘特是干什么用的?
怀化网站制作公司,怀化新生儿上户网上办理流程?
制作网站的模板软件,网站怎么建设?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
如何通过老薛主机一键快速建站?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
html制作网站的步骤有哪些,iapp如何添加网页?
网站微信制作软件,如何制作微信链接?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何通过虚拟主机空间快速建站?
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
,怎么在广州志愿者网站注册?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何在Golang中指定模块版本_使用go.mod控制版本号
如何选择PHP开源工具快速搭建网站?
详解jQuery停止动画——stop()方法的使用
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
建站主机空间推荐 高性价比配置与快速部署方案解析
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何通过智能用户系统一键生成高效建站方案?
建站之星如何实现网站加密操作?
金*站制作公司有哪些,金华教育集团官网?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
如何在阿里云ECS服务器部署织梦CMS网站?
如何选择适配移动端的WAP自助建站平台?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
建站主机如何选?性能与价格怎样平衡?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
焦点电影公司作品,电影焦点结局是什么?
*请认真填写需求信息,我们会在24小时内与您取得联系。