当前位置:首页 » 安卓系统 » androidbutterknife

androidbutterknife

发布时间: 2022-08-23 12:40:32

A. android 源码可以使用butterknife吗

使用方式: 导入Butterknife的jar包,不需要修改配置文件 添加AndroidStudio插件(可选,需要依赖ButterKnife的jar包) 下载一个插件Android ButterKnife Zelezny来配合Butterknife自动生成View。 注意,需要绑定的View或者资源的声明必须是public,不能是private或者static AndroidAnnotation(AA)与ButterKnife的比较, AA的分析如果没看的话建议先读一下老衲的上一篇AA注解的介绍与流程分析 首先从功能上来说,AA提供的注解数量远多于ButterKnife,功能也是无所不包(View的绑定,线程,监听,动画,balabala...)而ButterKnife仅仅提供针对View的注解。 其次从两类框架的实现流程上来说,AA在一开始就已经生成了新的代码XXXActivity_,后续的执行都是依赖于新的代码。生成的方法和代码量较多。ButterKnife在编译时也是会生成新的中间工具类,代码量相对于AA来说略少,但是新增了类文件。并且,在运行时,需要通过一点点反射的技术来实现整体的逻辑。 第三,从上手成都上来说,AA的前期工作略麻烦一些,并且后期需要手动修改类名(XXX的后面加上下划线)ButterKnife则需要在类中添加ButterKnife.Bind方法来使用绑定功能。AA稍微麻烦一丢丢。

B. android library中怎样使用butterknife

配置:
用gradle配置的时候加入:
compile 'com.jakewharton:butterknife:6.1.0'

注意是加在Mole: app的gradle文件中.
加上之后不用运行什么命令,直接Sync一下就可以在External Libraries里面看到butterknife.

功能1: 再也不用写findViewById()啦.
以前的:
mTextView1 = (TextView) findViewById(R.id.butter_text_view_1);

现在可以这样实现:
首先在变量声明的时候加上注解:
@InjectView(R.id.butter_text_view_2)
TextView mTextView2;

如果id找不到,会在编译的时候报错.

之后在设置好布局之后调用ButterKnife.inject():

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_butter_knife);

//using butter knife
ButterKnife.inject(this);
}

之后View对象就可以直接使用了.

需要注意的是View变量声明的时候不能为private或者static.
除了Activity之外,你可以提供其他的View Root,来获取对象(执行注入).
还可以用来简化Adapter里面的ViewHolder:

ButterKnife in Fragment
在Fragment中也可以使用ButterKnife来获取View:

public class SimpleFragment extends Fragment {

@InjectView(R.id.fragment_text_view)
TextView mTextView;

public SimpleFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_simple, container, false);
ButterKnife.inject(this, view);
mTextView.setText("TextView in Fragment are found!");
return view;
}
}

ButterKnife in Adapter ViewHolder
Adapter有一种常用的优化策略,就是使用ViewHolder来减少findViewById()的重复调用.
以前写过相关的博文: http://www.cnblogs.com/mengdd/p/3254323.html

用了ButterKnife之后, ViewHolder的使用可以变成这样:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.person_item_layout, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Person person = getItem(position);
if (null != person) {
holder.name.setText(person.getName());
holder.age.setText(String.valueOf(person.getAge()));
holder.location.setText(person.getLocation());
holder.work.setText(person.getWork());
}

return convertView;
}

static class ViewHolder {
@InjectView(R.id.person_name)
TextView name;
@InjectView(R.id.person_age)
TextView age;
@InjectView(R.id.person_location)
TextView location;
@InjectView(R.id.person_work)
TextView work;

public ViewHolder(View view) {
ButterKnife.inject(this, view);
}
}

可以看到ViewHolder类加了一个带参数View的构造方法,用注解标记每个字段,再也不需要在getView()方法里调用findViewById()方法了.

C. android butterknife 与 databinding 那个好 有什么优点

Android 5.0 之前的版本,对 @ interface 注解操作处理的并不好,效率完全不能和 jvm 相比,所以注重运行流畅的框架基本都抛弃了 注解 的使用。而 ButterKnife 的注入依赖注解,其运行效率必然不高。另外,在一些场景下,比如视图注入的过程中,你并不能优化 ButterKnife 的查找。比如一个我们需要找到一个父视图中的数个子视图,如果纯手工写,我们可以先找到父视图,在从父视图中查找子视图。而 ButterKnife 却要每次重新从根视图去查找,效率也是有所下降的。想了解更多请关注扣丁学堂。

D. android butterknife zelezny怎么使用

首先提下ButterKnifey已经更新到版本7.0.1了,现在注解已经不叫@InjectView了,而叫@Bind,感觉更贴合语义。同时注册的方式也从
ButterKnife.inject(this);

变成了
ButterKnife.bind(this);

关于7.0.1的ButterKnife的各种用法和功能,可以参考ButterKnife的github上的主页:
http://jakewharton.github.io/butterknife/

言归正传开始说说Android Butterknife Zelezny这个插件,事实上这是个Android Studio的plugin,他可以让你在添加Butterkinfe注解时偷偷懒,直接点击几下鼠标既可以完成注解的增加,同时还是图形化的操作,可以说,大大的减轻了开发负担。尤其是当你的layout中有很多很多的view需要通过findviewbyid来获得引用时

E. Android开发ButterKnife的问题

click的方法并不是重载的,原名应该是onClick吧,你是在界面属性定义的绑定点击事件吗?你可以让activity继承借口OnClickListen的从而实现方法的重载

F. android studio怎么一键注解butterknifey

方法/步骤1:导入插件

1
点击“File”文件,选择“Project Structrue……”,如图:

2
点击左侧栏的“app”,然后点击顶部导航的“Dependencies”,最后点击“加号”,如图:

3
点击“加号”后,会出现三个选项,选择第一个(添加第三方库),如图:

4
输入,“butterknife”,点击搜索按钮,如图:

5
选择“com.jakewharton:butterknife:8.1.0”,点击“OK”,如图:

6
这时我们可以看到“Dependencies”中增加了一个,“com.jakewharton:butterknife:8.1.0”,点击“OK”按钮,如图:

7
这时看到,app文件夹下的“build.gradle”文件中,"dependencies"下增加了“compile 'com.jakewharton:butterknife:8.1.0'”,然后就是少许的等待,如图:

8
此时打开project下的“build.gradle”,然后在"dependencies"下增加了“classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'”,如图:

9

时在打开app文件夹下的“build.gradle”,添加“apply plugin: 'android-apt'”,“apt
'com.jakewharton:butterknife-compiler:8.1.0'”,然后点击“Sync Now”,如图:

10
此时引用成功,现在开始使用吧.
END
方法/步骤:使用方法

写XML布局文件,把要想初始化的控件,都加上ID
将鼠标移到代码中的布局的位置,摁快捷键“Alt+Insert”弹出对话框,点击“Generate ButterKnife Injections”,如图:

弹出对话框,看看是不是自己需要的控件,点击“Confirm”,如图:

完成后看到代码,如图:

Fragment使用结果如图:

热点内容
手动安装交叉编译链 发布:2025-01-15 18:15:30 浏览:563
java调用clinux 发布:2025-01-15 18:13:02 浏览:293
如何给孩子配置一份保险 发布:2025-01-15 18:07:53 浏览:456
思科模拟器ftp配置 发布:2025-01-15 18:01:53 浏览:196
wd软件如何修改密码 发布:2025-01-15 17:59:57 浏览:715
公共代理服务器地址 发布:2025-01-15 17:59:53 浏览:818
android文件图片 发布:2025-01-15 17:39:44 浏览:206
linux的路径怎么写 发布:2025-01-15 17:18:49 浏览:185
php解压程序 发布:2025-01-15 17:06:22 浏览:142
刷助力脚本 发布:2025-01-15 17:02:31 浏览:520