使用方法:

image.png
在module的gradle文件下加入
android {
....
viewBinding {
enabled = true
}
}
加入之后ViewBinding后,創(chuàng)建的每一個xml布局都會生成一個對應(yīng)的xxxbinding類
比如一開始生成的activity_main.xml對應(yīng)的文件就是 ActivityMainBinding
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}

image.png
上面的三個屬性是layout 布局文件的id。
另外還有個方法 就是getRoot 方法 返回對應(yīng)跟布局view。
注 如果不想生成就在對layout 的根布局里面加上屬性
tools:viewBindingIgnore="true"
總結(jié):
相較于databinding的區(qū)別 viewbinding 的功能好像更少無法進(jìn)行雙向綁定。
但是它的優(yōu)點(diǎn)也是明顯的不需要對原有的xml 文件進(jìn)行侵入。而databinding 首先是侵入式的。
且在xml 進(jìn)行這種綁定也容易帶來很多問題
說句實(shí)話,我不相信 DataBinding。對于它想解決的問題來說,這種方案在過于復(fù)雜。在使用 DataBinding 的時候,需要把代碼邏輯放到 XML 布局中,這聽起來很不錯,但是經(jīng)驗(yàn)豐富的開發(fā)人員都不會這么做,這個做法也是 Databinding 的另一個缺點(diǎn)
因此使用viewbinding 更好。
思考
一個庫功能是否復(fù)雜也許并不重要,而是適用于所對應(yīng)的環(huán)境。并且對原有代碼影響越少越好