Kotlin編程之AndroidStudio(包括3.0與2.x版本)配置與使用

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容