在 Android 开发中开始使用 Kotlin

Kotlin 在 Android Studio 3.0 及更高版本中完全受支持,因此,您可以轻松使用 Kotlin 文件来创建新项目,向现有项目中添加 Kotlin 文件以及将 Java 语言代码转换为 Kotlin 代码。接下来,您可以使用 Android Studio 的所有现有工具来处理 Kotlin 代码,例如自动填充、lint 检查、重构和调试等。

想要立即开始使用?请参阅我们的 Kotlin 示例。要详细了解 Kotlin 语言,请查看 Kotlin 学习资源

将 Kotlin 添加到现有应用

要掌握 Kotlin 使用技能并熟练使用 Kotlin,我们建议您采用渐进式方法:

  1. 首先用 Kotlin 编写测试。测试对于检查代码回归性而言非常有用,并让您在重构代码时更有把握。将现有 Java 代码转换为 Kotlin 代码时,测试尤其有用。由于测试在打包过程中不会与应用捆绑在一起,因此它们是将 Kotlin 代码添加到代码库的安全位置。
  2. 用 Kotlin 编写新代码。在将现有 Java 代码转换为 Kotlin 代码之前,请尝试向应用添加一小段新的 Kotlin 代码。从小型类或顶级辅助函数开始。请务必在 Kotlin 代码中添加相关注释,以确保与 Java 代码的正确互操作性。
  3. 将现有代码更新为 Kotlin 代码。编写新的 Kotlin 代码顺手后,您可以将现有的 Java 代码转换为 Kotlin 代码。建议您提取一小部分 Java 功能并转换为 Kotlin 类和顶级函数。

    首先请使用 Android Studio 代码转换器将 Java 文件中的代码转换为 Kotlin 代码。您还可以将从剪贴板粘贴的 Java 代码转换为 Kotlin 文件。

Android API 和 Kotlin 示例

Kotlin 与 Java 语言可以完全互操作,因此调用 Android API 通常看起来与匹配的 Java 代码完全相同。不过现在,您可以将这些方法调用与 Kotlin 的语法功能相结合。

此外,我们也正在努力让所有 Android API 文档都包含惯用 Kotlin 参考。您可以在 Android 参考概览中找到指向可用 Kotlin 参考的链接。

下面是一些在 Kotlin 代码中调用 Android API 的示例(与采用 Java 语言的相同代码相对比):

声明 Activity

Kotlin

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

Java

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

创建点击监听器

Kotlin

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

Java

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

创建项目点击监听器

Kotlin

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

Java

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

最佳做法

当您能熟练使用 Kotlin 时,请尝试遵循以下准则:

  • 侧重于可读性,而不是尽量缩短代码行。用 Kotlin 语法糖很容易过度。
  • 您最好确立最适合自己团队的编码规范和惯用语。KotlinAndroid Kotlin 样式指南为确定 Kotlin 代码格式提供了很好的建议。