Kotlin使用
在Android Studio 3.0(https://developer.android.google.cn/studio/preview/index.html)版本中已经完全支持了Kotlin了,你可以非常方便的通过Kotlin创建一个新的项目,可以将Kotlin的文件添加到你之前已经存在的项目中去,也可以将一个java语言的代码转换成Kotlin。在Kotlin代码中你可以使用所有的AS中的工具,如代码补齐等等。。
使用Kotlin创建一个新的项目
- 在AS中,点击File>New>New Project.或者你要打开AS,进入欢迎界面,点击Start a new Android Studio project。
- 在进入后的第一个界面,选择Include Kotlin support。这是和Java 语言的项目创建时的不同之处。
- 点击Next,按着向导完成创建。
在已经存在的项目中添加Kotlin
在这个项目中允许Kotlin和Java代码并存,
Source Language 选择Kotlin创建的Activity就是使用的Kotlin语言。
在默认情况下Kotlin代码会和Java代码在同一个路径下面,如果你想把他们分开可以设置SourceSet配置新的路劲进去。如下:
android {
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
将Java代码转换成Kotlin代码
在AS 3.0中,打开一个java文件,Code>Convert Java File to Kotlin File.
还有更有意思的是,如果你在一个java文件中复制代码到一个Kotlin时,它会提示你如下,
它竟然可以帮助你直接转换成Kotlin代码,,,
在Kotlin中使用Android APIs
下面是几个在Kotlin和Java中的对比:
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 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
}
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;
}
};
扫描下面公众号获取更多信息: