Android使用ViewBinding的详细步骤(Kotlin简易版)

ViewBinding 是什么

2020年的3月份 巨佬 JakeWharton 开源的 butterknife 被官宣 停止维护,在github 上 说明

Attention: This tool is now deprecated. Please switch to view binding. Existing versions will continue to work, obviously, but only critical bug fixes for integration with AGP will be considered. Feature development and general bug fixes have stopped.

翻译过来就是,不维护了,推荐你使用 ViewBinding ,那么 ViewBinding 是什么呢
官网中,这么介绍

通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。在大多数情况下,视图绑定会替代 findViewById。

简而言之 就是用来查找view

ViewBinding 有什么作用

就想刚刚说的 ,他就是为了替换 findViewById。 的。那么 原来的 findViewById。 有什么问题么?干嘛就要替换了他?
总结了以下几个原因:

  • 过于冗余

findViewById 对应所有的View 都需要书写以下 findViewById(R.id.xxx) 的方法

  • 不安全

所谓的不安全就是分为两个  首先是空类型的不安全,findViewById  又可能返回为null,导致程序异常
第二: 强转的不安全,findViewById。 将 对应的id 需要强转成对应的View 例如

TextView tv = findViewById(R.id.textview);

一旦我的类型给错了,就会出现异常,比如将textview 错强转成 ImageView

正文开始

最近这段时间在学习Kotlin,突然发现谷歌已经把kotlin-android-extensions插件废弃,目前推荐使用ViewBinding来进行替代。

ViewBinding的目的:避免编写findViewById

使用ViewBinding前的注意事项:
1、确保你的Android Studio是3.6或更高的版本
2、在build.gradle中加入以下配置:buildFeatures { viewBinding true }

使用ViewBinding的步骤:
1、首先要调用activity_main.xml布局文件对应的Binding类,也就是ActivityMainBinding的inflate()函数去加载该布局,inflate()函数接收一个LayoutInflater参数,在Activity中是可以直接获取到的
2、接下来调用Binding类的getRoot()函数可以得到activity_main.xml中根元素的实例
3、把根元素的实例传入到setContentView()函数当中,这样Activity就可以成功显示activity_main.xml这个布局的内容了。

话不多说,接下来是代码部分:
1、在build.gradle中加入:buildFeatures { viewBinding true }


2、将要使用ViewBinding的Activity打开,将代码改成如下的样子:

这里要注意的是,如果在别的Activity中要使用binding的话(如:我现在的kt文件叫做LoginActivity.kt,那么代码如下:

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityLoginBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityLoginBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.webView
    }
}

3、此时就可以通过binding.控件id名进行调用

到此这篇关于Android使用ViewBinding(Kotlin简易版)的文章就介绍到这了,更多相关Android使用ViewBinding内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • android WebView加载html5介绍

    Android设备多分辨率的问题 Android浏览器默认预览模式浏览 会缩小页面 WebView中则会以原始大小显示 Android浏览器和WebView默认为mdpi.hdpi相当于mdpi的1.5倍 ldpi相当于0.75倍 三种解决方式:1 viewport属性 2 CSS控制 3 JS控制 1 viewport属性放在HTML的<meta>中 Html代码 复制代码 代码如下: <SPANstyle="FONT-SIZE: x-small"> <

  • Android TextView设置背景色与边框的方法详解

    1.在drawable文件夹下面创建setbar_bg.xml 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" >    <!-- 背景色 -->    <solid android:color="#FFE4B5&q

  • Android实现view拖动到任意位置

    本文实现:将图片任意拖动,如果拖动到正确位置则成功,若抬起手时时错误位置则自动回到原位. 定义 private ImageView img; private ImageView imageView; //容器的宽高,需要在屏幕绘制好之后才能获取 private int containerWidth; private int containerHeight; private float lastX, lastY; //获取需要拖动到的正确位置 private int[] imgPosition =

  • android imageview图片居中技巧应用

    做UI布局,尤其是遇到比较复杂的多重LinearLayout嵌套,常常会被一些比较小的问题困扰上半天,比如今天在使用ImageView的时候,想让其居中显示,可是无论怎样设置layout_gravity属性,都无法达到效果,部分代码如下: [java] 复制代码 代码如下: <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:

  • android TextView设置中文字体加粗实现方法

    英文设置加粗可以在xml里面设置: 复制代码 代码如下: <SPAN style="FONT-SIZE: 18px">android:textStyle="bold"</SPAN> 英文还可以直接在String文件里面直接这样填写: 复制代码 代码如下: <string name="styled_text">Plain, <b>bold</b>, <i>italic</

  • Android view绘制流程详解

    绘制流程 measure 流程测量出 View 的宽高尺寸. layout 流程确定 View 的位置及最终尺寸. draw 流程将 View 绘制在屏幕上. Measure 测量流程 系统是通过 MeasureSpec 测量 View 的,在了解测量过程之前一定要了解这个 MeasureSpec . MeasureSpec MeasureSpec 是一个 32 位的 int 值打包而来的,打包为 MeasureSpec 主要是为了避免过多的对象内存分配. 为了方便操作,MeasureSpec

  • Android文本视图TextView实现跑马灯效果

    本文实例为大家分享了Android文本视图TextView实现跑马灯效果的具体代码,供大家参考,具体内容如下 MainActivity package com.example.junior; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class MarqueeA

  • Android OpenGL入门之GLSurfaceView

    GLSurfaceView使用 OpenGL ES是是一个开源图形库,那么与之相关的需要一个东西去显示画面,在android里,opengl包里提供了一个View叫GLSurfaceView,它的定义如下: An implementation of SurfaceView that uses the dedicated surface for displaying OpenGL rendering. 它的特性如下: Manages a surface, which is a special pi

  • Android使用ViewPager实现启动引导页效果

    本文实例为大家分享了Android实现启动引导页效果的具体代码,供大家参考,具体内容如下 ViewPagerTwoActivity.java package cn.edu.zufe.app001; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.PagerAdapter; import androidx.vie

  • android listview优化几种写法详细介绍

    这篇文章只是总结下getView里面优化视图的几种写法,就像孔乙己写茴香豆的茴字的几种写法一样,高手勿喷,勿笑,只是拿出来分享,有错误的地方欢迎大家指正,谢谢. listview Aviewthatshowsitemsinaverticallyscrollinglist. 一个显示一个垂直的滚动子项的列表视图在android开发中,使用listview的地方很多,用它来展现数据,成一个垂直的视图.使用listview是一个标准的适配器模式,用数据--,界面--xml以及适配器--adapter,

随机推荐