不一样的BindView方式

作者: Bleoo | 来源:发表于2018-02-27 16:26 被阅读0次

    初衷

    最近对比了下主流的两个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吧~

    相关文章

      网友评论

        本文标题:不一样的BindView方式

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