Butter Knife

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

項目下載地址

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

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

基本介紹

  • 外文名:Butter Knife
  • 作用:替代控制項查找
  • 定義:出自JakeWharton的一個開源庫
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的外掛程式

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

相關詞條

熱門詞條

聯絡我們