当前位置: 首页 > 工具软件 > ButterKnife > 使用案例 >

ButterKnife介绍

汝楷
2023-12-01

ButterKnife介绍

ButterKnife(奶油刀)是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。

ButterKnife项目地址:https://github.com/JakeWharton/butterknife

ButterKnife的优势:
1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2、方便的处理Adapter里的ViewHolder绑定问题
3、运行时不会影响APP效率,使用配置方便
4、代码清晰,可读性强

ButterKnife使用

  • 依赖:
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
  • 插件:Android ButterKnife Zelezny

  • 使用:获取控件、事件点击处理

Activity使用:

    public class MainActivity extends AppCompatActivity {
    
        //获取控件
        @BindView(R.id.name)
        EditText name;
    
        @BindView(R.id.btn)
        Button btn;
        @BindView(R.id.txt)
        TextView txt;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //绑定处理
            ButterKnife.bind(this);
        }
    
        //按钮点击事件处理
        @OnClick(R.id.btn)
        public void onViewClicked() {
    
            if (TextUtils.isEmpty(name.getText().toString().trim())){
                return;
            }
    
            if (name.getText().toString().trim().length() < 6){
                return;
            }
    
            txt.setText(name.getText());
        }
    }

Fragment使用:

    public class BlankFragment extends Fragment {
    
    
        @BindView(R.id.txt)
        TextView txt;
        @BindView(R.id.btn)
        Button btn;
    
    
        Unbinder unbinder;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View inflate = inflater.inflate(R.layout.fragment_blank, container, false);
            unbinder = ButterKnife.bind(this, inflate);
            return inflate;
        }
    
        @Override
        public void onDestroyView() {
            super.onDestroyView();
            unbinder.unbind();
        }
    
        @OnClick(R.id.btn)
        public void onViewClicked() {
    
        }
    }

 

 类似资料: