Kotlin【简介】Android开发 配置 扩展
重要资源
Kotlin的背景
Kotlin 来自JetBrains的圣彼得堡团队,名称取自圣彼得堡附近的一个小岛(Kotlin Island)。
为什么选择 Kotlin
简洁
data class Customer(val name: String, val email: String, val company: String)
data class Customer(val name: String, val email: String, val company: String)
val positiveNumbers = list.filter { it > 0 }
val positiveNumbers = list.filter { it > 0 }
object ThisIsASingleton {
val companyName: String = "JetBrains"
}
object ThisIsASingleton {
val companyName: String = "JetBrains"
}
安全
var output: String
output = null // 编译错误
var output: String
output = null // 编译错误
val name: String? = null // 可空类型
println(name.length()) // 编译错误
val name: String? = null // 可空类型
println(name.length()) // 编译错误
fun calculateTotal(obj: Any) {
if (obj is Invoice)
obj.calculateTotal()
}
fun calculateTotal(obj: Any) {
if (obj is Invoice)
obj.calculateTotal()
}
互操作性
import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers
Flowable
.fromCallable {
Thread.sleep(1000) // 模仿高开销的计算
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)
import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers
Flowable
.fromCallable {
Thread.sleep(1000) // 模仿高开销的计算
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)
import kotlin.browser.window
fun onLoad() {
window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}
import kotlin.browser.window
fun onLoad() {
window.document.body!!.innerHTML += "<br/>Hello, Kotlin!"
}
工具友好
Kotlin Android开发
安装 Kotlin 插件
Settings --> Plugin --> 点击Browse repositories -->
搜索"Kotlin"(2017-5-3更新,696K下载,V1.1.2版本,57.2M)--> Install
Settings --> Plugin --> 点击Browse repositories -->
搜索"Kotlin"(2017-5-3更新,696K下载,V1.1.2版本,57.2M)--> Install
Kotlin V1.1.2下载(适用于AS 2.3-3)
创建新工程
将 Java 代码转换为 Kotlin
注意:
此命令是把【.Java文件】转换为【.kt文件】,并把【Java格式的代码】转换为【Kotlin格式的代码】,而对于【.kt文件中的Java格式的代码】,通过此命令不会转换为Kotlin格式的代码
注意:
此命令是把【.Java文件】转换为【.kt文件】,并把【Java格式的代码】转换为【Kotlin格式的代码】,而对于【.kt文件中的Java格式的代码】,通过此命令不会转换为Kotlin格式的代码
kotlin-android 插件
apply plugin: 'kotlin-android'
...
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
apply plugin: 'kotlin-android'
...
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
buildscript {
ext.kotlin_version = '1.1.2-3'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
buildscript {
ext.kotlin_version = '1.1.2-3'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
构建和发布Kotlin应用程序
**Kotlin Android 扩展插件
背景
import kotlinx.android.synthetic.main.activity_main.*
class MyActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView.setText("Hello, world!")// 而不是 findView(R.id.textView) as TextView
}
}
import kotlinx.android.synthetic.main.activity_main.*
class MyActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView.setText("Hello, world!")// 而不是 findView(R.id.textView) as TextView
}
}
kotlin-android-extensions 插件
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android-extensions'
import kotlinx.android.synthetic.main.<布局文件名称>.*
import kotlinx.android.synthetic.main.<布局文件名称>.*
import kotlinx.android.synthetic.main.<布局文件名称>.view.*
import kotlinx.android.synthetic.main.<布局文件名称>.view.*
多渠道
android {
productFlavors {
free {
versionName "1.0-free"
}
}
}
android {
productFlavors {
free {
versionName "1.0-free"
}
}
}
import kotlinx.android.synthetic.free.activity_free.*
import kotlinx.android.synthetic.free.activity_free.*
背后原理
class MyActivity: Activity()
fun MyActivity.a() {
this.textView.setText(“”)
}
class MyActivity: Activity()
fun MyActivity.a() {
this.textView.setText(“”)
}
fun Activity.b() {
this.textView.setText(“”)
}
fun Activity.b() {
this.textView.setText(“”)
}
Kotlin【简介】Android开发 配置 扩展的更多相关文章
- 使用Kotlin进行Android开发
Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者.Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并 ...
- Intent简介-Android开发
一.Intent介绍: Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...
- Ubuntu android 开发配置
1. 安装 Java SDK 1.1下载 java-sun-1.7.1.tar.gz 到Downlowd 目录下 1.2 创建java目录 sudo makrdir /usr/java 1.3解压 ...
- Android开发配置,消除SDK更新时的“https://dl-ssl.google.com refused”异常
消除SDK更新时的“https://dl-ssl.google.com refused”错误 消除SDK更新时,有可能会出现这样的错误:Download interrupted: hostname i ...
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
以前写过两个Android开发配置文档,使用NDK进行JNI开发,这样能够利用以前已经写好的C++代码. 前两篇博客地址: http://blog.csdn.net/watkinsong/articl ...
- android 开发从入门到精通
Android-Tips This is an awesome list of tips for android. If you are a beginner, this list will be t ...
- Android 开发有哪些新技术出现?
这里记录一下在知乎回答的<Android 开发有哪些新技术出现?>.知乎链接在这里. 原问题如下: Android 开发有哪些新技术出现?可以从UI设计或者一些核心的算法之类的说起 这是我 ...
- cocos2dx 开发配置的一些环境变量(mac/linux)
通常开发需要配置一些环境变量,下面把我电脑的部分配置分析一下. 1.android开发配置,ndk,sdk,ant 2.cocos2dx开发配置,cocos2d-x export COCOS2DX_R ...
- 【Bugly 技术干货】Android开发必备知识:为什么说Kotlin值得一试
1.Hello, Kotlin Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 1. ...
随机推荐
- 转:asm.js 和 Emscripten 入门教程
转:http://www.ruanyifeng.com/blog/2017/09/asmjs_emscripten.html asm.js 和 Emscripten 入门教程 作者: 阮一峰 日期: ...
- 关于 DP 的一些题目
DP 是真的好玩. 口胡一段话题解: DP 题集 1 DP 题集 2
- 【BZOJ 3996】 3996: [TJOI2015]线性代数 (最小割)
3996: [TJOI2015]线性代数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1368 Solved: 832 Description 给 ...
- 【并查集】BZOJ4668-冷战
[题目大意] 给出N个军工厂和M 个操作,操作分为两类: • 0 u v,这次操作苏联会修建一条连接 u 号军工厂及 v 号军工厂的铁路,注意铁路都是双向的; • 1 u v, Reddington ...
- hibernate核心及常用技术
一.hibernate介绍 1.hibernate概述 hibernate是轻量级Java EE持久层解决方案,管理java类到数据库表的映射(ORM:对象关系型数据映射),并提供数据查询获取的方法. ...
- Makefile-有三个非常有用的变量。分别是$@,$^,$<代表的意义
$@ 代表目标文件,$^ 代表所有的依赖文件,$< 代表第一个依赖文件. # 这是简化后的Makefilemain:main.o mytool1.o mytool2.o gcc -o $@ $^ ...
- 【BZOJ】2131: 免费的馅饼
2131: 免费的馅饼 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 508 Solved: 310[Submit][Status][Discuss ...
- PHP -- 函数基础入门
FROM : http://www.cnblogs.com/kym/archive/2010/02/14/1668300.html, http://www.cnblogs.com/kym/archiv ...
- hust 1385 islands 并查集+搜索
islands Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/problem/show/1385 Descri ...
- HDU 4493 Tutor (水题)
Tutor Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submi ...