不一样的BindView方式

初衷

最近对比了下主流的两个ViewBinding框架,觉得butterknife虽然挺好用的,但是需要每个view都要自己定义出来并且还是要写上R.id.xxx,然后一个复杂的布局可能就会有十几行甚至几十行这样的@BindView(R.id.xxx),个人看着蛋疼。DataBinding很牛逼,但有时候出了问题很难找到问题所在。就想着能不能减少些开发者的劳动力,便有了Joanna这个gradle plugin。

Joanna

该插件思想确立,目标使用方式如下。它能正常运行,但是不够完美。
项目地址: https://github.com/Bleoo/Joanna 觉得不错就给个star吧~

原理简述

在编译期,添加一个gradle task在 buildConfig task之后。这个task将解析module中layout文件夹下的xml文件,然后生成对应的java文件。

activity_main.xml --> Activity_main_ViewBinder.java

Usage

在需要使用该插件的module的build.gradle中添加:

apply plugin: 'io.bleoo.Joanna'

在根目录下的build.gradle下添加:

buildscript {
    repositories {
        maven { url "https://jitpack.io" }
    }
    dependencies {
        classpath 'com.github.Bleoo:Joanna:1.0' //添加依赖
    }
}

你的layout下xml文件将会这样生成java类,并且使用它。

activity_main.xml --> Activity_main_ViewBinder.java

import io.github.bleoo.joanna.Activity_main_ViewBinder;

public class MainActivity extends AppCompatActivity {

    Activity_main_ViewBinder viewBinder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewBinder = new Activity_main_ViewBinder(this);
        viewBinder.tv_text.setText("gradle initialize me");
    }
}

项目地址: https://github.com/Bleoo/Joanna 觉得不错就给个star吧~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容