Android 高效的`InjectView – ButterKnife`
在日常的Android 重復、大量的view初始化、綁定、監聽等工作總會讓人覺得很繁瑣。這時候使用依賴注入的開源框架ButterKnife就很有必要了。
本篇簡單一種高效的View綁定方式InjectView – ButterKnife。
InjectView簡介
傳統的findViewById接收一個int類型的id參數,然后遍歷找到對應的View但是寫法過于麻煩。
InjectView 是一種基于反射的綁定方式。通過annotation,我們可以把int類型的id聲明在對應的filed上面,通過
java的反射,遍歷每個field,找到對應的id。
@InjectView(R.id.textView) View textView;但是這個方法相對于正常的方法調用,在執行效率上會有些劣勢,而且反射并不能編譯時期的優化,使得性能的差距更加明顯。
ButterKnife簡介
ButterKnife是一種比較高效的InjectView,它是通過AnnotationProcessor實現的View Injection而不是反射所以性能上沒有什么顧慮。
http://jakewharton.github.io/butterknife/
ButterKnife使用
對于IDE的自動格式化代碼,可能會強行將Annotation單獨在一行顯示。
@InjectView(R.id.textView) View textView;你也可以進行相應的配置,IDE配置 (Android studio)
- 注入
ButterKnife.inject(this);
在7.0.0版本中,注冊方式也作了改變,變成了
ButterKnife.bind(this);
注:本文用的為4.0版本
Activity
public class MainActivity extends Activity {@InjectView(R.id.tv_token)TextView tv_token;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.inject(this);}}Fragment
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment, container, false);ButterKnife.inject(this,view);};OnClick
@OnClick({R.id.tv_token})void onClick(View view){switch (view.getId()){case R.id.tv_token:Toast.makeText(this, "click!", Toast.LENGTH_SHORT).show();break;}}轉載于:https://www.cnblogs.com/chenjy1225/p/9662168.html
總結
以上是生活随笔為你收集整理的Android 高效的`InjectView – ButterKnife`的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WPF窗口继承实现统一风格的自定义窗口
- 下一篇: mysql用户管理+pymysql模块