美文网首页
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