## **开始在Android上使用Kotlin**
在Android Studio 3.0中全面支持Kotlin,所以创建一个全新包含Kotlin文件的项目,向你当前的项目中添加Kotlin文件,将Java语言代码转换为Kotlin非常简单。你可以在你的Kotlin代码上,使用Andorid Studio现存所有的工具,例如自动补齐,lint检查,重构,调试等等。
这章节教你如何在Android Studio中使用Kotlin。更多关于Kotlin语言的信息,查看Resources to Learn Kotiln。
### **使用Kotlin创建一个新的项目**
***
在新项目中使用Kotlin,仅仅要求在创建新项目的引导中一个额外的点击:
1. 在Android Studio中,点击File>New>New Project。或者如果你仅仅打开了Android Studio,看见了Welcome to Android Studio窗口,点击Start a new Android Studio project。
2. 在一个窗口,选中Include Kotlin support。这是唯一的不同。
3. 点击Next和继续完成向导,直到你操作完毕。
![](https://box.kancloud.cn/3fe4d831b5731fc4894995eccc20db0b_1600x1344.png)
当你选择一个Activity模板的时候,它将会提供Kotlin代码。现在,仅仅一些Phone and Table类型的模板提供“地道”的Kotlin代码。其余的则从Jav模板自动转换成Kotlin—你仍然可以得到Kotlin代码,但是一些代码可能没有使用Kotlin的最好语言功能。
和Java文件一样,Kotlin文件被保存在src/main/java/目录下。
### 向已有的项目添加Kotlin
***
如果你向现有的项目中添加Kotlin代码,只需要点击File>New并且选择各种Andorid模板的一个。如果你没有在这个菜单中看见模板列表,首先打开Project窗口,然后选择你的app模块。
![](https://box.kancloud.cn/140724c6b0942fb1b4c343d169993a37_1606x1782.png)
在出现的向导中,选择Kotlin为Source language。
![](https://box.kancloud.cn/6b274384ec0ca07faaefb25f2e8603b2_1600x1344.png)
持续完成向导,直到你操作完毕。
或者,你可以点击File>New>Kotlin File/Class来创建一个基本文件。这个New Kotlin File/Class窗口提供了各种文件类型的选择,但是你选着哪一个不重要,因为Kotlin会自动改变文件类型,如果你稍后改变了声明类型。
默认的,新的Kotlin文件被保存在src/main/java/。你可能很容易在一个目录下同时看见Kotlin和Java文件。但是如果你更喜欢从你的Java文件中分开Kotlin文件,你可以将Kotlin文件放在/main/kotlin/目录下替代。如果你这样做了,然后你需要在你的sourceSets配置中包含这个目录。
~~~
android {
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
~~~
### **将现有的Java代码转换成Kotlin代码**
***
在Andorid Studio 3.0中,打开一个Java文件,然后选择Code>Convert Java File to Kotlin File。
或者,创建一个新的Kotlin文件(File>New>Kotlin File/Class),然后粘贴你的Java代码到这个文件中——当被提示的时候,点击Yes来将代码转换成Kotlin。你可以选择Don't show this dialog next time,它会使得将Java代码片段放到你的Kotlin文件中更简单。
![](https://box.kancloud.cn/f4d783475c7949eb32981904c38e453d_1062x238.png)
### **用Kotlin调用Android APIs**
***
Kotlin提供了完整调用Java语言的操作,所以调动Android APIs看起来非常像Java代码。除非你现在能使用Kotlin的语法功能兼容这些方法调用。
这里有几个例子,和用Java语言实现的相同代码对比,它们看起来像使用Kotlin调用Andorid APIs。
**Declare Activity in Kotlin**
~~~
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity)
}
}
~~~
**Declare Activity in Java**
~~~
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
}
}
~~~
**On-click listener in Kotlin**
~~~
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
...
}
~~~
**On-click listener in Java**
~~~
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
...
}
});
Item click listener in Kotlinprivate 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
}
~~~
**Item click listener in 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语言的知识,请查阅Resources to Learn Kotlin。
- 开发
- Kotlin和Android
- 开始使用Kotlin
- Kotlin在Android中FAQ
- 学习Kotlin的资源
- 参考
- 综述
- Kotlin适合于Android
- 基本介绍
- 基本语法
- Idioms
- 基础
- 基本类型
- 包
- 控制流
- 返回和跳转
- 类和对象
- 类和继承
- 属性和字段
- 接口
- 可见性修饰符
- 扩展
- 数据类
- 密封类
- 泛型
- Nested Classes
- 枚举类
- Objects
- Delegation
- Delegated Properties
- 函数和Lambda
- 函数
- Lambda
- 内联函数
- Coroutines
- 其它
- 解构声明
- 集合
- 范围
- 类型检查和转换
- This表达式
- 相等
- 操作符重载
- 空安全
- 异常
- 注解
- 反射
- 类型安全构建器
- 类型别名
- 核心库
- 标准库
- Java互操作
- 在Kotlin中调用Java
- 在Java中调用Kotlin
- 工具
- Documenting Kotlin Code
- Using Kapt
- Using Gradle
- Compiler plugins
- 学习指南
- Getting started
- Getting Started With IDEA
- Working with the Command Line Compiler
- Konas
- Android
- Getting Started With Android Development
- Kotlin Android Extensions
- Android Frameworks
- 书籍
- 更多资源