目錄:andorid jar/庫源碼解析 Butterknife: 作用: 用於初始化界面控制項,控制項方法,通過註釋進行綁定控制項和控制項方法 慄子: public class MainActivity extends AppCompatActivity { @BindView(R.id.btnTest1 ...
Butterknife:
作用:
用於初始化界面控制項,控制項方法,通過註釋進行綁定控制項和控制項方法
慄子:
public class MainActivity extends AppCompatActivity { @BindView(R.id.btnTest1) Button btnTest1; @BindView(R.id.btnTest2) Button btnTest2; @BindView(R.id.lblMsg) TextView lblMsg; @BindView(R.id.txtMsg) EditText txtMsg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick(R.id.btnTest1) void test1(){ Toast.makeText(this, txtMsg.getText().toString(), Toast.LENGTH_LONG).show(); } @OnClick(R.id.btnTest2) void test2(){ String msg = "test2222222222"; lblMsg.setText(msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } }
源碼解讀:
ButterKnife.bind(this);
綁定界面元素和方法的關聯。
1、傳入當前對象,得到當前對象的類名A,查找A+‘_ViewBinding’組成的類名的,類的構造函數,參數是A類對象和View
2、得到類,調用他的構造函數,函數中通過findViewById,來進行綁定(由於A+_ViewBinding是生成的類,該類已知了所有需要綁定的控制項,所以順序處理了。)
3、對於事件方法,則創建了已定義的相容性的子類,進行調用處理。
4、到這裡。所有操作就關聯上了。
自動生成了,_ViewBinding類,用於關聯
源碼:https://github.com/JakeWharton/butterknife
引入:
// androidx implementation 'com.jakewharton:butterknife:10.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0' // android.support.v4.content // implementation 'com.jakewharton:butterknife:8.8.1' // annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'