zoukankan      html  css  js  c++  java
  • Android 高效的`InjectView – ButterKnife`

    在日常的Android 重复、大量的view初始化、绑定、监听等工作总会让人觉得很繁琐。这时候使用依赖注入的开源框架ButterKnife就很有必要了。

    本篇简单一种高效的View绑定方式InjectView – ButterKnife

    InjectView简介

    传统的findViewById接收一个int类型的id参数,然后遍历找到对应的View但是写法过于麻烦。

    InjectView 是一种基于反射的绑定方式。通过annotation,我们可以把int类型的id声明在对应的filed上面,通过

    java的反射,遍历每个field,找到对应的id。

    
    @InjectView(R.id.textView) View textView;  
    
    

    但是这个方法相对于正常的方法调用,在执行效率上会有些劣势,而且反射并不能编译时期的优化,使得性能的差距更加明显。

    ButterKnife简介

    ButterKnife是一种比较高效的InjectView,它是通过AnnotationProcessor实现的View Injection而不是反射所以性能上没有什么顾虑。

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

    ButterKnife使用

    对于IDE的自动格式化代码,可能会强行将Annotation单独在一行显示。

    
    @InjectView(R.id.textView) 
    View textView;  
    
    

    你也可以进行相应的配置,IDE配置 (Android studio)

    outPut

    • 注入

    ButterKnife.inject(this);
    在7.0.0版本中,注册方式也作了改变,变成了
    ButterKnife.bind(this);

    注:本文用的为4.0版本

    Activity

    
    public class MainActivity extends Activity {
    
        @InjectView(R.id.tv_token)
        TextView tv_token;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            ButterKnife.inject(this);
    
    
        }
    
    }
    
    

    Fragment

    
     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment, container, false);
            ButterKnife.inject(this,view);
    
            };
    
    

    OnClick

    
        @OnClick({R.id.tv_token})
        void onClick(View view){
            switch (view.getId()){
                case R.id.tv_token:
                     Toast.makeText(this, "click!", Toast.LENGTH_SHORT).show();
                    break;
    
            }
        }
    
    
  • 相关阅读:
    开发mis系统的技术
    Navicat软件与pymysql模块
    5.6作业
    mysql表的查询
    5.5作业
    约束条件
    mysql基本数据类型
    数据库
    网络编程项目
    并发编程四
  • 原文地址:https://www.cnblogs.com/chenjy1225/p/9662168.html
Copyright © 2011-2022 走看看