作者:Antonio Leiva

时间:Dec 19, 2016

原文链接:https://antonioleiva.com/kotlin-integrations-android-sdk/

使用Kotlin语言不仅仅简化你的代码,而且也可以简化从Kotlin调用Java代码。

这是怎样工作的?简单地使用一些通用结构就可以得到Kotlin的感觉。

在这篇文章中,你将看到一些例子,它是怎样提升相同代码。它也预防Java代码包含模板部分。

Kotlin与Android SDK 集成

如Android 框架是基于Java库,之前我们提到的一切关于Java应用都完全适用于Android。

让我们来看一些例子。

映射到属性的getter和setter方法

在前面几篇文章中,我们已经看到getter和setter。这只是解释。

如我们讨论的,Kotlin使用属性而不是 字段+getter+setter,赋值的方式与在Java public域中get一样。

但是我们也知道,简单的赋值可以执行代码,或我们实现的自定义操作。

这类的规则是在Java中找到的任何setX和getX都被映射到Kotlin X。

例如,如果你在用TextView,你可以用类似属性的语句设置text:

 val textView: TextView = ...
textView.text = "My Text"

当然,这可以应用到任何类。你用相同的方法,在Activity能够访问(例如)applicationContext 或者 layoutInflater:

 layoutInflater.inflate(R.layout.view_item, parent)
val hello = applicationContext.getString(R.string.hello)

这不用担心性能,它们事实上是映射到原始的getter和setter方法,所以与直接调用它们一样。

接口方法映射到Lambda表达式

这令人惊奇。对于Android的任何简单事情,不是要创建匿名类吗?而使用Kotlin,你不需要为Android侦听器这样做。

条件是这样:需要一个接口对于一个方法。典型的例子是View类的setOnClickListener。

你能够做这样简单的一句:

 view.setOnClickListener { navigateToNextActivity() }

看多么容易?

如果你需要从原接口返回视图,你也可以覆盖它:

 view.setOnClickListener { v -> navigateWithView(v) }

说明:这是什么怪结构?它是Lambda表达式,它表示函数的输入参数是箭头左边定义的方法。箭头右边是函数体,上一行是结果。我们将在后续文章中讨论这些。

结论

在Kotlin项目中,集成其他Java库是很容易的,尤其是Android框架。

如何你要进一步学习Kolin,请加入这个列表,你就可以在你的收件箱中收到这些文章。

Kotlin与Android SDK 集成(KAD 05)的更多相关文章

  1. 【笔记】android sdk集成的eclipse中导入项目

    android sdk集成的eclipse中导入项目 想要把旧的ADT项目,一模一样的导入进来,需要: 1.把项目放到,非当前ADT的workspace目录下: 2.从Project中Import,选 ...

  2. 用Kotlin实现Android定制视图(KAD 06)

    作者:Antonio Leiva 时间:Dec 27, 2016 原文链接:https://antonioleiva.com/custom-views-android-kotlin/ 在我们阅读有关c ...

  3. 人脸识别Android SDK集成

    目前我们的应用内使用了ArcFace 的人脸检测功能,这里就和大家分享一下我们的集成过程和一些使用心得~ 集成ArcFace FD 的集成过程非常简单在 ArcFace FD 的文档上有说明支持的系统 ...

  4. 极光推送android sdk集成步骤

    推送,用极光,大家都说好,哈哈. 进入正题: 1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持.(基本上现在都已经支持了,循例说一下)  , ...

  5. Android SDK教程

    Android SDK 网络问题解析 Android 客户端网络不稳定,会导致App 有时候无法及时收到 Push 消息. 很多开发者认为这是因为 JPush 推送不稳定.延迟,甚至有时候认为 JPu ...

  6. Kotlin的android扩展:对findViewById说再见(KAD 04)

    作者:Antonio Leiva 时间:Dec 12, 2016 原文链接:http://antonioleiva.com/kotlin-android-extensions/ 你也许已厌倦日复一日使 ...

  7. 用Kotlin创建第一个Android项目(KAD 01)

    原文标题:Create your first Android project using Kotlin (KAD 01) 作者:Antonio Leiva 时间:Nov 21, 2016 原文链接:h ...

  8. Android Studio集成百度地图SDK

    1.建议先阅读百度地图官方的继承指南,针对了Eclipse和Android Studio. 百度官方集成指南 2.下载百度地图SDK Android SDK v4.1.1 下载有两种: 1.一键下载( ...

  9. Android消息推送 SDK 集成指南

    使用提示 本文是 Android SDK 标准的集成指南文档. 匹配的 SDK 版本为:r1.8.0及以后版本. 本文随SDK压缩包分发.在你看到本文时,可能当前的版本与本文已经不是很适配.所以建议关 ...

随机推荐

  1. .NET Core系列 :4 测试

    2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The Sta ...

  2. Java初始化过程

    这篇文章主要讲解Java在创建对象的时候,初始化的顺序.主要从以下几个例子中讲解: 继承关系中初始化顺序 初始化块与构造器的顺序 已经加载过的类的初始化顺序 加载父类,会不会加载子类 创建子类对象会不 ...

  3. 将 instance 部署到 OVS Local Network - 每天5分钟玩转 OpenStack(130)

    上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构.launch 一个 instance,选择 first_local_net ...

  4. 【Web动画】SVG 实现复杂线条动画

    在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: [Web动画]SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多. 很多时候,我们无法人工去 ...

  5. 理解nodejs模块的scope

    描述 原文档地址:https://docs.npmjs.com/misc/scope 所有npm模块都有name,有的模块的name还有scope.scope的命名规则和name差不多,同样不能有ur ...

  6. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  7. webapp应用--模拟电子书翻页效果

    前言: 现在移动互联网发展火热,手机上网的用户越来越多,甚至大有超过pc访问的趋势.所以,用web程序做出仿原生效果的移动应用,也变得越来越流行了.这种程序也就是我们常说的单页应用程序,它也有一个英文 ...

  8. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  9. 云瓣影音网站&&微信端(已开源)

    随着该项目的发布到线上(小打小闹),即将又要开启另一段崭新的旅程.强迫自己停下来写写所学所得,个人认为总结和分享是一种很棒的学习方式.那让我们先来瞧瞧项目长的什么样.如果着急要源码的朋友,可以下拉到最 ...

  10. jquery-treegrid树状表格的使用(.Net平台)

    上一篇介绍了DataTable,这一篇在DT的基础之上再使用jquery的一款插件:treegrid,官网地址:http://maxazan.github.io/jquery-treegrid/ 一. ...