当前位置:   article > 正文

Android项目实战 ButterKnife_com.jakewharton:butterknife:10.0.0

com.jakewharton:butterknife:10.0.0

最近学到了一个实用的工具ButterKnife,可以简化编码,提高编码清晰度,下面会介绍。

ButterKnife

ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以省去这些步骤。使用ButterKnife对性能基本没有损失。下面介绍使用方法。

  1. 在Android Studio项目中配置使用ButterKnife,后面的版本号上下有差入。
 dependencies {
 	//Butterknife
 	implementation 'com.jakewharton:butterknife:10.0.0'
 	annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
} 	
  • 1
  • 2
  • 3
  • 4
  • 5

2.实现一定要加入绑定,我这里将其封装在基类中,在基类中实现绑定功能。
基类: BaseActivity

  @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ButterKnife.bind(this);
  • 1
  • 2
  • 3
  • 4

基类: BaseFragement

	/**
     *  ButterKnife
     */
    private Unbinder unbinder;
    
	@Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        unbinder = ButterKnife.bind(this,root);
        return root;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

bind方法返回了一个Unbinder对象,在回调onDestroyView方法时,调用unbind方法释放资源。

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        unbinder.unbind();
    }
  • 1
  • 2
  • 3
  • 4
  • 5

3.用法

	@BindView(R.id.bottomNavigationView)
    BottomNavigationView mNavigationView;
    @BindView(R.id.view_pager)
    ViewPager viewPager;
    @BindView(R.id.message)
    TextView text_message;
    @BindView(R.id.find_add)
    ImageView find_add;
    @BindView(R.id.message_add)
    ImageView message_add;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

@BindString,@BindColor,@BindDrawable…绑定资源文件
获取一个字符串资源,需要调用res.getString方法;获取颜色资源,需要调用res.getColor方法;获取图片资源,需要调用res.getDrawable方法。使用ButterKnife框架,分别使用注解@BindString,@BindColor,@BindDrawable替换,注解属性值为资源的id。

    @BindString(R.string.app_name)
    String app_name;
 
    @BindDrawable(R.drawable.ic_launcher_background)
    Drawable d;
 
    @BindColor(R.color.red)
    int color_red;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

@onClick设置控件的监听

    @OnClick({R.id.button, R.id.text1})
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button:
                text1.setTextColor(Color.RED);
                break;
 
            case R.id.text1:
                text1.setTextColor(Color.BLUE);
                break;
            default:
                break;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

ViewPager事件监听:@OnPageChange

@OnPageChange(R.id.viewpager)
public void onPageSelected(int position) {
        switch (position) {
            case 0:

                break;
            case 1:

                break;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

当然 ButterKnife是Jake Wharton大神写开源框架。项目托管地址:
https://github.com/JakeWharton/butterknife。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/529688
推荐阅读
相关标签
  

闽ICP备14008679号