注:转载或修改转载请在文章开头标明本文地址,笔者重在分享禁止用于其他用途微
信公众号:

近几年中Kotlin在Android使用上面逐步上升,开发者们很久之前就发现使用kotlin开发更快捷,越来越多的开发者采用Kotlin来开发Android程序。在今年的 Google I/O 大会上,我们很高兴的将Kotli做为Android的官方开发语言。

使用Kotlin来开发Android有以下优势:

  • 表达清晰、简洁、扩展性强
  • 类型安全
  • 空指针安全
  • 和JAVA、C++ 无缝对接

因此,我们对使用kotlin的开发者做了更好的支持,如果你对Kotlin比感兴趣,首先需要将AndroidStuido升级到3.0版本,kotlin工具直接绑定到了这个版本当中。如果你在使用中遇到了问题
请参考kotlin在Android Studio中的问题

在debug方面,你可以像以前Debug Java来调试你的应用。

你不必纠结于使用kotlin语言还是Java语言去开发Android,kotlin提供了Java语言的互通性,这表示kotlin文件中你可以不用annotation或kotlin指定语意义,就可以在直接在kotlin里面调用java的方法,这意味着你的项目中可以并存Java和kotlin的代码。关于内容,请参考kotlin互操作文档

开始试用Kotlin

Android Studio3.0上你可以很方便的创建一个Kotlin文件项目,转换Java语言为Kotlin语言,并且你可以用你一切Andoid Studio的工具在Kotlin代码上,例如autocomplete, lint checker, refactoring, debugging等

  • 创建一个包含Kotlin的项目

    1. 在Android Studio中, 点击 File > New > New Project.
    2. 在初始页面,点击Include Kotlin support
    3. 点击下一步继续,直到你的项目创建完成

    当你选择了一个Activity模版,其将会提供Kotlin代码,只是一些手机或者平板提供了一些常用的Kotlin代码,其余的只会从Java代码转换成Kotlin代码,虽然你可以从官网获得Kotlin代码,但这些代码可能并没有用到Kotlin最好的语言特征。

  • 将Kotlin添加到已经存在的项目
    如果想将Kotlin增加到已经存在的项目中,点击 File > New选择一个模版。如果你没有看到这个菜单,需要首先打开Project窗口并选择你的app组件。

    当配置向导出现,选择Source Language选择Kotlin

其他的方式,你可以File > New > Kotlin File/Class去创建一个基本的文件,New Kotlin File/Class窗口提供了一些文件的选择。你不必担心你用了什么语言,因为在你更改了类型之后,Kotline会自动转换文件类型。

Kotlin文件保存在src/main/java/,你会发现Kotlin文件和Java文件在一个文件夹里面,但是如果你想让你的Kotlin文件和Java文件分开,你可以用src/main/kotlin/代替,如果你需要这样做,只需要在你的配置中添加下面的语句就可以了。

Android {     sourceSets {         main.java.srcDirs += 'src/main/kotlin'     }}
  • 将已有的Java代码转换为Kotlin代码

在Android Studio 3.0,打开一个Java文件然后选择Code > Convert Java File to Kotlin File.
或者创建一个Kotlin文件(File > New > Kotlin File/Class),然后复制你的java代码到Kotlin文件中。当有提示的时候,点击Yes将java代码转换为Kotlin代码,并且可以勾选Don't show this dialog next time来方便你下一次转换。

  • 使用包含Kotlin的API

Kotlin提供和Java语言的互通性,所以调用Android API代码看起来像调用Java,除此之外你可以将这些方法调用与Kotlin语法特征相结合。

下面是一些例子,是在Kotlin中调用Android APIs和Java中调用的区别。

在Kotlin中声明Activity

class MyActivity : AppCompatActivity() {  override fun onCreate(savedInstanceState: Bundle?) {    super.onCreate(savedInstanceState)    setContentView(R.layout.activity)  }}
在Java中声明Activity
public class MyActivity extends AppCompatActivity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity);  }}

在Kotlin中的OnClick

val fab = findViewById(R.id.fab) as FloatingActionButtonfab.setOnClickListener {  ...}

在Java中的OnClick

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);fab.setOnClickListener(new View.OnClickListener() {  @Override  public void onClick(View view) {    ...  }});

在Kotlin中的Item Click

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中的Item Click

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

使用JNI与Kotlin

要声实现native(C或C ++)代码的代码,您需要使用external修饰符来标记它:

external fun foo(x: Int): Double

使用Kotlin的影响

  • kotlin对Apk size和方法数量的影响:

kotlin在运行时可能会在你的debug APK 中增加7000个方法和1M的大小,如果你使用Koline替换如Guava、RxJava等其他的库,影响可能会小一些。但是你可以在后期通过项目优化或者是混淆来减小包的大小。

  • kotlin的性能影响:

kotlin没有直接的性能影响,但是它和Java一样性能方面的影响和你的使用息息相关。
比如说:在多个collection实例中,重复的复制操作会影响GC性能,调用一个接受非空类型的方法,会增加一个空检查的方法调用(但是你可以通过设置-Xno-param-assertions来禁用编译时运行空指针检查)

由于kotlin运行在JDK6以上,因此所有的版本都可以安全的使用kotlin

文档

  • Kotlinlang.orgKotlin的官方网站,包含了所有的基本语法和标准库参考
  • Kotlin Koans Online在线IDE中的一系列练习,可帮助您学习Kotlin语法

视频

  • Youtube
    通过搜索 “Kotlin on Android" 可以看到高质量的技术讨论

  • O'Reilly course
    一个8小时的Kotlin课程,视频的讲师是JetBrains公司的开发者Hadi Hariri,介绍Kotlin编程设计。需要购买订阅,7天免费试用。

  • Treehouse course

  • Udemy course“Kotlin初学者”,从头教起,需要购买订阅,初学者有折扣优惠

  • Kotlin in Action: 由 JetBrains 公司kotlin的开发者Dmitry Jemerov 和 Svetlana Isakova编写
  • Kotlin for Android Developers最早的kotlin书籍之一,由Antonio Leiva编写

社交渠道

  • @kotlinkotlin 的官方twitter
  • Kotlin Communitykotlinlang.org的线下项目和组
  • Kotlin Slackkotlin使用者讨论社区
  • Talking Kotlinkotlin的半月刊博客

更多相关文章

  1. 在Android中用纯Java代码布局
  2. android实现横竖屏不间断播放文件
  3. Android(安卓)上实现水波特效二--优化
  4. android 调试利器之IDA
  5. afinal logoAndroid的快速开发框架 afinal
  6. MVC架构设计与三层模型 & MVP思想精髓与解耦
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)Service 优先级
  2. Android开发指南-用户界面-对话框
  3. Android(安卓)App应用包增量升级(one)
  4. java后台程序员转android 《三》之 集成
  5. 为Android开发者整理的Google I/O开发者
  6. Android(安卓)集成 FFmpeg (四) 轻松实现
  7. Android(安卓)复杂的列表视图新写法 Mult
  8. android 实用干货 - 收藏集 - 掘金
  9. react-native启动流程(android端)
  10. 浅析android的mvp模式