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. ...
随机推荐
- .Net使用Redis详解之ServiceStack.Redis
序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redi ...
- SpringBoot项目在IntelliJ IDEA中实现热部署(简单方式)
------ 开启idea自动make/build功能 ----- 1.CTRL + SHIFT + A --> 查找make project automatically --> ...
- 牛客网 牛客小白月赛12 B.华华教月月做数学-A^B mod P-快速幂+快速乘
链接:https://ac.nowcoder.com/acm/contest/392/B来源:牛客网 华华教月月做数学 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其 ...
- .htaccess文件
前言 看了几篇文章,发现自己对于如何维护普通的服务器安全完全不会,先从简单的.htaccess来研究吧 .htaccess文件的作用,就是更改httpd.ini文件中的配置,但作用范围仅限当前文件夹 ...
- HDU 5876 Sparse Graph(补图上BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5876 题意: 有一个 n 个点无向图,再给你 m 对顶点, 代表着这 m 对顶点之间没有边, 除此之外 ...
- 牛客练习赛9 F - 珂朵莉的约数
题目描述 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘积 求s的约数个数mod 1000000007 输入描述: 第一行两个正整数n,m第二行一个长 ...
- 洛谷P1221 最多因子数 [搜索,数学]
题目传送门 最多因子数 目描述 数学家们喜欢各种类型的有奇怪特性的数.例如,他们认为945是一个有趣的数,因为它是第一个所有约数之和大于本身的奇数. 为了帮助他们寻找有趣的数,你将写一个程序扫描一定范 ...
- java 简单类
package 面向对象编程_封装性; //1.类名称必须存在有意义,例如Book.Emp //2.类之中所有的属性必须用private封装,封装后的属性必须提供有setter和getter方法 // ...
- CentOS使用
centos7编译安装git最新版 CentOS下 pycharm开发环境搭建之无穷无尽的问题 CentOS 7入门操作基础教程 centos中文站 CentOS7 常用命令集合 centos中有vi ...
- 【HDU 6017】 Girls Love 233 (DP)
Girls Love 233 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...