当前位置: 首页 > news >正文

ButterKnife介绍

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() {
    
        }
    }

 

相关文章:

  • Android之Activity全面解析
  • Android Fragment使用详解
  • Spring的定时任务(任务调度)
  • InfluxDB详解
  • 时序数据库
  • ICMP详解
  • 各种时间定义
  • 浏览器工作原理
  • 深入浅出Object.defineProperty()
  • Android知识整理
  • Android Adapter详解
  • VNC详解
  • wireshark详解
  • AForge详解
  • C#版本和.NET版本以及VS版本的对应关系
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 08.Android之View事件问题
  • egg(89)--egg之redis的发布和订阅
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • java2019面试题北京
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS+CSS实现数字滚动
  • Lucene解析 - 基本概念
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Redux系列x:源码分析
  • springMvc学习笔记(2)
  • vue 配置sass、scss全局变量
  • 从0实现一个tiny react(三)生命周期
  • 入口文件开始,分析Vue源码实现
  • 入门级的git使用指北
  • 微服务入门【系列视频课程】
  • 用quicker-worker.js轻松跑一个大数据遍历
  • AI算硅基生命吗,为什么?
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (三)elasticsearch 源码之启动流程分析
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (算法设计与分析)第一章算法概述-习题
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net 生成二级域名
  • .Net6 Api Swagger配置
  • [ C++ ] STL---string类的使用指南
  • [Android]使用Android打包Unity工程
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [BUUCTF 2018]Online Tool
  • [BZOJ 3282] Tree 【LCT】
  • [C和指针].(美)Kenneth.A.Reek(ED2000.COM)pdf
  • [Design Pattern] 工厂方法模式
  • [EFI]Acer Aspire A515-54g电脑 Hackintosh 黑苹果efi引导文件
  • [Foreman]解决Unable to find internal system admin account
  • [JS]JavaScript 注释 输入输出语句
  • [js]js设计模式小结
  • [lesson17]对象的构造(上)
  • [Linux] 进程间通信基础
  • [nginx] 网上最全面nginx教程(近100篇文章整理)
  • [NOI2014]购票