这是我参与「第四届青训营 」笔记创作活动的的第6天.
ViewBinding小记
在第一行代码这本书里,作者建议用到的是JetBrain的kotlin插件,kotlin-android-extensions,作为一大堆findViewById的替代品,然而非常不巧,这个插件已经被弃用了,原因容我讲一下
它只支持Kotlin语言,无法支持Java,好吧这点有点牵强
这个插件在获取目标视图的时候,其实默默的生成了一个HashMap,这就导致了内存的开销增大,而且也无形中降低了语言的运行效率。
相比之下,现在Google更推荐ViewBinding和DataBinding
当然,在这里我只提一下ViewBinding
启用方法,在module的build.gradle里加入如下的代码
android {
...
buildFeatures {
viewBinding = true
}
}
然后就可以开始使用ViewBinding了。
在启用之后,Android Studio会自动为每个布局文件生成一个BInding类。
类的名字是布局文件的驼峰命名版。
然后就可以通过这个binding类来获取布局中的元素了
一个简单的使用例子
class MainActivity : AppCompatActivity() {
lateinit var mainBinding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mainBinding = ActivityMainBinding.inflate(layoutInflater)
setContentView(mainBinding.root)
mainBinding.mbtn.text = "Hello,ViewBinding"
}
}
很简单不是么,先创建一个Binding类,然后再用inflate函数生成这样一个视图
getRoot可以让渠道xml文件根元素。
对于Fragment的Binding,初始化的时候要把inflate函数换成三个参数的版本,其实原理差不多,不多叙述了。