Android Kotlin 初体验

来源:互联网 发布:食品安全数据库 编辑:程序博客网 时间:2024/06/06 15:01

Android Kotlin 初体验

本文原创,转载请注明出处。
欢迎关注我的 简书 ,关注我的专题 Android Class 我会长期坚持为大家收录简书上高质量的 Android 相关博文。

写在前面:
好久不见,最近有一些朋友私信我,说你去哪里了,怎么不见你写东西,是不是沉溺学习,无法自拔。说来惭愧,在我消失的漫长得三个月以来,知识水平到没怎么提升,体重倒是飞速增长。和毕业之初基本上胖若两人 〒△〒 。还迷上了守望先锋和一款篮球游戏,别说自从当上了程序猿,从程序的角度思考游戏,技术突飞猛进,上分刷刷的 (ง •̀_•́)ง┻━┻。好了,关于生活方面的以后单开文章和大家聊,下面进入正题,kotlin。

Kotlin 简介

其实在我初学 Android 的时候,就听群里的朋友说过这个语言,我们可以把它暂时类比成 iOS 上的 swift。还是去打开官网看看原汁原味的介绍吧:

kotlin 官网(速度较慢时,科学上网)

Statically typed programming language for modern multiplatform applications

现代多平台上的静态编程语言

我们都知道在 2017.5.17 的 I/O 大会上,Google 宣布将 kotlin 正式添加成为 Android 官方支持的语言。这是首先就要强调,如果没有这一事件,我肯定不会写这篇文章。毕竟在语言的发展中,被钦定和野生的明显不是一个待遇。如果不是 iOS,会有人用 OC 吗?我们继续来看 kotlin 官网上关于 Android 相关的消息。

android-announces-support-for-kotlin

在这篇文章中,可以初步的去了解 kotlin 的语法,感受它的清晰简洁。然而在这篇文章中,我认为最重要的一句话是这句:

Kotlin is also a great match for the existing Android ecosystem. It is 100% compatible with the Java programming language.

也就是说 kotlin 与 java 百分百是互通兼容的,可以完美地融入目前 Android 的生态系统。可以想象,如果 kotlin 做不到这点,即便它语法再简洁、高效,和人类语言一样自然易懂,但是想迫使 java 这样的巨人转身,还是太难了。所以如果我们想用 kotlin 替换 java,基本上风险很小,现有数量庞大的 java 库我们也可以直接用 kotlin 无缝对接,想想就开心吧。

创建一个 kotlin Application

Android Studio 对 kotlin 在 version 3.0 上开始,所以我们去下载一个。

Android Studio 3.0

下载完成并且安装之后,新建一个 Project。我们看到界面上有个 kotlin 支持的选项。

kotlin support

一路点击确定之后,项目就新建完成了,这里想说下,似乎 Android Studio 3.0 需要 gradle 版本在 3.5.0+

项目创建成功之后:

这里写图片描述

除了之前的 .java 文件变成了 .kt 文件,其他的都没什么变化。这就是一个 kotlin 编写的 Empty Activity。

如果我已有一个一些 java 代码,我想把它转换成 kotlin 的怎么办? 刚才我们说了 It is 100% compatible with the Java,所以显然有现成的方案:

java 类 转换成 kotlin 类

duang~

kotlin 类

怎么样,强大不强大~

点击一个按钮,看看怎么写:

class MainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        val floatingActionButton = findViewById(R.id.fab) as FloatingActionButton        floatingActionButton.setOnClickListener {            Toast.makeText(this, "fab on click...", Toast.LENGTH_SHORT).show()        }    }}

还在用 findViewById? 不想这么写,也不用 ButterKnife 怎么办?继续看:

首先在 build.gradle 文件中,加上这样的一行:

apply plugin: 'kotlin-android-extensions'

在 MainActivity 中导入所在布局中的所有元素,看到这里你肯定知道,activity_main是可以替换的。

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

然后在 xml 中定义一个 TextView,id 是 tv_kotlin。
然后这样:

 tv_kotlin.setText("Hello World!")

运行后发现 Hello World! 就跑在屏幕上了~

在每个 kotlin Activity 中,还有一个隐藏的缓存功能(hidden caching),使方法变得更小,这样不会增加 APK 包的大小。

本文并不打算去过多介绍 kotlin 的语法,毕竟有官方文档呢,相信想学的肯定会去看,我自己也在研究中,未来会克服惰性和拖延症,争取多敲一些代码,多写一些文章。

Kotlin 相关资料

整理了一些 kotlin 的资料~

  • 官方网站
    https://www.kotlincn.net/ (中文版)
    https://kotlinlang.org/ (英文版)

(最开始不知道原来还有中文官网,吭哧吭哧翻译英文的。。。想打人)

  • kotlin doc
    https://www.gitbook.com/book/huanglizhuo/kotlin-in-chinese/details
  • kotlin github 地址
    https://github.com/JetBrains/kotlin
  • kotlin anko
    https://github.com/Kotlin/anko
    anko 是 kotlin 写的 Android 快速开发框架,作为 Android 开发者这个基本上是必看的,强烈推荐。
  • 在线写 kotlin
    https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt
  • github 上的资料库
    https://www.kotlincn.net/docs/resources.html
    资料库有些官方推荐的 Android app 值得一看。

写在后面:
最近我也在看 kotlin doc 上面的语法,我个人觉得确实具有现代语言的优秀特性,将来 kotlin 是否能取代 java,个人觉得只是时间问题。所以大家拭目以待吧~

原创粉丝点击