Android 11 开发者预览版现已推出;快来测试并分享您的反馈吧

在 Android 开发中开始使用 Kotlin

Android Studio 完全支持 Kotlin,从而可让您使用 Kotlin 文件创建新项目、向现有项目添加 Kotlin 文件,以及将 Java 语言代码转换为 Kotlin 代码。您可以使用 Android Studio 的所有现有工具来处理 Kotlin 代码,包括代码补全、lint 检查、重构和调试等。

不熟悉 Kotlin 语言?请查看以下链接:

  • 学习 Kotlin 语言:30 分钟的速成课程,讲解 Kotlin 基础知识。
  • Kotlin 示例:一个不断扩充的库,汇集了用 Kotlin 编写的 Android 示例应用。
  • 其他 Kotlin 资源:一组精心挑选的资源,涵盖 Kotlin 的方方面面,包括示例、Codelab、视频、图书,等等。

将 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 参考。如需了解详情,请参阅 KTX 指南在 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 代码的格式设置提供了建议。