android view注入,Android View注入框架Butter Knife初步介绍

Butter Knife意思是“黄油小刀”,但是在Android社区中,它是由Square.Inc的大牛Jake Wharton设计的视图注入式库。Butter Knife 是一个专注于 Android 系统 View 的注入框架,让你从烦人的 findViewById 中解脱出来。同时还支持 View 的一些事件处理函数。项目地址:http://jakewharton.github.io/butterknife/

如果你不想写一大堆像下面这样的代码:

class ExampleActivity extends Activity {

TextView title;

TextView subtitle;

TextView footer;

@Override public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.simple_activity);

title = (TextView) findViewById(R.id.title);

subtitle = (TextView) findViewById(R.id.subtitle);

footer = (TextView) findViewById(R.id.footer);

// TODO Use views...

}

}

使用 @InjectView 来注解字段,并为Butter Knife提供视图的id来查找和在转换布局中相应的视图。

class ExampleActivity extends Activity {

@InjectView(R.id.title) TextView title;

@InjectView(R.id.subtitle) TextView subtitle;

@InjectView(R.id.footer) TextView footer;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.simple_activity);

ButterKnife.inject(this);

// TODO Use "injected" views...

}

}

不用担心Butter Knife会低效的放射机制,事实上会生成视图查找的代码。调用 inject 委托生成如下可以查看和调试的代码。

以上示例会差不多生成如下等价的代码:

public void inject(ExampleActivity activity) {

activity.subtitle = (android.widget.TextView) activity.findViewById(2130968578);

activity.footer = (android.widget.TextView) activity.findViewById(2130968579);

activity.title = (android.widget.TextView) activity.findViewById(2130968577);

}

Butter Knife 的特性:

支持 Activity 中的 View 注入

支持 View 中的 View 注入

支持 View 事件回调函数注入

后面会慢慢介绍这些特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值