kotlin android开发过程中常用知识点笔记

1、定义全局对象不初始化 例如:

private lateinit var mAudioManager : AudioManager   //lateinit是关键,表示延迟初始化

2、继承与接口实现 例如:

MyExoPlayerActivity : AppCompatActivity(),OnOperationListener{}  

类似于java :

MyExoPlayerActivity extends  AppCompatActivity implements OnOperationListener{}

3、var表示可变变量,val表示不可变变量类似java中的final

4、接口回调有两种常用方式 例如:

第一种,回调接口只有一个方法,如setOnClickListener的参数OnClickListener回调监听中只有onClick(View v)一个方法,则可以直接是使用

setOnClickListener{it:View//里面写点击后要做的事情,相当于onClick(View v)方法,it就是v}

第二种,回调接口有多个方法,如setOnScrollListener的参数OnScrollListener含有onScrollStateChanged(AbsListView view, int scrollState)以及onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount)两个方法,则可以

setOnScrollListener(object : AbsListView.OnScrollListener{ //鼠标右击这里然后点击弹出栏
Generate再点击Implement Methods即可找到对应实现方法})

5、空判断

对于声明可为空的参数如(list: ArrayList<String>?)类型后面加?表示可为空,在使用时进行空判断处理,有两种处理方式

第一种字段后面加!!像java一样抛出异常如list!!.size

第二种字段后面加?为空不做处理直接返回null,或配合?:做空判断处理

 list?.size?:0 //表示若为空时返回0,不为空返回list.size

类似java

 list != null ? list.size : 0

6、when表达式常用

kotlin没有switch,用when代替,常用方式

when(参数,可以为任意类型){
条件1 -> {}
条件2 -> {}
...
}

7、数组常用方式

var list = arrayListOf("1","2","3")

8、let,with,run函数,可以省略对象名的重复书写,如一个对象user

class user{
    public string name = ”li“
    public string sex = ”man“
}

里含有属性名name和sex,赋值时需

user.name = ”li“
user.sex = ”man“

若用let函数,则可以

var user = User().let {
            it.name = "li"
            it.sex = "nan"
        }

若用with函数,则可以

var user = User()
with(user){
    name = ”li“
    sex = ”man“
}

若用run函数,则可以

 var user = User().run { //相比let省了it,相比with少了传参数
            name = "li"
            sex = "nan"
        }

also函数相当于let函数,apply函数相当于run函数,只不过他们最后会return user,而上面函数不会

9、跳转activity

startActivity(Intent(context,XXXActivity::class.java))

10、一个类中的匿名内部类需指定为 inner class才能使用该类的全局变量

11、在string中使用$字符读取字段值 例如:

var mOldX = 1
var string =  "mOldX = $mOldX”
则 string输出值为 mOldX = 1

12、类中静态方法使用

第一种,将整个类定义为静态类,里面的方法和变量都为静态

object LogU {
    private var isLog = false
    fun setIsLog(b: Boolean) {
        isLog = b
    }
}

调用方式

LogU.setIsLog()

第二种,使用companion object,类似于Java 中使用类访问静态成员,静态方法

class LogUtil {
    companion object {
        private var isLog = false
        fun setIsLog(b: Boolean) {
            isLog = b
        }
        fun <T>LogMsg(cls:Class<T>,msg :String){
            
        }
    }
}

调用方式

LogUtil.setIsLog(true)
LogUtil.LogMsg(this@MainActivity::class.java,"==")

13、经过const修饰的常量,才是java中理解的常量

const val LEVEL_LOW = 1;

等于Java,没加const修饰相当于每final

public static final LEVEL_LOW = 1;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章