不一样的BindView方式

2018-03-01 11:11:37来源:https://www.jianshu.com/p/e82af41c5e68作者:Bleoo人点击

分享


初衷

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









最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台