使用Kotlin開(kāi)發(fā)Android應(yīng)用的初體驗(yàn)
昨晚,最近一屆的谷歌IO大會(huì)正式將Kotlin確定為了官方開(kāi)發(fā)語(yǔ)言,作為一名Android開(kāi)發(fā)鳥,怎么能不及時(shí)嘗嘗鮮呢?
Kotlin的簡(jiǎn)要介紹
在開(kāi)發(fā)之前,很多同學(xué)一定有很多疑問(wèn),Kotlin到底有啥好處,怎么和現(xiàn)有的項(xiàng)目共存呢?Java那么些特性Kotlin都有嗎?嗯,讓我們一一來(lái)看。
Kotlin 非常適合開(kāi)發(fā) Android 應(yīng)用程序,將現(xiàn)代語(yǔ)言的所有優(yōu)勢(shì)帶入 Android 平臺(tái)而不會(huì)引入任何新的限制:
- 兼容性:Kotlin 與 JDK 6 完全兼容,保障了 Kotlin 應(yīng)用程序可以在較舊的 Android 設(shè)備上運(yùn)行而無(wú)任何問(wèn)題。Kotlin 工具在 Android Studio 中會(huì)完全支持,并且兼容 Android 構(gòu)建系統(tǒng)。
- 性能:由于非常相似的字節(jié)碼結(jié)構(gòu),Kotlin 應(yīng)用程序的運(yùn)行速度與 Java 類似。 隨著 Kotlin 對(duì)內(nèi)聯(lián)函數(shù)的支持,使用 lambda 表達(dá)式的代碼通常比用 Java 寫的代碼運(yùn)行得更快。
- 互操作性:Kotlin 可與 Java 進(jìn)行 100% 的互操作,允許在 Kotlin 應(yīng)用程序中使用所有現(xiàn)有的 Android 庫(kù) 。這包括注解處理,所以數(shù)據(jù)綁定和 Dagger 也是一樣。
- 占用:Kotlin 具有非常緊湊的運(yùn)行時(shí)庫(kù),可以通過(guò)使用 ProGuard 進(jìn)一步減少。 在實(shí)際應(yīng)用程序中,Kotlin 運(yùn)行時(shí) 只增加幾百個(gè)方法以及 .apk 文件不到 100K 大小。
- 編譯時(shí)長(zhǎng):Kotlin 支持高效的增量編譯,所以對(duì)于 清理構(gòu)建會(huì)有額外的開(kāi)銷,增量構(gòu)建通常與 Java 一樣快或者更快。
- 學(xué)習(xí)曲線:對(duì)于 Java 開(kāi)發(fā)人員,Kotlin 入門很容易。包含在 Kotlin 插件中的自動(dòng) Java 到 Kotlin 的轉(zhuǎn)換器 有助于邁出第一步。Kotlin 心印 通過(guò)一系列互動(dòng)練習(xí)提供了語(yǔ)言主要功能的指南。
Kotlin 用于 Android 的案例學(xué)習(xí)
Kotlin 已被一些大公司成功采用,其中一些公司分享了他們的經(jīng)驗(yàn):
- Pinterest 已經(jīng)成功地將 Kotlin 引入了他們的應(yīng)用程序中,每個(gè)月有 1 億 5 千萬(wàn)人使用。
- Basecamp 的 Android 應(yīng)用程序是 100% Kotlin 代碼,他們報(bào)告了程序員幸福的 巨大差異,以及工作質(zhì)量和速度的巨大改善。
- Keepsafe 的 App Lock 應(yīng)用程序也已轉(zhuǎn)換為 100% Kotlin, 使源代碼行數(shù)減少 30%、方法數(shù)減少 10%。用于 Android 開(kāi)發(fā)的工具
Kotlin 團(tuán)隊(duì)為 Android 開(kāi)發(fā)提供了一套超越標(biāo)準(zhǔn)語(yǔ)言功能的工具:
- Kotlin Android 擴(kuò)展是一個(gè)編譯器擴(kuò)展, 可以讓你擺脫代碼中的 findViewById() 調(diào)用,并將其替換為合成的編譯器生成的 屬性。
- Anko 是一個(gè)提供圍繞 Android API 的 Kotlin 友好的包裝器的庫(kù) ,以及一個(gè)可以用 Kotlin 代碼替換布局 .xml 文件的 DSL。
下一步
- Android 與 Kotlin 入門教程 指導(dǎo)你將 Kotlin 插件安裝到 Android Studio 中,并創(chuàng)建你的第一個(gè) Kotlin 應(yīng)用程序。
- 關(guān)于更深入的介紹,請(qǐng)查看本站的參考文檔及 Kotlin 心印。
- 另一個(gè)很好的資源是 Kotlin for Android Developers, 這本書會(huì)引導(dǎo)你逐步完成在 Kotlin 中創(chuàng)建真正的 Android 應(yīng)用程序的過(guò)程。
使用Kotlin開(kāi)發(fā)Android應(yīng)用
在開(kāi)始學(xué)習(xí)使用Kotlin開(kāi)發(fā)Android應(yīng)用之前,我們首先需要準(zhǔn)備好手中的環(huán)境,那就是必須先配置好Android Studio 3.0的環(huán)境。
創(chuàng)建Kotlin開(kāi)發(fā)工程
這里的工程創(chuàng)建與普通的Android應(yīng)用工程創(chuàng)建并無(wú)不同,唯一的不同之處在于創(chuàng)建工程時(shí)勾選 Include Kotlin support 選項(xiàng)。如圖:

在默認(rèn)創(chuàng)建好的Activity中便已經(jīng)是Kotlin的代碼,看起來(lái)與Java代碼本身非常相似:

Kotlin文件以.kt結(jié)尾。
默認(rèn)創(chuàng)建好的Kotlin文件還是會(huì)放在和Java文件一樣的位置,如果需要使kotlin文件與Java文件分開(kāi)放的話,那么可以在對(duì)應(yīng)的gradle文件中加入以下配置:
android {
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
這樣的話,所有默認(rèn)創(chuàng)建的Kotlin文件就會(huì)被放在/kotlin/目錄下了。
在現(xiàn)有的工程中添加Kotlin
如果需要在已有的工程中添加Kotlin的支持,那么只需要在新創(chuàng)建Activity時(shí)在Source language選項(xiàng)中選擇Kotlin就可以:

將Java代碼轉(zhuǎn)換為Kotlin代碼
在Android Studio 3.0中提供了可以將Java代碼轉(zhuǎn)化為Kotlin代碼的工具。使用時(shí)只需要將對(duì)應(yīng)的Java文件打開(kāi),然后選擇菜單欄上的 Code -> Convert Java File to Kotlin File 就可以完成轉(zhuǎn)換。

不過(guò)需要注意的是,這個(gè)工具可以完成大部分的語(yǔ)法轉(zhuǎn)換,個(gè)別類型,比如數(shù)組在轉(zhuǎn)換的時(shí)候可能有些問(wèn)題,需要自己手動(dòng)調(diào)整。博主我在練習(xí)的時(shí)候發(fā)現(xiàn)了這個(gè)問(wèn)題,不過(guò)通過(guò)語(yǔ)法文檔迅速做了修正。發(fā)現(xiàn)Kotlin在語(yǔ)法簡(jiǎn)潔方面確實(shí)要優(yōu)于Java很多。例如下面一段代碼:
val bitmaps = LargePicLoadHelper.cutItemImage(cutImage, itemImageHeight)
cutImage.recycle()
for (i in bitmaps) {
val imageView = ImageView(this)
imageView.setImageBitmap(i)
linearLayout.addView(imageView)
}
textView.postDelayed({
for (i in bitmaps) {
i.recycle()
}
}, 1000)
這段代碼在輪詢數(shù)組時(shí),比Java的foreach循環(huán)要簡(jiǎn)潔很多,i在這里代表了一個(gè)Bitmap對(duì)象,bitmaps是一個(gè)數(shù)組。是不是很簡(jiǎn)單呢?
通過(guò)Kotlin使用Java代碼
Kotlin提供了很強(qiáng)大的互操作性,這個(gè)互操作性是個(gè)什么鬼呢?就是說(shuō)Kotlin可以很方便的調(diào)用Java代碼,Java代碼也可以很方便的調(diào)用Kotlin代碼。這個(gè)方便到什么程度呢?Kotlin可以直接調(diào)用Java代碼。如果你了解JNI的話,那就知道Kotlin的互操作性有多么簡(jiǎn)潔多么方便了。
使用Kotlin聲明Activity:
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity)
}
}
使用Kotlin設(shè)置點(diǎn)擊事件:
val textView = findViewById(R.id.text) as TextView
textView.setOnClickListener {
Toast.makeText(this,"Hello Kotlin!",Toast.LENGTH_SHORT).show()
}
看到?jīng)]有,上面的setContentView以及下面的Toast就是Android提供的API,我們可以直接使用。并且setOnClickListener方法內(nèi)部并不需要new OnClickListener對(duì)象!直接寫點(diǎn)擊實(shí)現(xiàn)就可以了!還有Toast的第一個(gè)參數(shù)this在Java中是一定要寫Activity.this的,而這里只用寫this就可以了!是不是很niubility?
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android Kotlin的使用及簡(jiǎn)單實(shí)例
- kotlin 官方學(xué)習(xí)教程之基礎(chǔ)語(yǔ)法詳解
- Kotlin 開(kāi)發(fā)環(huán)境詳解及簡(jiǎn)單實(shí)例
- Android Kotlin開(kāi)發(fā)實(shí)例(Hello World!)及語(yǔ)法詳解
- 五分鐘教你Android-Kotlin項(xiàng)目編寫
- Kotlin開(kāi)發(fā)Android應(yīng)用實(shí)例詳解
- 使用Kotlin開(kāi)發(fā)Android應(yīng)用教程
- 如何利用Kotlin實(shí)現(xiàn)極簡(jiǎn)回調(diào)
相關(guān)文章
Android自定義控件實(shí)現(xiàn)萬(wàn)能的對(duì)話框
這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)萬(wàn)能對(duì)話框的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android學(xué)習(xí)筆記——Menu介紹(三)
今天繼續(xù)昨天沒(méi)有講完的Menu的學(xué)習(xí),主要是Popup Menu的學(xué)習(xí),需要的朋友可以參考下2014-10-10
Kotlin圖文講解多語(yǔ)言支持實(shí)現(xiàn)方法
這篇文章主要介紹了Kotlin多語(yǔ)言支持實(shí)現(xiàn)方法,在Android開(kāi)發(fā)中,我們?nèi)绾沃С侄嗾Z(yǔ)言APP呢,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值2023-02-02
Android開(kāi)發(fā)實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器功能【附完整demo源碼下載】
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)的簡(jiǎn)單計(jì)算器功能,結(jié)合實(shí)例形式分析了Android計(jì)算器的具體實(shí)現(xiàn)步驟與相關(guān)操作技巧,并附帶完整demo源碼供讀者下載參考,需要的朋友可以參考下2017-11-11
Android自定義控件之開(kāi)關(guān)按鈕學(xué)習(xí)筆記分享
這篇文章主要為大家分享了Android自定義開(kāi)關(guān)按鈕的學(xué)習(xí)筆記,內(nèi)容豐富,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Android listview數(shù)據(jù)顯示及提示信息的實(shí)例
這篇文章主要介紹了Android listview數(shù)據(jù)顯示及提示信息的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android實(shí)現(xiàn)TextView字符串關(guān)鍵字變色的方法
這篇文章顯示給大家介紹了字符串中關(guān)鍵字變色的實(shí)現(xiàn)方法,而后又拓展介紹了在Android中如何實(shí)現(xiàn)搜索關(guān)鍵字變色,相信對(duì)各位Android開(kāi)發(fā)者們具有一定的參考借鑒價(jià)值,感興趣的朋友們下面來(lái)一起看看吧。2016-10-10
Android調(diào)試神器stetho使用詳解和改造
今天小編就為大家分享一篇關(guān)于Android調(diào)試神器stetho使用詳解和改造,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02
Android共享元素動(dòng)畫效果顯示問(wèn)題解決
什么是共享元素呢?可以理解為當(dāng)頁(yè)面跳轉(zhuǎn)是,看起來(lái)一個(gè)View屬于界面A又屬于界面B,下面這篇文章主要給大家介紹了關(guān)于Android共享元素動(dòng)畫效果顯示問(wèn)題的相關(guān)資料,需要的朋友可以參考下2022-02-02
android webview 中l(wèi)ocalStorage無(wú)效的解決方法
這篇文章主要介紹了android webview 中l(wèi)ocalStorage無(wú)效的解決方法,本文直接給出解決方法實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-06-06

