亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Android 使用View Binding的方法詳解

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

前言

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

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

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

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

使用

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

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

用法

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

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

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

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

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

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

現在,綁定類的實例可用于引用任何視圖:

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

區別

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

總結

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

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

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

By the way,View Binding目前還不支持include標簽引入的xml。View Binding功能的完善、在未來的地位和作用、以及能否超越Android Kotlin Extensions,我們仍需持續關注其后續版本。

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

標簽: Android
相關文章:
主站蜘蛛池模板: 黄色毛片大全 | 婷婷99视频精品全部在线观看 | 99久久国产免费福利 | 成人午夜网址 | 国产玖玖在线观看 | 男女叼嘿视频大全免费看 | 久久精品综合国产二区 | 亚洲午夜免费视频 | 亚洲 欧美 日韩 在线 | 国产一区二区三区不卡免费观看 | 韩国不卡1卡2卡三卡网站 | 最新更新国内自拍视频 | 中国黄色免费 | 免费国产一区二区三区 | 国产美女一级高清免费观看 | 欧美三级不卡视频 | 国产欧美亚洲精品综合在线 | 一级欧美一级日韩片 | 特黄特黄aaaa级毛片免费看 | 亚洲免费成人网 | 国产欧美日韩综合精品二区 | 182tv免费福利夜在线观看 | 国产欧美亚洲精品第3页在线 | 欧美一级视频在线高清观看 | 亚洲综合色视频 | 欧美黄区 | 久久成人免费播放网站 | 久久久久久久免费 | 亚洲18色 | 96精品视频在线播放免费观看 | 成人免费视频一区二区 | 精品视频在线观看你懂的一区 | a毛片在线免费观看 | 国产制服丝袜在线观看 | a级午夜毛片免费一区二区 a级午夜理论免费毛片 | 欧美一区二区免费 | 夜色55夜色66亚洲精品网站 | 国产成人精品视频一区二区不卡 | 亚洲视频欧美 | 国产精品福利一区二区亚瑟 | 91精品一区二区三区在线观看 |