基本介紹
- 中文名:黃油刀
- 外文名:Butter Knife
- 作用:替代控制項查找
Butter Knife的優勢,Butter Knife的外掛程式,Butter Knife使用步驟,Butter Knife使用心得,
Butter Knife的優勢
- 強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率
- 方便的處理Adapter里的ViewHolder綁定問題
- 提高APP運行效率,使用配置方便.
Butter Knife的外掛程式
選中要初始化控制項的代碼的布局檔案,按下ALT+Insert ->Generate ButterKnife Injections
提示:在使用此外掛程式前,需要導入了butter knife的jar
或在build.gradle中添加:compile 'com.jakewharton:butterknife:7.0.0'
Butter Knife使用步驟
1.在gradle檔案中關聯ButterKnife框架
compile 'com.jakewharton:butterknife:7.0.1'
2.在onCreate里進行初始化(注意:在Fragment和ViewHolder里初始化時,方法:ButterKnife.bind(this, view); 參數2:View對象)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //在布局檔案後,進行ButterKnife的綁定,參數上下文 ButterKnife.bind(this);}提示:Butter Knife的初始化必須在安卓程式載入布局檔案之後,否則運行會報錯。在哪使用,就在哪初始化。
3.加註解(相當於findViewByID,而且其控制項對象是成員變數,注意格式)
@Bind(R.id.tv_butterknife) TextView mTvButterknife;
4.使用Butter Knife設定點擊事件,使TextView具備點擊事件
@OnClick(R.id.tv_activity_main_translation) void translate(TextView textView) { textView.setText("yiChenFeng好帥!"); }
提示:該TextView並沒有註解,但是卻進行了文本新內容的設定,是因為點擊事件中,方法參數就代表了TextView的註解,只不過這個註解後的TextView對象,只能在點擊事件方法中有效.
5.使用Butter Knife給多個控制項設定點擊事件
//設定點擊事件,許可權必須是默認許可權以上且不能是靜態 @OnClick({R.id.cb_butterknife,R.id.tv_activity_main_goto_next_page}) void onClick(View view) { switch (view.getId()) { //為跳轉到第二個頁面的TextView設定了點擊事件 case R.id.tv_activity_main_goto_next_page: Toast.makeText(MainActivity.this, "易大師好帥", Toast.LENGTH_SHORT).show(); break; //使複選框具備點擊事件 case R.id.cb_butterknife: Toast.makeText(MainActivity .this, "易大師帶你裝逼,帶你飛", Toast.LENGTH_SHORT).show(); break; } }Butter Knife8.0版本比7.0版本多了一些配置,改變了一些方法名,但使用的思路是一致的
Butter Knife使用心得
1.Butter Knife初始化ButterKnife.bind(this)必須在載入布局資源之後(在setContentView(),Inflate等方法下面),所以ButterKnife不能在Application中初始化。
2.Butter Knife在Fragment和Adapter中使用時,初始化代碼有所不同,多了個參數VIew對象.ButterKnife.bind(this, mRootView);
3.使用Butter Knife設定控制項點擊事件,其方法許可權必須在默認許可權以上方可(包括默認許可權)
4.使用Butter Knife很方便,但由於Butter Knife不是安卓原生的,所以使用時如果出錯了,會導致錯誤難以找出