最近在看一些kotlin相关的一些东西,有些细节做一下记录
1. kotlin配置
Android Studio3.0以下是需要下载单独的kotlin插件配置如下
- gradle 文件需要配置
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
sourceSets {
main.java.srcDirs += 'src/main/kotlin' // 注明Kotlin路径
}
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" //直接使用build.gradle中的kotlin版本
在根目录的gradle文件中需要添加
dependencies { classpath 'com.android.tools.build:gradle:2.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
- kotlin开发Android
获取控件的时候直接获取id就可以,相当于 Kotlin 把findviewbyid封装了
tv_text22.text="""你好 很高兴见到你,Kotlin""".trimMargin()
tv_text22. textSize= 26F
tv_text22.setTextColor(resources.getColor(R.color.colorPrimary))`
- 关键字
in:属于某个范围内
for (i in 1 .. 100) {
Log.e(TAG, "name======{$i}")
}
is:是否是某种类型
if (tv_text22 is TextView) {
toast("类型判断对了")
}
downTo从大到小于1..100中..相对应
for (i in 100 downTo 1) {
Log.e(TAG, "name======{$i}")
}
step 可以进行任意数量的迭代,而不是每次变化都是1 下方标识每次变化是10
for (i in 100 downTo 1 step 10) {
Log.e(TAG, "name======{$i}")
}
"""表示可以输入多行,相当于"/"
tv_text22.text="""你好 很高兴见到你,Kotlin
我没有用换行符就换行了""".trimMargin()
?: 非空判断符区别于? ?:表示的是当左边为空的时候返回右边的值,?表示的是当为空的时候不做处理
val a = arrayList?.size?:-1
新建数组
val arrayList = arrayListOf<Int>()空数组
val arrayList = arrayListOf<Int>(1,2,3)//{[1, 2, 3]}
val arrayList = intArrayOf(1, 2, 3)//[1, 2, 3]
map集合
// val map = mapOf(1 to "你" ,2 to "wo")//不可改变map
//
// val map= emptyMap<String,String>()//空map
//
val map = hashMapOf<Int,String>(1 to "你" ,2 to "wo")//可变map
map.put(9,"他")
for ((k,v)in map) {
Log.e(TAG, "k======$k"+"v=====$v")
}
Log.e(TAG, "集合======$map")
list集合也分为两种 可变和不可变
val list = listOf("a", "b", "c")//不可变集合
val mList = linkedSetOf("a", "b", "c")//可变集合
mList.add("d")