不一樣的BindView方式

初衷

最近對(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吧~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容