本项目对应的两篇博客分析:
分别通过运行时处理自定义注解和编译时处理自定义注解的方式,来模拟实现ButterKnife的效果。 简单的实现了:
- @ContentView:注入布局文件
- @BindView:注入控件
- @OnClick:注入简单的事件监听
这三个注解类型,通过自己实现的注解处理器,可以实现如下的使用效果:
@ContentView(R.layout.activity_apt_impl)
public class AptImplActivity extends AppCompatActivity {
@BindView(R.id.button1)
Button mButton1;
@BindView(R.id.button2)
Button mButton2;
@OnClick({R.id.button1})
public void click() {
Toast.makeText(this, "点击了第一个按钮", Toast.LENGTH_SHORT).show();
}
@OnClick({R.id.button2})
public void click2() {
Toast.makeText(this, "点击了第二个按钮", Toast.LENGTH_SHORT).show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_apt_impl);
MyButterKnife.bind(this);
}
}
主要涉及技术包括:
- 注解处理器的使用
- JavaPoet技术
- 运行时处理注解技术
- 编译时处理注解技术
比较有价值的参考链接: