lite your android ! the code is on the way~
Switch branches/tags
Nothing to show
Clone or download
Latest commit b978b90 Apr 10, 2016
Permalink
Failed to load latest commit information.
.gitignore Initial commit Jan 15, 2016
LICENSE.txt LICENSE Mar 23, 2016
README.md yeah~ Apr 10, 2016

README.md

android-lite-auto

lite your android, the code is on the way~ !

LiteAuto是一个代码生成框架,思路参考 JakeWharton 的开源项目 ButterKnife,在它的思路基础添加了一些自己的想法,从0到1设计并实现的。

LiteAuto设计思路的关键是约定大于配置,通过 更简单的注解 帮你自动生成 Android 中琐碎、冗长的功能代码。

目前可以自动生成 View 和 Event 相关的重复代码,还可以生成常用操作代码,而这些都是在编译时期自动生成的代码,几乎不影响性能,而且使得项目非常清晰简单。

和 ButterKnife 的不同点之一是 LiteAuto 只需要在 Activity 上添加一个 @LiteAuto 注解即可,框架自动分析 Activity 或者 Fragment 内部所有的 View 元素,判断是否在 layout 文件中有与之对应的 View 控件,比如一个 TextView 变量名为 “tvLabel”,框架会自动查找 layout 里面id 为 “tvLabel”的控件,并为之生成findViewById代码,如果查找不到那么探测下一个View,Event代码生成并关联的思路也是如此。

关于 @LiteAuto 注解,如果你有 View 变量不需要和 layout 文件关联,只需为变量添加 @UnBind 注解即可。

关于 @SemiAuto 注解,如果你需要向像 ButterKnife 一样,每个 View 或 Event 单独注解, 那么为Activity等添加 @SemiAuto 注解即可。

比如,之前的代码是这样:

public class MainActivity extends Activity {

    TextView tvLabel;
    TextView tvLabel1;
    TextView tvLabel2;
    TextView tvLabel3;
    Button button;
    ImageView imageView;
    ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvLabel = (TextView) findViewById(R.id.tvLabel);
        tvLabel1 = (TextView) findViewById(R.id.tvLabel1);
        tvLabel2 = (TextView) findViewById(R.id.tvLabel2);
        tvLabel3 = (TextView) findViewById(R.id.tvLabel3);
        button = (Button) findViewById(R.id.button);
        imageView = (ImageView) findViewById(R.id.imageView);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        tvLabel1.setOnClickListener(new View.OnClickListener() {

            @Override 
            public void onClick(View v) {
                tvLabel1.setText("TvLabel 1 Clicked!");
            }
        });

        tvLabel2.setOnClickListener(new View.OnClickListener() {

            @Override 
            public void onClick(View v) {
                tvLabel2.setText("TvLabel 2 Clicked!");
                tvLabel3.setText("show me, show me pls!");
            }
        });
    }

}

那么,使用 LiteAuto 的代码是这样:

// 无需findViewById,也不需要为单个变量添加注解,Activity级别添加一个注解即可。
// 框架会分析类和成员变量,自动生成代码
@AutoLite
public class LiteMainActivity extends Activity {

    TextView tvLabel;
    TextView tvLabel1;
    TextView tvLabel2;
    TextView tvLabel3;
    Button button;
    ImageView imageView;
    ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AutoMan.activateThis(this);
    }

    public void clickTvLabel1(View view) {
        tvLabel1.setText("TvLabel Clicked!");
    }

    public void clickTvLabel2(View view) {
        tvLabel2.setText("TvLabel Clicked!");
        tvLabel3.setText("show me, show me pls!");
    }

}