电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Android 使用View Binding的方法詳解

瀏覽:74日期:2022-09-26 16:40:34

前言

Android Studio穩(wěn)定版發(fā)布了3.6版本,帶來了一些新變化:首先外觀,啟動頁變了,logo改了,更顯現(xiàn)代化;增加Multi Preview功能,能同時預(yù)覽多個尺寸屏幕的顯示效果;模擬器支持多屏;也終于支持全新的視圖綁定組件View Binding;等。

之前我們與視圖交互的方式有findViewById、kotlin中引入Android Kotlin Extensions后直接通過id進行訪問。前者模板化嚴重,重復代碼多;后者最為方便。現(xiàn)在有了新的選擇?View Binding,官方解釋:

通過視圖綁定功能,您可以更輕松地編寫可與視圖交互的代碼。在模塊中啟用視圖綁定之后,系統(tǒng)會為該模塊中的每個 XML 布局文件生成一個綁定類。綁定類的實例包含對在相應(yīng)布局中具有 ID 的所有視圖的直接引用。

在大多數(shù)情況下,視圖綁定會替代 findViewById。

使用

View Binding可按模塊啟用。要在某個模塊中啟用,在該模塊的build.gradle中添加如下配置:

android { ... viewBinding { enabled = true } }

用法

當某個模塊啟用View Binding后,系統(tǒng)會為該模塊中包含的每個 XML 布局文件各生成一個綁定類。每個綁定類均包含對根視圖以及具有id 的所有視圖的引用。綁定類的類名是xml的名稱后面加“Binding”。

例如,假設(shè)某個布局文件名為 比如activity_main.xml:

<LinearLayout ... > <TextView android: /> <TextView android:text='no id'/> <Button android: /></LinearLayout>

那么生成的綁定類類名是ActivityMainBinding。這個類有兩個成員變量tvName和btnOpen,還包含一個getRoot()方法,返回根視圖,此例中返回LinearLayout。

要獲取綁定類的實例,可以通過靜態(tài) inflate() 方法。

private lateinit var binding: ActivityMainBinding@Overridefun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(inflater) setContentView(binding.root)}

現(xiàn)在,綁定類的實例可用于引用任何視圖:

binding.tvName = 'name'binding.btnOpen.setOnClickListener{ Log.d(TAG,'btnOpen click')}

區(qū)別

與findViewById的區(qū)別:空安全和類型安全,不存在因引用了一個錯誤的id而導致的空指針異常或者類型轉(zhuǎn)換異常。 與databinding的區(qū)別:databinding僅處理使用 <layout> 代碼創(chuàng)建的數(shù)據(jù)綁定布局;View Binding不支持布局變量或布局表達式,因此它不能用于在xml中將布局與數(shù)據(jù)綁定。 與Android Kotlin Extensions的區(qū)別:在使用上,后者簡單粗暴,直接id進行訪問,而View Binding需要創(chuàng)建綁定類的實例;后者有一些不友好的地方,比如相同的id存在于多個xml,容易導錯包,如果包導錯了,會有可能別的View用錯id導致空指針,而View Binding顯然不會有這種情況。

總結(jié)

如果與findViewById或者其他View注入框架進行選擇,建議選擇View Binding,代碼更為簡潔和安全。

如果是使用databinding的項目,可以使用View Binding作為補充,用來處理非<layout>為根標簽的xml。(ps:貌似不可能出現(xiàn)這種場景?也應(yīng)該避免這種場景,畢竟類生成過多會影響build速度和增加安裝包體積)

與Android Kotlin Extensions進行選擇,目前來看,無最優(yōu)解,二者都很好,取決于開發(fā)者是想開發(fā)效率最大化、代碼簡潔使用方便(Android Kotlin Extensions)還是傾向于穩(wěn)健、出錯幾率最小化(View Binding)。

By the way,View Binding目前還不支持include標簽引入的xml。View Binding功能的完善、在未來的地位和作用、以及能否超越Android Kotlin Extensions,我們?nèi)孕璩掷m(xù)關(guān)注其后續(xù)版本。

到此這篇關(guān)于Android 使用View Binding的方法詳解的文章就介紹到這了,更多相關(guān)android View Binding使用內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 济南保安公司加盟挂靠-亮剑国际安保服务集团总部-山东保安公司|济南保安培训学校 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 999范文网_优质范文下载写作帮手 | 杭州货架订做_组合货架公司_货位式货架_贯通式_重型仓储_工厂货架_货架销售厂家_杭州永诚货架有限公司 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 手持气象站_便携式气象站_农业气象站_负氧离子监测站-山东万象环境 | bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 洛阳网站建设_洛阳网站优化_网站建设平台_洛阳香河网络科技有限公司 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 医院专用门厂家报价-医用病房门尺寸大全-抗菌木门品牌推荐 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | pbootcms网站模板|织梦模板|网站源码|jquery建站特效-html5模板网 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | 爆炸冲击传感器-无线遥测传感器-航天星百科 | 体坛网_体坛+_体坛周报新闻客户端 | 步进电机_agv电机_伺服马达-伺服轮毂电机-和利时电机 | 台式恒温摇床价格_大容量恒温摇床厂家-上海量壹科学仪器有限公司 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 水质监测站_水质在线分析仪_水质自动监测系统_多参数水质在线监测仪_水质传感器-山东万象环境科技有限公司 | 锤式粉碎机,医药粉碎机,锥式粉碎机-无锡市迪麦森机械制造有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | 家用净水器代理批发加盟_净水机招商代理_全屋净水器定制品牌_【劳伦斯官网】 | TPU薄膜_TPU薄膜生产厂家_TPU热熔胶膜厂家定制_鑫亘环保科技(深圳)有限公司 | 无线遥控更衣吊篮_IC卡更衣吊篮_电动更衣吊篮配件_煤矿更衣吊篮-力得电子 | 江西自考网 | 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 |