美文网首页
Android 中ViewBinding的使用

Android 中ViewBinding的使用

作者: 玫瑰花的葬礼_8567 | 来源:发表于2020-11-27 22:23 被阅读0次

前一段时间偶尔看到butterknife的大佬已经不更新butterknife库,当时心里可慌了就想着,这个该怎么办,但是细看butterknife大佬建议使用使用ViewBinding就去使用研究了下这个库,感觉这个库还是非常好,就想着直接把项目中的butterknife直接替换掉:


首先我们我们在项目中引入ViewBinding,但是使用ViewBinding我们的Android Studio必须升级到3.6及其以上,3.6以下是不支持viewBinding的引入的:

引入viewBinding首先在项目中的build.gradle中添加viewBinding:

添加上viewBinding后build一下项目:

下面是我们在项目中怎么中的BaseActivity中添加:

这个就是viewBinding怎么在Baseview中添加的:

getBinding中代码如下:


protected T getBinding() {

try {

Type superClass = getClass().getGenericSuperclass();

        Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];

        Class clazz = ClassUtils.getRawType(type);

        Method method = clazz.getMethod("inflate", LayoutInflater.class);

        return (T) method.invoke(null, getLayoutInflater());

    }catch (Exception e) {

e.printStackTrace();

    }

return null;

}


其中的工具类如下:


public class ClassUtils {

public static ClassgetRawType(Type type) {

if (typeinstanceof Class) {

return (Class) type;

        }else if (typeinstanceof ParameterizedType) {

ParameterizedType parameterizedType = (ParameterizedType) type;

            Type rawType = parameterizedType.getRawType();

            return (Class) rawType;

        }else if (typeinstanceof GenericArrayType) {

Type componentType = ((GenericArrayType) type).getGenericComponentType();

            return Array.newInstance(getRawType(componentType), 0).getClass();

        }else if (typeinstanceof TypeVariable) {

return Object.class;

        }else if (typeinstanceof WildcardType) {

return getRawType(((WildcardType) type).getUpperBounds()[0]);

        }else {

String className = type ==null ?"null" : type.getClass().getName();

            throw new IllegalArgumentException("Expected a Class, ParameterizedType, or GenericArrayType, but <" + type +"> is of type " + className);

        }

}

}


上面就是工具类,

在Activity中的使用如下:

在项目中添加相应的布局就可使用;

下面就是使用ViewBingding的使用:

这样就可以直接使用viewBinding:

相关文章

网友评论

      本文标题:Android 中ViewBinding的使用

      本文链接:https://www.haomeiwen.com/subject/wyufwktx.html