如何使用Kotlin进行Android开发

Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并没有像预期那样及时跟进。

Kotlin是由JetBrains创建的基于JVM的编程语言,IntelliJ正是JetBrains的杰作,而Android Studio是基于IntelliJ修改而来的。Kotlin是一门包含很多函数式编程思想的面向对象编程语言。  

Kotlin生来就是为了弥补Java缺失的现代语言的特性,并极大的简化了代码,使得开发者可以编写尽量少的样板代码。据说是Android下的swift语言,而且是有jetBrains出品,有这么强大的IDE支持,一定错不了。

AndroidStudio安装Kotlin开发插件:

点击“Install JetBrains plugin”

输入kotlin搜索,安装下面那个Kotlin Extension For Android插件,安装后重启AS。

创建KotlinActivity:

新建Android工程,这一步和以前创建安卓工程的步骤类似,这个时候工程里面也没有跟kotlin有半毛钱的关系。

只不过在工程创建完成后,再新建Activity的时候选择KotlinActivity:

不带分号结束的看起来就是舒服,习惯了Lua和Python。

自动创建的界面布局文件和之前的没什么区别,依然是xml格式的。同时manifest里也会自动添加该Activity的声明。

配置gradle:

如果IDE提示需要配置Kotlin的时候,就点击配置就好了,会自动在project和module的build.gradle里配置好。如果是手动配置的话,请在project的build.gradle里配置:

buildscript { ext.kotlin_version = '1.0.2' repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }

在module的build.gradle里配置:

apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.example.demo_yunbu" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets { main.java.srcDirs += 'src/main/kotlin' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:23.1.1' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } repositories { mavenCentral() }

最后IDE提示Sync Now,用用这些修改就好了。

最后我们在布局文件中添加一个TextView来演示控件的操作:

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tvMessage"/>

然后在Activity代码里就可以直接使用变量tvMessage了,如果有如下提示:

只需要按Alt+Enter导入布局文件的引用即可,自动导入:

import kotlinx.android.synthetic.main.activity_main.*

然后可以直接使用变量tvMessage进行操作了,非常方便,再也不用每个控件用findViewById查找一遍了。
以下是完整的代码:

package com.example.hellokotlin import android.content.Intent import android.support.v7.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) tvMessage.text = "hello kotlin!"; btnOpenActivity2.text = "OpenActivity2" btnOpenActivity2.setOnClickListener({ startActivity(Intent(MainActivity@this, SecondActivity::class.java)) }) } }

把之前的java代码转换为Kotlin:

前面新建android工程的时候因为MainActivity并不是KotlinActivity,因此需要转换一下,
选择菜单Code->Convert Java File to Kotlin File
除了文件内容改变之外,文件的扩展名也从.java变为了.kt。

编译,出现错误:
Error:(6, 8) Unresolved reference: kotlinx
Error:(13, 9) Unresolved reference: tvMessage
Error:Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details

提示缺少kotlin,需要手动配置一下,在module的build.gradle里添加:

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

修改完成后Sync Now一次,编译通过,运行效果:

点击按钮后打开一个空白的页面,这里就不截图了。

使用anko创建界面:

前面的界面全部继续使用了XML来创建的,这里演示下使用anko创建界面。首先配置gradle,在project的gradle里buildscript添加:

ext.anko_version = '0.8.2'

再在module的gradle里dependencies添加:

// Anko compile "org.jetbrains.anko:anko-common:$anko_version" compile 'org.jetbrains.anko:anko-sdk15:0.8.2' // sdk19, sdk21, sdk23 are also available compile 'org.jetbrains.anko:anko-support-v4:0.8.2' // In case you need support-v4 bindings compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.2' // For appcompat-v7 bindings

最后Sync Now,成功后编辑SecondActivity的代码:

package com.example.hellokotlin import android.support.v7.app.AppCompatActivity import android.os.Bundle import org.jetbrains.anko.* class SecondActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_second) verticalLayout { padding = dip(30) editText { hint = "Name" textSize = 24f } editText { hint = "Password" textSize = 24f } button("Login") { textSize = 26f onClick { toast(button@this.text) } } } } }

这里注释掉了原来由setContentView来设置的xml布局,而使用了代码直接创建,使用起来简单直接了,但是缺点也很明显,不能做到界面设计阶段的实时预览效果,很难做到所见即所得,好在xml还能继续支持。运行看下效果,点击主界面的按钮打开第二个页面:

点击Login按钮弹出一个土司,文本就是该按钮的文本。

参考:

《Kotlin for android developers》中文版翻译

Getting started with Android and Kotlin

Unresolved reference: kotlinx

Android开发必备知识:为什么说Kotlin值得一试

Kotlin在Android工程中的应用

anko

使用Kotlin开发Android应用

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

时间: 2024-07-28 13:59:41

如何使用Kotlin进行Android开发的相关文章

欢呼声热烈 谷歌宣布 Kotlin 成 Android 开发一级语言

谷歌I/O大会一开始就宣布了Android设备超过20亿部的好消息,会议推进至此,果然Android才是大会的压轴大戏么? 首先,今年夏末应该就可以收到Android O的推送,当然,国内用户就先别想了,除非你一直都用原生的.其次,有两个关键词需要注意,一是"Fluid Experience(流畅体验)",二是"Vitals(核心功能)". 地图.Netflix.浏览器中的视频等将支持安卓O画中画功能,随后还会有更多应用支持画中画,相当于另一种形态的多任务处理,这是

17位谷歌Android开发专家是如何看待Kotlin的?

注:此英文原文发布于 Kotlin 得到 Google 官方支持的前几天,供参考. Google 已经多次表达过他们不反对 Kotlin 的使用,只要 Kotlin 编译器依然生成有效的字节码,那么 Google 就不会阻止任何人使用它.但我想如果能够知道 Google 的 Android 开发专家是如何看待 Kotlin 的,那就更好了. 我联系了一些这样的 Android 专家,我得到了来自 17 位的答复.我只是要求他们告诉我们关于 Kotlin 的一点想法,答案显然是未经过修改的,所以你

Kotlin将超越Java成为Android开发的第一语言?

Realm 公司提供了一款备受移动开发者欢迎的实时数据库,在调查了大约十万名活跃的开发者后,Realm 发现在今年 5 月份谷歌 I/O 大会之前用 Java 编写的 Android 应用中有 20% 正在使用 Kotlin 进行重写. 根据调查数据,Realm 表示到 2018 年底,在 Android 开发领域,Kotlin 将超越 Java,成为开发 Android 应用的第一语言. 该公司于周二在官网上公布了其调查结果,它的惯例是每季度发布一次调查结果. 当然,这些数据不是特别适用于广泛

如何看待 Kotlin 成为 Android 官方支持开发语言?

在刚刚结束的谷歌 I/O 2017 开发者大会上,官方宣布将支持 Kotlin 作为 Android 开发的 First-Class 语言.一石激起千层浪,消息一出,立即引发了国内外相关从业者对此事件的广泛关注和热烈讨论.本文作者段建华,作为 Flipboard 中国区 Android 资深研发工程师,我们来不妨看看他对此事的看法. Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<

android 开发从入门到精通

Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be the first choice for you when you have a difficult time. Welcome Star and Fork, your support is my greatest affirmation. 学习 Android 至今,大大小小的坑没少踩过,庆幸的是,

用Kotlin优雅地开发Android应用

写在前面 在之前的一篇文章,我们简单的知道了Kotlin这门新语言的优势,也接触了一些常见的语法及其简单的使用,相信你会对它有浓厚的兴趣,暂且理解为对它感兴趣吧,哈哈哈.那么,我们该如何在Android中应用这门新的语言呢?今天的这篇文章带你学习使用Kotlin开发Android应用,并对比我们传统语言Java,让你真真切切的感受到他的美和优雅. 配置 项目gradle文件 apply plugin: 'com.android.application'    apply plugin:'kotl

Kotlin如何成为我们Android开发的主要语言

引言 Kotlin是一个基于JVM的新的编程语言,由JetBrains开发.JetBrains,作为目前广受欢迎的Java IDE IntelliJ的提供商,在Apache许可下已经开源其Kotlin编程语言.与Java相比,Kotlin的语法更简洁.更具表达性,而且提供了更多的特性,比如,高阶函数.操作符重载.字符串模板.它与Java高度可互操作,可以同时用在一个项目中. Kotlin的定位非常有特点,它并不像Scala那样另起炉灶,Scala是一切尽量自己来,将类库,尤其是集合类都自己来了一

如何看待 Kotlin 成为 Android 官方支持的开发语言?一线开发者这样说

Google IO 2017 宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和 Android 圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin>,着实狠狠地蹭了一波热度(尽管这样会被鄙视).眼下 Android 圈已经躁动了,甚至严重到如果对 Kotlin 视而不见就显得自己不像一个合格的 Android 程序员. 本文尝试从一个客观全面一点儿的角度来看待这件事情,尽力为大家提供一个比较理性的观点供参考.   为什么会选用Kotlin 关于

Android开发必备知识 为什么说Kotlin值得一试

1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1.1 Kotlin的身世 写了许久Java,有没有发现其实你写了太多冗余的代码? 后来你体验了一下Python,有没有觉得不写分号的感觉真是超级爽? 你虽然勤勤恳恳,可到头来却被NullPointerException折磨的死去活来,难道就没有受够这种日子么? 直到有一天你发现自己已经写了好几十万行