Android 创立第一个 Kolin 语言的我的项目
一:介绍
开发工具 AS 创立一个项目选择 Language 为 Kolin 语言
在 Android Studio 3.0 以上吧应该都已反对 Kolin,我是基于 Android studio 4.1 开发的
能够在 AS3.0 以下,加载 Kolin 插件。
我应用的 Kolin 是 1.3.72,创立实现后。
在我的项目下的 build.gradle 能够查看
在 app 下的 build.gradle 的依赖
plugins {
id 'com.android.application'
id 'kotlin-android'// 利用 kolin
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.2.0'// 增加 kolin 外围库
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
testImplementation 'junit:junit:4.+'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}
对应的 MainActivity
class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val btn = findViewById<Button>(R.id.btn)// 找到一个控件
val content = findViewById<TextView>(R.id.tv)
btn.setOnClickListener {// 控件点击事件
content.setText("你哈")
Log.d("aa", "我被点击了")
}
}
}
// 这里能够看出和咱们的 Java 的不一样
Kolin 提供了不须要查找 id 的形式
须要在 app 的 build.gradle 下增加
apply plugin: ‘kotlin-android-extensions’ 的插件
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
这样的话就间接不须要 findViewById
// 导包
import kotlinx.android.synthetic.main.activity_main.*
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn.setOnClickListener {tv.setText("你哈")
Log.d("aa", "我被点击了")
}
}
1.val: 是一个只读变量,这种申明变量的形式相当于 java 中的 final 变量。一个 val 创立的时候必须初始化,因为当前不能被扭转(相当于一个常量)
var: 是一个可变变量,这是一个能够通过重新分配来更改为另一值的变量,这种申明变量的办法和 Java 中申明的形式一样
2.Kolin 没有; java 有; 号
3. 绝对于 JAVA 来说,Kolin 在编写代码是有如下劣势:代码简洁高效,函数式编程,空指针平安,反对 lambda 表达式,流式 API
4.Kolin 中的:的位置大大晋升了
(1) 定义变量类型
var name:String="Rocky"// 变量 name 为 String 类型
等价于 Java 的
String name="Rocky";
(2)定义参数的类型
fun makeTool(id:Int){// 参数 id 为 Int 类型}
等价于 Java 的
public void makeTool(Int id){}
(3)定义函数的返回值
fun getAddr(id:Int):String{// 返回值为 String 类型}
等价于 Java
public String getAddr(Int id){}
(4)申明类 / 接口的继承
创立一个 Cat 类
open class Cat{
var skill="我会上树"
var dislike="我厌恶洗澡"
}
这里的类前退出 open 关键字,它的作用是表明这个类是能够被继承的,如果不加,则表明这个类不能够被继承
class CatYellow:Cat(){
var name=” 我是猫黄上 ”
}
(5) 接口
创立 Studys 接口:
interface Studys{
fun study()
fun sleep()
}
接口的实现
class CsdnGoddess : Cat(), Studys {
override fun study() {println(name + "学习")
}
override fun sleep() {println(name + "睡觉")
}
}
(6)应用 Java 类
val intent=Intent(this,MainActivity::class.java)// 须要用:: 来应用 Java 类,留神是两个
(7)没有“new”
var list=ArrayList()
等价于 Java
List list=new ArrayList();
(8)空指针平安
空指针平安并不是不须要解决空指针,扭腰用“?”申明某个变量是容许空指针的
var num:Int?=null
val v1 =num?.toInt() // 不做解决返回 null
val v2 =num?.toInt() ?:0 // 判断为空时返回 0
val v3 =num!!.toInt() // 抛出空指针异样(用“!!”示意不能为空)
(9)用 is 取代了 instance of , 通用 in 示意区间和汇合
if(Obj is String)
if(x in 1..5)// 查看 x 数值是否在 1 到 5 区间
if(name in list)// 查看 list 中是否有某个元素(比 Java 简洁多了)
(10) 用 when 取代了 switch
fun doWhen(name:String){//String 类型参数
when(step){// 能够解决多种类型
1->"is Int"
in 2..5->"between 2-5"
"str"->addChildName(name)// 调用函数
}
}
END: 学海无涯