初衷
最近對(duì)比了下主流的兩個(gè)ViewBinding框架包警,覺得butterknife雖然挺好用的牧嫉,但是需要每個(gè)view都要自己定義出來并且還是要寫上R.id.xxx,然后一個(gè)復(fù)雜的布局可能就會(huì)有十幾行甚至幾十行這樣的@BindView(R.id.xxx),個(gè)人看著蛋疼售躁。DataBinding很牛逼预烙,但有時(shí)候出了問題很難找到問題所在墨微。就想著能不能減少些開發(fā)者的勞動(dòng)力,便有了Joanna這個(gè)gradle plugin默伍。
Joanna
該插件思想確立欢嘿,目標(biāo)使用方式如下。它能正常運(yùn)行也糊,但是不夠完美炼蹦。
項(xiàng)目地址: https://github.com/Bleoo/Joanna 覺得不錯(cuò)就給個(gè)star吧~
原理簡(jiǎn)述
在編譯期,添加一個(gè)gradle task在 buildConfig task之后狸剃。這個(gè)task將解析module中l(wèi)ayout文件夾下的xml文件掐隐,然后生成對(duì)應(yīng)的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文件將會(huì)這樣生成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");
}
}
項(xiàng)目地址: https://github.com/Bleoo/Joanna 覺得不錯(cuò)就給個(gè)star吧~