前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android注解框架butterknife基本用法

Android注解框架butterknife基本用法

作者头像
SmileNicky
发布2019-01-17 15:11:32
1.1K0
发布2019-01-17 15:11:32
举报
文章被收录于专栏:Nicky's blogNicky's blog

现在安卓项目开发中,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方法里初始化

代码语言:javascript
复制
ButterKnife.inject(类名.this);
代码语言:javascript
复制
   @InjectView(R.id.listview)
    ListView listview;

    @InjectView(R.id.tv_black)
    TextView mBlack;

    @InjectView(R.id.message_title)
    TextView mTitle;

    private HashMap<String,Object> map;

    private Context mContext;

    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.activity_group_post);
        ButterKnife.inject(GroupPostActivity.this);
        initView();
    }

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

(ii)在Fragment类使用

代码语言:javascript
复制
public class SimpleFragment extends Fragment {
 
    @InjectView(R.id.fragment_text_view)
    TextView mTextView;
 
    public SimpleFragment() {
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_simple, container, false);
        ButterKnife.inject(this, view);
        mTextView.setText("TextView in Fragment are found!");
        return view;
    }
}

(iii)在事件处理里使用

onClickListener可以这样写了

代码语言:javascript
复制
@OnClick(R.id.basic_finish_a_button)
    void finishA(View view) {
        finish();
    }

(iiii)在ListView和GridView里使用

代码语言:javascript
复制
@InjectViews({R.id.label_first_name, R.id.label_middle_name, R.id.label_last_name})
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年08月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档