原文链接:Get Started with Kotlin on Android | Android Developers
Android Studio 3.0 或更高版本对于 Kotlin 有着完整的支持,因此您可以轻易地创建使用 Kotlin 的新项目、为您现有的项目添加 Kotlin 文件,或者将 Java 代码转换成 Kotlin。这样一来,您你就能使用 Android Studio 为 Kotlin 提供的所有工具,例如代码自动补全(autocomplete)、代码风格检查(lint checking)、重构和调试,等等。
忍不住想上手来一发?请查看我们的 Kotlin 案例。欲了解有关 Kotlin 编程语言的更多信息,请参阅学习 Kotlin 的资源。
欲获得使用 Kotlin 的技能和自信,我们推荐一条循序渐进的方法:
- 从使用 Kotlin 编写测试开始:测试对于检查代码在修改后是否工作有着重要的作用,让您能更安心地重构代码。而在把 Java 代码转换成 Kotlin 时,测试就更至关重要了。由于测试在打包阶段并不和您的应用绑定,您可以放心大胆地通过它们向代码库中添加 Kotlin 代码。
- 使用 Kotlin 编写新的代码:在将现有 Java 代码转换成 Kotlin 之前,请试着使用 Kotlin向您的应用中添加少量新代码。譬如,您可以从一个不大的类或者顶层的助手函数开始。请务必为这些 Kotlin 代码添加相关的注释,以确保它们可以和 Java 代码协同互用。
- 将现有代码更新为 Kotlin:一旦您已经熟悉了使用 Kotlin 编写新代码,就可以把您现有的 Java 代码转换成 Kotlin 了。您可能需要将少量使用 Java 代码实现的功能提取出来、并转化成 Kotlin 类和顶层的函数。
先试试 Android Studio 中能够将 Java 文件转成 Kotlin 的 代码转换器吧。您还可以把剪贴板里的 Java 代码在拷贝到 Kotlin 文件中的时候进行转化。
Kotlin 提供了和 Java 的完全的互用性(interoperability),因此调用 Android API 常常看起来和 Java 代码完全一致。此外,您现在还能把这种方法调用同 Kotlin 的语义特性结合起来。
我们还在努力为所有的 Android API 文档提供提到的 Kotlin 参考。您可以在 Android API 文档概述中找到可用的 Kotlin 参考。
如下这些例子展示了使用 Kotlin 和 Java 来调用相同的 Android API 的差异:
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 提供了众多语法糖(syntactic sugar)的情况下,很容易做得过火。
- 最好确立让整个团队最适应的代码规范和风格。Kotlin 和 Android Kotlin 代码风格指南里有不少格式化 Kotlin 代码的靠谱建议。