今天开始,五万和大家一起来学习Kotlin
Kotlin在Android Studio 3.0中得到了充分的支持,因此很容易创建带有Kotlin文件的新项目,将Kotlin文件添加到现有项目中,并将Java语言代码转换为Kotlin。然后,您可以使用您的Kotlin代码使用所有Android Studio的现有工具,比如autocomplete、lint checker、重构、调试等等。

这个页面向您展示了如何在Android Studio中开始使用Kotlin。

用Kotlin创建一个新的项目。

1.在Android Studio中,点击File > New > New Project.。或者,如果你刚刚打开Android Studio,看到Android Studio窗口的欢迎,点击启动一个新的Android Studio项目。

2.在第一个屏幕上,检查包括Kotlin支持。这是唯一的区别。

3.单击Next并继续通过向导,直到完成为止。

android 代码布局kotlin android studio kotlin教程_Kotlin

当您选择一个活动模板时,它将在Kotlin代码中提供。
目前,只有一些手机和平板电脑的模板是使用了惯用的Kotlin代码。
其余的代码将从Java模板自动转换为Kotlin—您仍然可以在整个过程中获得Kotlin代码,但是一些代码可能还没有使用Kotlin的最佳语言特性。

就像Java文件一样,Kotlin文件保存在src/main/ Java /目录中。

将Kotlin添加到现有项目中。

如果您想要将Kotlin代码添加到现有的项目中,只需单击File > New并选择一个不同的Android模板。如果您没有看到这个菜单中的模板列表,首先打开项目窗口并选择您的app module.。

android 代码布局kotlin android studio kotlin教程_Java_02

在出现的向导中,为源语言选择Kotlin。

android 代码布局kotlin android studio kotlin教程_Java_03

继续通过向导,您就完成了。

或者,您可以单击File > New > Kotlin File/Class创建一个基本文件。
The New Kotlin File/Class 窗口为文件类型提供了多种选择,但是您选择哪一个并不重要,因为如果您稍后更改声明类型,Kotlin将自动切换文件类型。

默认情况下,新的Kotlin文件被保存到src/main/java/中。您可能会发现在一个位置中更容易看到Kotlin和Java文件。但是,如果您希望将Kotlin文件从Java文件中分离出来,您可以将Kotlin文件放在src/main/ Kotlin /相反的位置。如果您这样做了,那么您需要在sourceSets配置中包含这个目录:

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

将现有的Java代码转换为Kotlin代码。

在Android Studio 3.0中,打开一个Java文件并选择代码>将Java文件转换为Kotlin文件。

或者,创建一个新的Kotlin文件(File > New > Kotlin File/Class),然后在提示时将Java代码粘贴到该文件中,单击Yes将代码转换为Kotlin。您可以查看下次不显示这个对话框,这使得将Java代码片段转储到您的Kotlin文件变得很容易。

android 代码布局kotlin android studio kotlin教程_Java_04

使用Android api与Kotlin

Kotlin提供了与Java语言完全的互操作性,因此调用Android api通常与匹配的Java代码完全相同。
除了现在,您可以将这些方法调用与Kotlin的语法特性结合起来。

下面是一些在Kotlin中调用Android api的例子,与Java语言中的相同代码相比:
使用Android api与Kotlin。
1.Activity(活动)
Java

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

Kotlin

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

2.On-click listener(监听事件)
Java

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

Kotlin

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

3.Item click listener in Java(列表监听)
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;
  }
};

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
}