从Android项目学习Kotlin(一)

一、优点

Kotlin 非常适合开发 Android 应用程序,将现代语言的所有优势带入 Android 平台而不会引入
任何新的限制:

1.兼容性:Kotlin 与 JDK 6 完全兼容,保障了 Kotlin 应用程序可以在较旧的 Android 设备

上运行而无任何问题。Kotlin 工具在 Android Studio 中会完全支持,并且兼容 Android 构
建系统。

2.性能:由于非常相似的字节码结构,Kotlin 应用程序的运行速度与 Java 类似。 随着

Kotlin 对内联函数的支持,使用 lambda 表达式的代码通常比用 Java 写的代码运行得更
快。

3.互操作性:Kotlin 可与 Java 进行 100% 的互操作,允许在 Kotlin 应用程序中使用所有现

有的 Android 库 。这包括注解处理,所以数据绑定和 Dagger 也是一样。

4.占用:Kotlin 具有非常紧凑的运行时库,可以通过使用 ProGuard 进一步减少。 在实际

应用程序中,Kotlin 运行时只增加几百个方法以及 .apk 文件不到 100K 大小。

5.编译时长:Kotlin 支持高效的增量编译,所以对于清理构建会有额外的开销,增量构建通

常与 Java 一样快或者更快。

二、Android 推荐使用的工具

1. Kotlin Android 扩展是一个编译器扩展, 可以让你摆脱代码中的 findViewById() 调用,

并将其替换为合成的编译器生成的属性。

2.Anko 是一个提供围绕 Android API 的 Kotlin 友好的包装器的库,以及一个可以用 Kotlin
3.Kotlin 用于 Android 代码替换布局 .xml 文件的 DSL。
4.KAndroid - Kotlin library for Android
5.Bubble - 屏幕方向监测
6.Kotpref -android sp缓存工具
7.Fuese - android内存缓存工具
8.Kotter Knife KotlinPoet 类似黄油刀的依赖注入框架
9.Klaxon 一个解析 JSON 的库

三、AndroidStudio配置

1.插件安装
image.png

当插件安装完毕后,重启Android Studio即可。
打开Android Studio新建一个项目,和往常一样建立一个项目就可以了,项目建立好以后,我们会在右键菜单New下看到多出来Kotlin File/Class和Kotlin Activity两个选项。


image.png

第一次新建Kotlin类后,会显示“Kotlin not configured”,点击“Configure”,进入Kotlin配置页面。


image.png

根据自己的需要选择需要配置的范围,全部模块或单个模块,然后确定就可以了,我直接默认选项过去
配置完成后会自动在你的Project下的build.gradle与moudle下的build.gradle下配置相应的参数。
project下build.gradle中的参数
image.png

module下 build.gradle中的参数


image.png
2.把项目转换为kotlin项目:
image.png

新建好的MainActivity.java, 注意这里是.java后缀的java文件,我们可以手动转换为kotlin代码


image.png

image.png

四、简化findViewById

我们知道,Android的架构里,xml布局文件和Activity是松耦合的,Activity中要使用界面元素,必须借助R文件对xml控件的记录,用findViewById找到这个元素。
在Kotlin中我们可继续使用findViewById去绑定xml布局中的控件:(TextView)findViewById(R.id.hello);
进一步引用Anko之后,可以使用find函数去绑定控件:find(R.id.hello),不需要类型转换
同时,Kotlin还提供一种更激进的方法,通过在gradule中引用

applyplugin:'kotlin-android-extensions'

彻底取消findViewById这个函数,具体做法如下:

首先,在app的gradule中,添加引用


image.png

然后,在Activity中直接根据id使用界面元素


image.png

五、Anko简单使用(有很多坑,不建议使用)

Anko其实是一种DSL(领域相关语言),是专门用代码方式来写界面和布局的。
我们可以看看Anko在Github上的代码示例,用6行代码就做出了一个有输入框、按钮、点击事件和Toast的界面和功能

image.png

我们自己写一下这6行代码,首先需要在gradle中添加引用,主要是sdk和v4/v7包
image.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容