a.? binding綁定fragment
1.綁定類型舉例: 對于PinLoginFragment,系統(tǒng)自動生成FragmentPinLoginBinding
2.解析布局時(shí)刻像,直接使用layoutInflater解析器,一般將onCreateView()里面的container傳進(jìn)去并闲,記得最后false
3.返回需要View? 類型细睡,所以return binding.root
4.通過binding.控件id? ?->使用解析xml的所有控件
b. fragment之間數(shù)據(jù)傳遞
1.條件:在同一個(gè)activity的fragmentContainer里面
2.創(chuàng)建管理共享數(shù)據(jù)的類
3.在需要保存跨fragment數(shù)據(jù)的類里面創(chuàng)建? ?“管理共享數(shù)據(jù)類的對象【比如叫viewModel】”溜徙,并加上擴(kuò)展函數(shù)? by? activityViewModels()
4.在共享數(shù)據(jù)類中初始化變量湃缎,= MutableLiveData(帶保存Value的類型)
5.通過變量名.postValue()可以隨時(shí)改變其值,【注意:在管理共享變量類外蠢壹,需要先找到它的實(shí)例化對象】
6.在fragment中嗓违,利用viewModel.共享數(shù)據(jù)類里定義的變量.observe(viewLifeCircleOwner){ }實(shí)現(xiàn)數(shù)據(jù)的監(jiān)聽與傳遞
c.高階函數(shù)回調(diào)
1.將callback:(String)->Unit當(dāng)作參數(shù)寫入方法【例如方法名叫addTrack】,
2.調(diào)用addTrack時(shí)图贸,不必傳String的值蹂季,應(yīng)該寫callback方法的具體內(nèi)容
3.調(diào)用callback變量時(shí),傳callback里需要傳的參數(shù)的具體值
d.控件動畫效果
1.調(diào)用ObejectAnimator.ofFloat()方法,里面?zhèn)髦凳枞眨偻ㄟ^apply設(shè)置duration,repeatCount,repeatMode屬性乏盐,最后記得調(diào)用start()開啟這個(gè)動畫效果
2.在ofFloat()里面,可以傳(View,"改變的屬性名【系統(tǒng)定義好的】"制恍,屬性值變動范圍)
e.在類的主構(gòu)造函數(shù)
1.(val或var? 屬性:類型)能接受外部調(diào)用時(shí)的值父能,也能在類里面當(dāng)屬性使用,但一個(gè)方法fun login()里的變量净神,就只能被調(diào)用時(shí)接收值
2.主構(gòu)造函數(shù)或方法()里的值可以初始化一個(gè)默認(rèn)值何吝,方法被調(diào)用時(shí),可以不必為有默認(rèn)值的參數(shù) 傳值
f.儲存屬性
1.color? ? ? 找到value? ->? color
2.string? ?value? ->? string
3.styles? ?value->創(chuàng)建styles的Vaule Resource File
將幾個(gè)屬性保存在一起鹃唯,調(diào)用時(shí)爱榕,幾個(gè)已設(shè)置好的屬性可以同時(shí)設(shè)置
調(diào)用方法:在一個(gè)view的xml里style = 找到對應(yīng)的style name
g.自定義屬性
1.創(chuàng)建:value里建attrs文件,寫自定義控件的自定義屬diy性? ?-》屬性名 +屬性類別
2坡慌。使用:在init{}里找到context,調(diào)用其obtainStyledAttributes(attrs,R.styleable.命名).apply{}方法黔酥,用變量儲存? this.getColor等方法,找到對應(yīng)自定義屬性洪橘,和設(shè)置的顏色
h.申請App跳轉(zhuǎn)權(quán)限
1. AndroidManifest.xml文件里使用<user-permissions? name =? 電話跪者,相機(jī),相冊熄求,聯(lián)系人列表渣玲,使用網(wǎng)絡(luò)對該指定功能注冊
2.檢測權(quán)限 int result 記錄checkSelfPermission(Manifest.permission.申請名稱)的返回值,返回值為PackageManager.Permission_DENIED或PackageManager.Permission_GRANTED
3.判斷result為PackageManager.Permission_DENIED后
調(diào)用registerForActivityResult(ActivityResult.RequestPermission()){? }申請權(quán)限