Butter Knife

butter knife是出自JakeWharton的一個開源庫,它通過註解的方式來替代android中view的相關操作。減少大量的findViewById以及setOnClickListener代碼,且對性能的影響較小

項目下載地址

Butter Knife的源碼,其自定義註解的實現都是限定為RetentionPolicy.CLASS,在運行時不額外消耗性能,通過Java註解自動生成java代碼的形式來完成工作

提示:Butter Knife有多個版本,不同版本的初始化方法都不一樣,且@Bind註解控制項的後綴名也不同

基本介紹

  • 中文名:黃油刀
  • 外文名: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

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不是安卓原生的,所以使用時如果出錯了,會導致錯誤難以找出

相關詞條

熱門詞條

聯絡我們