學(xué)習(xí)Kotlin(譯文)

在Android上開始學(xué)Kotlin

Android Studio 3.0完全支持Kotlin怪瓶,所以它很容易用Kotlin文件來創(chuàng)建新項目炼吴,在你的已有項目中添加Kotlin文件呛讲,并且,可以將java代碼轉(zhuǎn)換成Kotlin享钞。然后号胚,你能通過Kotlin代碼來使用所有Android Studio現(xiàn)有的工具,比如自動補(bǔ)全酸役、lint檢測住诸、抽取、調(diào)試等等涣澡。這一頁展示你改如何在Android Studio上開始學(xué)習(xí)kotlin贱呐。學(xué)習(xí)更多關(guān)于Kotlin語言,請看更多學(xué)習(xí)

使用Kotlin來創(chuàng)建一個新項目

使用Kotlin來創(chuàng)建新項目只需要在新建項目想到上多點擊一下:

  1. 在Android Studio中點擊 File>New>New Project . 如果你剛剛打開Android Studio入桂,會看到 Welcome to Android Studio 窗口奄薇,只需要點擊 Start a new Android Studio project
  2. 在彈出的第一個界面中抗愁,選中 Include Kotlin support 馁蒂。這就是唯一的不同點呵晚。
  3. 點擊 Next ,并且繼續(xù)向?qū)е钡侥銊?chuàng)建完成沫屡。
    kotlin-new-project.png

當(dāng)你選擇一個activity模板時饵隙,Android Studio會提供Kotlin代碼。目前沮脖,只有一些“Phone and Tablet”提供了慣用的Kotlin代碼癞季。其余都是自動地將Java代碼轉(zhuǎn)換Kotlin代碼,這樣你仍然可以得到Kotlin代碼倘潜,但是可能一些代碼不是使用Kotlin最佳的語言特點绷柒。

就像Java文件一樣,Kotlin文件保存在 src/main/java/ 目錄名涮因。

添加Kotlin到已有的項目

如果你想要添加Kotlin代碼到已有的項目废睦,只需要點擊 File > New,然后選擇期中一個模板养泡。如果你的菜單中沒有如下的模板列表嗜湃,先打開Project 窗口,然后選擇你的app module澜掩。

new-template-menu_2x.png

下面向?qū)ы摮霈F(xiàn)時购披,選擇 Source language 中選擇 Kotlin

kotlin-new-activity_2x.png

繼續(xù)向?qū)Ъ玳牛钡酵瓿伞?/p>

另外刚陡,你可以點擊 File > New > Kotlin File/Class 創(chuàng)建一個基本的文件。這個 Kotlin File/Class 窗口提供了幾種文件種類的選擇株汉,但是如果你稍后更改生命類型筐乳,Kotlin將會自動轉(zhuǎn)換文件類型,因此乔妈,無論你選擇哪一個都沒關(guān)系蝙云。

創(chuàng)建Kotlin文件默認(rèn)會保存在 src/main/java/ 。你可能發(fā)現(xiàn)在一個未致電很容易同時看到Kotlin和Java文件路召。但是如果你想要區(qū)分Kotlin文件和Java文件勃刨,你可以將Kotlin文件放到 src/main/kotlin/ 路徑下。如果你這樣做的話股淡,那么你需要在你的sourceSets配置中包含Kotlin文件的目錄

android {
    sourceSets {
    main.java.srcDirs += 'src/main/kotlin'
    }
}

將已有的java代碼轉(zhuǎn)換成Kotlin代碼

在Android Studio3.0中打開一個java文件身隐,并且選擇 Code > Convert Java File to Kotlin File

或者揣非,創(chuàng)建一個新的Kotlin文件(File > New > Kotlin File/Class)抡医,然后粘貼java代碼到該文件中躲因,當(dāng)提示的時候早敬,點擊Yes忌傻,開始將java代碼轉(zhuǎn)換成Kotlin。你可以選中 Don't show this dialog next time搞监,這將會極大方便你在Kotlin文件中存儲Java代碼片段水孩。

kotlin-convert_2x.png

通過Kotlin來調(diào)用Android APIs

Kotlin提供了與Java語言的完全操作性,所以調(diào)用Android APIs 經(jīng)乘雎浚看起來完全像匹配了的Java代碼俘种。除了現(xiàn)在,你可以將那些方法調(diào)用和Kotlin語言特征相結(jié)合绝淡。

下面有一些在Kotlin中調(diào)用Android APIs的列子宙刘,以及一些對比的同樣調(diào)用的Java代碼的列子。

Declare Activity in Kotlin

class MyActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity)
  }
}

Declare Activity in Java

public class MyActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity);
  }
}

On-click listener in Kotlin

val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
  ...
}

On-click listener in Java

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    ...
  }
});

Item click listener in Kotlin

private val mOnNavigationItemSelectedListener
    = BottomNavigationView.OnNavigationItemSelectedListener { item ->
  when (item.itemId) {
    R.id.navigation_home -> {
      mTextMessage.setText(R.string.title_home)
      return@OnNavigationItemSelectedListener true
    }
    R.id.navigation_dashboard -> {
      mTextMessage.setText(R.string.title_dashboard)
      return@OnNavigationItemSelectedListener true
    }
 }
 false
}

Item click listener in Java

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
    = new BottomNavigationView.OnNavigationItemSelectedListener() {
  @Override
  public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()) {
      case R.id.navigation_home:
        mTextMessage.setText(R.string.title_home);
        return true;
      case R.id.navigation_dashboard:
        mTextMessage.setText(R.string.title_dashboard);
        return true;
    }
    return false;
  }
};

本文譯處:https://developer.android.com/kotlin/get-started.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牢酵,一起剝皮案震驚了整個濱河市悬包,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馍乙,老刑警劉巖布近,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丝格,居然都是意外死亡撑瞧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門显蝌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來预伺,“玉大人,你說我怎么就攤上這事曼尊∨てǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵涩禀,是天一觀的道長料滥。 經(jīng)常有香客問我,道長艾船,這世上最難降的妖魔是什么葵腹? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮屿岂,結(jié)果婚禮上践宴,老公的妹妹穿的比我還像新娘。我一直安慰自己爷怀,他們只是感情好阻肩,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般烤惊。 火紅的嫁衣襯著肌膚如雪乔煞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天柒室,我揣著相機(jī)與錄音渡贾,去河邊找鬼。 笑死雄右,一個胖子當(dāng)著我的面吹牛空骚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播擂仍,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼囤屹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逢渔?” 一聲冷哼從身側(cè)響起牺丙,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎复局,沒想到半個月后冲簿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡亿昏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年峦剔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片角钩。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡吝沫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出递礼,到底是詐尸還是另有隱情惨险,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布脊髓,位于F島的核電站辫愉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏将硝。R本人自食惡果不足惜恭朗,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望依疼。 院中可真熱鬧痰腮,春花似錦、人聲如沸律罢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沧踏,卻和暖如春歌逢,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悦冀。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工趋翻, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留睛琳,地道東北人盒蟆。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像师骗,于是被迫代替她去往敵國和親历等。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容