• Android View注入框架Butter Knife初步介绍

    提升Android开发生产力
    服务器君一共花费 46.853 ms 进行了 5 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    Butter Knife意思是“黄油小刀”,但是在Android社区中,它是由Square.Inc的大牛Jake Wharton设计的视图注入式库。Butter Knife 是一个专注于 Android 系统 View 的注入框架,让你从烦人的 findViewById 中解脱出来。同时还支持 View 的一些事件处理函数。项目地址:http://jakewharton.github.io/butterknife/

    如果你不想写一大堆像下面这样的代码:

    class ExampleActivity extends Activity {  
      TextView title;  
      TextView subtitle;  
      TextView footer;  
      
      @Override public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.simple_activity);  
        title = (TextView) findViewById(R.id.title);  
        subtitle = (TextView) findViewById(R.id.subtitle);  
        footer = (TextView) findViewById(R.id.footer);  
      
        // TODO Use views...  
      }  
    } 
    

    使用 @InjectView 来注解字段,并为Butter Knife提供视图的id来查找和在转换布局中相应的视图

    class ExampleActivity extends Activity {
        @InjectView(R.id.title) TextView title;
        @InjectView(R.id.subtitle) TextView subtitle;
        @InjectView(R.id.footer) TextView footer;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.simple_activity);
            ButterKnife.inject(this);
            // TODO Use "injected" views...
        }
    }
    

    不用担心Butter Knife会低效的放射机制,事实上会生成视图查找的代码。调用 inject 委托生成如下可以查看和调试的代码。

    以上示例会差不多生成如下等价的代码:

    public void inject(ExampleActivity activity) {
        activity.subtitle = (android.widget.TextView) activity.findViewById(2130968578);
        activity.footer = (android.widget.TextView) activity.findViewById(2130968579);
        activity.title = (android.widget.TextView) activity.findViewById(2130968577);
    }
    

    Butter Knife 的特性:

    1. 支持 Activity 中的 View 注入
    2. 支持 View 中的 View 注入
    3. 支持 View 事件回调函数注入

    后面会慢慢介绍这些特性。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [PHP程序设计] PHP里的引用 5 个条目
  2. [Python程序设计] Django Web环境配置 2 个条目
  3. [软件工程与项目管理] 开始使用Git 3 个条目
  4. [移动开发] Android抽屉导航NavigationDrawer 5 个条目
  5. [PHP程序设计] PHP中的Hash算法 3 个条目
  6. [移动开发] Android 网络通信框架Volley 1 个条目
  7. [移动开发] Android根基概念Context 8 个条目
  8. [移动开发] Android View注入框架Butter Knife 3 个条目
  9. [PHP程序设计] 命令式编程范式 6 个条目
  10. [Linux操作系统] 基本 Linux Shell 命令 2 个条目
  11. [搜索引擎优化] 与百度权重有关的信息 2 个条目
  12. [软件工程与项目管理] 呈现器的布局与绘制 11 个条目
窗口 -- [八点]