日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

初探ViewBinding

發(fā)布時(shí)間:2023/12/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 初探ViewBinding 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

視圖訪問的方式有常用的findViewById,ButterKnife等多種方式,這些方式的各方面對(duì)比如下

如上圖所示,在簡明、編譯安全和編譯速度上都各有優(yōu)勢(shì),那么有沒有一種方式可以一石?"三"?鳥呢。谷歌在Android Studio 3.6 Canary 11版本中正式推出視圖綁定(View Binding),來看下使用方法,

首先需要使用AS 3.6 Canary 11之上的版本,這里我們使用AS 3.6 Beta 1(也可以使用最新的AS 4.0 Canary 01),升級(jí)gradle plugin版本到3.6.0 beta01

buildscript {……dependencies {classpath "com.android.tools.build:gradle:3.6.0-beta01"} }

然后在app中開啟viewbinding

apply plugin: 'com.android.application'android {……defaultConfig {……viewBinding {enabled = true}}…… }

接下來新建一個(gè)布局文件activity_view_binding,內(nèi)容如下

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"tools:text="111" /><android.support.v7.widget.AppCompatImageViewandroid:id="@+id/image"android:layout_width="0dp"android:layout_height="0dp"android:layout_margin="10dp"app:layout_constraintDimensionRatio="1:1"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/text"app:layout_constraintWidth_percent="0.4" /> </android.support.constraint.ConstraintLayout>

然后在Activity等需要使用布局的類中進(jìn)行ViewBinding的初始化及使用,如下

public class ViewBindingActivity extends AppCompatActivity {private ActivityViewBindingBinding viewBinding;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);viewBinding = ActivityViewBindingBinding.inflate(LayoutInflater.from(this));setContentView(viewBinding.getRoot());viewBinding.text.setText("view binding");viewBinding.image.setImageResource(R.color.black);} }

ViewBinding的初始化有三種方式,

inflate(@NonNull LayoutInflater inflater); inflate(@NonNull LayoutInflater inflater, @Nullable ViewGroup parent, boolean attachToParent); bind(@NonNull View rootView);

ViewBinding不用再手動(dòng)進(jìn)行類型轉(zhuǎn)換,也避免了空指針錯(cuò)誤。如果不想生成ViewBinding,可以在布局的根視圖上使用tools:viewBindingIgnore="true"。

當(dāng)然ViewBinding現(xiàn)在還是測(cè)試階段,也有很多問題,例如tools:viewBindingIgnore有時(shí)會(huì)無效;如果你的布局名稱比較長的時(shí)候,生成的ViewBinding類也比較長,沒有自定義生成ViewBinding類名稱的方式;視圖id比較長的時(shí)候,生成的對(duì)象名稱也比較長。

在Butterknife的github主頁上也有這樣一段話,

Attention: Development on this tool is winding down. Please consider switching to view binding in the coming months.

看來JakeWharton還是比較推薦自家的ViewBinding,大家可以開始嘗試使用,如果有問題可以進(jìn)行反饋,相信ViewBinding也會(huì)越來越強(qiáng)大。

總結(jié)

以上是生活随笔為你收集整理的初探ViewBinding的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。