初衷
最近对比了下主流的两个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吧~
网友评论