最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 使用View Binding的方法詳解

 更新時間:2020年03月15日 08:45:19   作者:zengd0  
View Binding是一項功能,使您可以更輕松地編寫與視圖交互的代碼。在模塊中啟用視圖綁定后,它將為該模塊中存在的每個XML布局文件生成一個綁定類。這篇文章主要介紹了Android 使用View Binding的方法,需要的朋友可以參考下

前言

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

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

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

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

使用

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

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

用法

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

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

<LinearLayout ... >
  <TextView android:id="@+id/tvName" />
  <TextView android:text="no id"/>
  <Button android:id="@+id/btnOpen"/>
</LinearLayout>

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

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

private lateinit var binding: ActivityMainBinding

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

總結(jié)

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

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

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

By the way,View Binding目前還不支持include標(biāo)簽引入的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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android中Service和Activity相互通信示例代碼

    Android中Service和Activity相互通信示例代碼

    在android中Activity負(fù)責(zé)前臺界面展示,service負(fù)責(zé)后臺的需要長期運行的任務(wù)。下面這篇文章主要給大家介紹了關(guān)于Android中Service和Activity相互通信的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • 詳解Android之圖片加載框架Fresco基本使用(一)

    詳解Android之圖片加載框架Fresco基本使用(一)

    本篇文章主要介紹了詳解Android之圖片加載框架Fresco基本使用(一) ,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • Android仿網(wǎng)易云音樂播放界面

    Android仿網(wǎng)易云音樂播放界面

    這篇文章主要為大家詳細(xì)介紹了Android仿網(wǎng)易云音樂播放界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • ijkplayer打包支持https的so使用詳解

    ijkplayer打包支持https的so使用詳解

    這篇文章主要為大家介紹了ijkplayer打包支持https的so使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android使用ViewPager實現(xiàn)啟動引導(dǎo)頁

    Android使用ViewPager實現(xiàn)啟動引導(dǎo)頁

    這篇文章主要為大家詳細(xì)介紹了Android使用ViewPager實現(xiàn)第一次啟動引導(dǎo)頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android?Flutter實現(xiàn)精靈圖的使用詳解

    Android?Flutter實現(xiàn)精靈圖的使用詳解

    在游戲開發(fā)中,精靈圖會將一個人物所有動作放置在一張圖片中,通過坐標(biāo)定位選取其中一張圖展示。本文就來教你如何使用精靈圖,感興趣的可以了解一下
    2022-08-08
  • Android定制RadioButton樣式三種實現(xiàn)方法

    Android定制RadioButton樣式三種實現(xiàn)方法

    三種方法實現(xiàn)Android定制RadioButton樣式:使用XML文件進(jìn)行定義/在JAVA代碼中定義等等,感興趣的朋友可以參考下,希望可以幫助到你
    2013-02-02
  • Retrofit實現(xiàn)圖文上傳至服務(wù)器

    Retrofit實現(xiàn)圖文上傳至服務(wù)器

    本文主要介紹了Retrofit實現(xiàn)圖文上傳至服務(wù)器的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-03-03
  • Android自定義控件實現(xiàn)可左右滑動的導(dǎo)航條

    Android自定義控件實現(xiàn)可左右滑動的導(dǎo)航條

    這篇文章主要介紹了Android自定義控件實現(xiàn)可左右滑動的導(dǎo)航條,能響應(yīng)快速滑動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • RxJava實戰(zhàn)之訂閱流基本原理示例解析

    RxJava實戰(zhàn)之訂閱流基本原理示例解析

    這篇文章主要為大家介紹了RxJava實戰(zhàn)之訂閱流基本原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評論

安塞县| 台中市| 郑州市| 巴彦淖尔市| 富阳市| 西城区| 郎溪县| 紫阳县| 新野县| 醴陵市| 栾川县| 德保县| 清水县| 贡觉县| 灵川县| 汨罗市| 肇庆市| 隆德县| 大足县| 南靖县| 玛纳斯县| 阳城县| 韶山市| 潼关县| 玉树县| 大宁县| 固安县| 吉安县| 新乡县| 定安县| 屏边| 清河县| 敦煌市| 大新县| 瑞安市| 株洲县| 易门县| 紫阳县| 秀山| 平凉市| 达拉特旗|