Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

-

在 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 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
}

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 时,请尝试遵循以下准则:

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