Android Studio 3.0以下版本配置:
這使用的Android Studio 2.3版本,因此,需要添加Kotlin插件。
在Android Studio中添加Kotlin語(yǔ)言依賴(lài)包:
kotlin 標(biāo)準(zhǔn)庫(kù)依賴(lài):File–> Setting–>Plugins–>搜索Kotlin–>安裝,如下所示:

安裝完后,重啟android studio。
原本的AndroidStudio 存Java語(yǔ)法項(xiàng)目轉(zhuǎn)成支持Kotlin語(yǔ)法的項(xiàng)目
:
以下幾步操作,AndroiStudio自動(dòng)下載進(jìn)行配置,以免手動(dòng)配置出錯(cuò)。
1. 將Java文件轉(zhuǎn)換成kotlin文件::
打開(kāi)Java文件,然后點(diǎn)擊Code–>Convert Java File to Kotlin
2. 添加kotlin的配置:configue–>android Gralde:
3. 選中添加的配置,這里選擇當(dāng)前包含Kotlin的項(xiàng)目中添加插件:
4. 配置好后,在Project的Gradle中添加sync now,AndroidStudio將會(huì)自動(dòng)下載配置
5. 配置好的Projcet的Gralde如下:
6. 配置好的module的Gradle如下:
解讀MainActivity中,Java轉(zhuǎn)成Kotlin后的代碼:
/** * 一個(gè)類(lèi)繼承父類(lèi)和實(shí)現(xiàn)接口的方式; class 類(lèi)名 :超類(lèi)名(),接口名 */classMainActivity:AppCompatActivity() {/** * override用于覆寫(xiě)繼承父類(lèi)或者實(shí)現(xiàn)接口中方法。 * * fun 用于標(biāo)識(shí)方法 * * 參數(shù)形式: 參數(shù)名: 類(lèi)型 * * ? 是用于指定可以為空對(duì)象 * */overridefun onCreate(savedInstanceState:Bundle?) {super.onCreate(savedInstanceState)? ? ? ? setContentView(R.layout.activity_main)? ? }}
運(yùn)行效果如下:
Android Studio 3.0創(chuàng)建Kotlin項(xiàng)目:
Android Studio 3.0及其以版本上是支持Kotlin開(kāi)發(fā)的。
1. 下載和安裝Android Studio 3.0:
Android Studio 3.0下載:進(jìn)入下載頁(yè)面
Android Studio預(yù)先版本是可以與電腦現(xiàn)有安裝的AndroidStudio版本共存 , 詳情請(qǐng)看多個(gè)AndroidStudio共存安裝教程.
2. 使用AndroidStudio創(chuàng)建Kotlin的項(xiàng)目:
在AndroidStudio 中 ,在Welcom toAndroid Studio頁(yè)面中點(diǎn)擊Start new Android Studio project或者在原本工作區(qū)間中點(diǎn)擊File–>New –>New Projcet。接下來(lái),在Creat New Projcet中,勾選上include Kotlin Support,最后點(diǎn)擊Next一路走下去。

最后Kotlin文件和Java文件存放路徑相似,存放在src/main/java目錄下。
3. 在項(xiàng)目中添加Kotlin:
在File–>New –>在菜單中進(jìn)行選擇文件類(lèi)型,如下如圖所示:

如上圖所示向?qū)нM(jìn)行操作后,在New Android Activity頁(yè)面中選擇Kotlin作為開(kāi)發(fā)語(yǔ)言,然后一路next。

Android Studio是很強(qiáng)大的,還提供其他方式創(chuàng)建Kotlin文件。
點(diǎn)擊Flie–>New –>Kotlin File/Class 創(chuàng)建一個(gè)基本文件。在New Kotlin File/Class 彈窗中,輸入文件名,可以從多中Kind選擇一種類(lèi)型。不必要擔(dān)心創(chuàng)建錯(cuò)文件類(lèi)型,在編寫(xiě)代碼中聲明類(lèi)型時(shí)候,文件會(huì)自動(dòng)切換到聲明所對(duì)應(yīng)的類(lèi)型。
修改Kotlin所存放的路徑:
默認(rèn)情況下,Kotlin文件存放在src/main/java/,與java在同一個(gè)文件夾下。若是需要隔開(kāi)java文件和Kotlin文件,指定一個(gè)專(zhuān)門(mén)存放Kotlin文件的文件夾。例如,在src/main路徑下創(chuàng)建一個(gè)kotlin目錄,然后需要在Gralde指定sourceSets配置:
android {sourceSets {? ? ? main.java.srcDirs +='src/main/kotlin'}}
3. 轉(zhuǎn)換Java代碼到Kotlin代碼
在項(xiàng)目中,打開(kāi)一個(gè)java文件,點(diǎn)擊最上面窗口中Code–>Convert Java File to Kotlin File
一種方式是,在Kotlin文件中拷貝Java代碼,然后出現(xiàn)提示,將convert the code toKotlin,勾選中選擇下次不提示該彈窗,這樣也實(shí)現(xiàn)Java代碼轉(zhuǎn)成Kotlin。

4. 在Kotlin語(yǔ)言中使用Android API
Kotlin與Java語(yǔ)言是互通的,交互使用。因此,Kotlin調(diào)用Android API與Java調(diào)用方式類(lèi)似。
這里列舉幾個(gè)案例,進(jìn)行比對(duì)(來(lái)源官方):
編寫(xiě)Activity:
Java:
publicclassMyActivityextendsAppCompatActivity{@Overrideprotectedvoid onCreate(BundlesavedInstanceState) {super.onCreate(savedInstanceState);? ? setContentView(R.layout.activity);? }}
Kotlin:
classMyActivity:AppCompatActivity() {overridefun onCreate(savedInstanceState:Bundle?) {super.onCreate(savedInstanceState) setContentView(R.layout.activity) } }
為View設(shè)置點(diǎn)擊事件:
Java:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);fab.setOnClickListener(newView.OnClickListener() {@OverridepublicvoidonClick(View view){? ? ...? }});
Kotlin:
val fab = findViewById(R.id.fab)asFloatingActionButtonfab.setOnClickListener {? ...}
創(chuàng)建item點(diǎn)擊事件:
Java:
privateBottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener? ? =newBottomNavigationView.OnNavigationItemSelectedListener() {@OverridepublicbooleanonNavigationItemSelected(@NonNullMenuItem item) {switch(item.getItemId()) {caseR.id.navigation_home:mTextMessage.setText(R.string.title_home);returntrue;caseR.id.navigation_dashboard:mTextMessage.setText(R.string.title_dashboard);returntrue;? ? }returnfalse;? }};
Kotlin:
private val mOnNavigationItemSelectedListener? ? = BottomNavigationView.OnNavigationItemSelectedListener { item->when(item.itemId) {? ? R.id.navigation_home->{? ? ? mTextMessage.setText(R.string.title_home)return@OnNavigationItemSelectedListenertrue}? ? R.id.navigation_dashboard->{? ? ? mTextMessage.setText(R.string.title_dashboard)return@OnNavigationItemSelectedListenertrue} }false}
摘自:https://www.ctolib.com/topics-116735.html