Android系列之butterknife基本用法

举报
yd_273762914 发表于 2020/12/02 23:08:01 2020/12/02
【摘要】 现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率 然而为什么要使用butterknife?一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响 butterknife现在...

现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率

然而为什么要使用butterknife?一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响

butterknife现在最新版本是butterknife8,不过开发中还是主要使用butterknife6和butterknife7

butterknife6和butterknife7用法还是稍稍有点不同的

 

(a)引入butterknife注解框架

在Android Studio中可以,很快直接引入,我们可以,选择项目->右键->open modules setting,然后选择Dependencies,选择绿色的Add按钮,输入com.jakewharton:butterknife:7.0.1或者com.jakewharton:butterknife:6.1.0等等,引入框架,也可以网上下载jar,然后选择add as library,添加到项目

 

(b)butterknife的主要用处

(i)Activity类里使用:

Demo:只要使用InjectView就可以,然后在onCreate方法里初始化

ButterKnife.inject(类名.this);
 

 

 


  
  1. @InjectView(R.id.listview)
  2. ListView listview;
  3. @InjectView(R.id.tv_black)
  4. TextView mBlack;
  5. @InjectView(R.id.message_title)
  6. TextView mTitle;
  7. private HashMap<String,Object> map;
  8. private Context mContext;
  9. @Override
  10. protected void onCreate(Bundle arg0) {
  11. super.onCreate(arg0);
  12. setContentView(R.layout.activity_group_post);
  13. ButterKnife.inject(GroupPostActivity.this);
  14. initView();
  15. }


butterknife7就换成@Bind就可以,初始化换成ButterKnife.bind(this);

 

 

 

(ii)在Fragment类使用

 


  
  1. public class SimpleFragment extends Fragment {
  2. @InjectView(R.id.fragment_text_view)
  3. TextView mTextView;
  4. public SimpleFragment() {
  5. }
  6. @Override
  7. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  8. Bundle savedInstanceState) {
  9. View view = inflater.inflate(R.layout.fragment_simple, container, false);
  10. ButterKnife.inject(this, view);
  11. mTextView.setText("TextView in Fragment are found!");
  12. return view;
  13. }
  14. }

 

 

 

 

 

(iii)在事件处理里使用

onClickListener可以这样写了

 


  
  1. @OnClick(R.id.basic_finish_a_button)
  2. void finishA(View view) {
  3. finish();
  4. }

 

 

 

 

 

 

(iiii)在ListView和GridView里使用

 


  
  1. @InjectViews({R.id.label_first_name, R.id.label_middle_name, R.id.label_last_name})
  2. List<TextView> labelViews;


也可以在适配器里使用等等

 

下面提供参考文档

参考博客:http://blog.csdn.net/u012468376/article/details/50594531(Butterknife7)

http://www.cnblogs.com/mengdd/archive/2015/06/23/4595973.html(Butterknife6)

 

例子:https://github.com/mengdd/AndroidButterKnifeSample

官网: http://jakewharton.github.io/butterknife/

Java Doc: http://jakewharton.github.io/butterknife/javadoc/

github上开源项目: https://github.com/JakeWharton/butterknife

 

 

 

 

 

 

 

 

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/52182636

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。