先上官網 http://jakewharton.github.io/butterknife/ 和 https://github.com/JakeWharton/butterknife 配置開發環境 在代碼開始之前 先要將庫加入依賴 Eclipse 去官網手工下載 jar 包, 放到 libs目錄 或 ...
先上官網
http://jakewharton.github.io/butterknife/ 和 https://github.com/JakeWharton/butterknife
配置開發環境
在代碼開始之前 先要將庫加入依賴
Eclipse
去官網手工下載 jar 包, 放到 libs目錄 或者其他方式加入到 Build Path當中
Android Studio
GUI 操作的方式
菜單上 File -> Project Structure (或者直接點工具欄上的Project Structure) -> 左側 Modules下的 app -> 右側 Dependencies 標簽頁 -> +號 -> Library dependency 搜索 butterknife 選擇 com.jakewharton:butterknife:8.4.0 然後 OK, 版本號會變 , 反正選擇沒有 -compiler 這種帶尾巴的。
新的butterknife 增加了 annotationProcessor 這種方式無法添加, 所以最終還是要編輯 Gradle Script
編輯 Gradle Script的方式
打開 Module app的 build.gradle , 在dependencies 添加兩行
dependencies { ... compile 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' ... }
省略號代表其他已有的 dependencies 。 添加之後 sync
啟動ButterKnife
開發環境配好後, 編碼開始
在 Activity中使用, 首先要啟動butterknife , 在 onCreate里 setContentView 之後立即 ButterKnife.bind(this);
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); }
綁定View
是用@BindView 替代findViewById
public class MainActivity extends AppCompatActivity { @BindView(R.id.btnGet) Button mBtnGet; @BindView(R.id.tvResult) TextView mTvResult; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); mBtnGet.setText("do get"); } }
註意: 註解只能用在類成員上, 成員不能用 private 或 static 修飾, 不能用在方法中的局部變數上
綁定 資源
@BindString(R.string.app_name) String appName; @BindColor(R.color.colorPrimary) int colorPrimary; @BindBool(R.bool.bool_name) boolean boolName;
還支持更多類型,就不一一列舉類
綁定 click 事件
不用聲明 view 也不用setOnClickListener , 參數是可有可無的, 如果不使用,不寫省事
@OnClick(R.id.btnPost) void doPost() { mTvResult.setText("do post done"); }
當然也可以像 onClickListener 一樣帶上參數
@OnClick(R.id.btnPost) void doPost(View view) { Button btnPost = (Button)view; mTvResult.setText("do post done " + btnPost.getText().toString()); }
還可以把強轉都省了,直接在參數上使用要轉的確切類型butterknife能幫你自動轉型
@OnClick(R.id.btnPost) void doPost(Button btnPost) { mTvResult.setText("do post done " + btnPost.getText().toString()); }
發