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;

 

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