入门Kotlin(上)

来源:互联网 发布:云豹直播源码 编辑:程序博客网 时间:2024/05/29 16:39

1)在项目gradle中添加kotlin库

//1.在buildscript中添加这三个库buildscript {    //添加这3个,不然不识别kotlin库    ext.support_version = '25.1.0'    ext.kotlin_version = '1.0.6'    ext.anko_version = '0.9'}//2.在dependencies中添加这个依赖 dependencies {        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"    }

(2)在app的gradle中添加–支持xml的直接调用

apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'

(3)在kt中使用xml中的控件需要手动引入

import kotlinx.android.synthetic.main.[xml_name]*

(4)使用Collection创建一个list集合:比如listOf,setOf,arrayListOf或者hashSetOf

 val items = listOf(    "Mon 6/23 - Sunny - 31/17",    "Tue 6/24 - Foggy - 21/8",    "Wed 6/25 - Cloudy - 22/17",    "Thurs 6/26 - Rainy - 18/11",    "Fri 6/27 - Foggy - 21/10",    "Sat 6/28 - TRAPPED IN WEATHERSTATION - 23/18",    "Sun 6/29 - Sunny - 20/7"    )

(5)类型标识符

 val : 不可变 var : 可变 fun :方法 inline: 不知道  一个内联(inline)函数可以被具体化(reified),这意味着我们可以在函数中得到并使用范型类型的Class object:不知道,如果想要在一个类A中调用类B的方法(相当于静态调动),那么类B就得用object定义【object类似于对象】 operator : 不知道 constructor(){} bean类的构造方法在这里定义

(6)基本类型与java的区别

  1. Kotlin中全部是对象【比如使用Int、Long、Double】
  2. 基本类型不会自动转型,若想让他转型,必须调用相应的方法
    val i:Int=7
    val d: Double = i.toDouble()
  3. Char 不能作为数字处理

  4. java中的 | 和 & 在kotlin中被 or 和 and 代替【还有很多其他的位操作符,比如sh1, shs, ushr, xor或inv ;

    查看更多:http://kotlinlang.org/docs/reference/basic-types.html#operations】

  5. String字符串可以像数组一样访问

    *5.1*val s = "Example"val c = s[2] // 这是一个字符'a'*5.2*// 迭代Stringval s = "Example"for(c in s){    print(c)}
  6. 创建变量时,可以指定类型,也可以不指定类型,kotlin会根据你的赋值,自动判断类型

    • 6.1 不定义类型

      val s = “Example” // A String
      val i = 23 // An Int

    • 6.2 手动定义类型

      val a: Any = 23
      val c: Context = activity

  7. kotlin创建bean对象时的属性,就好比java中创建的public属性,kotlin的每个属性默认跟着一对set和get方法,我们创建的时候,可以不写,也可以根据自己的需求改写这些set和get方法[预留字段是:field]

    /**        如果需要在getter和setter中访问这个属性自身的值,它需要创建一个backing field。        可以使用field这个预留字段来访问,它会被编译器找到正在使用的并自动创建。        需要注意的是,如果我们直接调用了属性,那我们会使用setter和getter而不是直接访问这个属性。        backing field只能在属性访问器内访问。        */
    public classs Person {        //属性1        var name: String = ""//注意:set get紧跟着这个属性,不带{}            get() = field.toUpperCase()            set(value){                field = "Name: $value"            }        //属性2        var age: Int  = 1    }

8. Anko的什么?

  • 8.1 Anko是JetBrains开发的一个强大的库。它主要的目的是用来替代以前XML的方式来使用代码生成UI布局。
  • 8.2 Anko也可以用来简化代码,例如: val forecastList: RecyclerView = find(R.id.forecast_list) 这就是Auto库简化的结果,可以直接用 find,并且不用进行类型转换
    。这是因为Anko使用了扩展函数在Android框架中增加了一些新的功能。我们将会在以后看到扩展函数是什么,怎么去编写它

9.Kotlin 可以进行函数的扩展

9.1 扩展函数数是指在一个类上增加一种新的行为,甚至我们没有这个类代码的访问权限
9.2 扩展函数可以被声明在任何文件中,因此有个通用的实践是把一系列有关的函数放在一个新建的文件里。比如放在【.file】文件中

10.主线程中的耗时操作 doAsync{}代替了Java中的AsyncTask,并且比它更安全,使用uiThread{}返回主线程操作,

doAsync{
Request(url).run()
uiThread {
longToast(“Request
performed”) } }

原创粉丝点击