Butter Knife是一款非常不错的开源框架,其目的是简化代码,提高项目的开发效率。@H_301_3@
以往的开发我们经常需要用findViewById(R.xx.xxx);几乎没个页面都会涉及到,无论Activity还是Fragment甚至listView、GridView中的@H_301_3@@H_301_3@
Adapter.这些重复性的代码会让人觉得很枯燥,因为闭上眼都不会敲错的代码,每天重复几百遍是有点耗时,尽管有代码提示。而且可能会因为不同field的忘记书写而导致NullPoint空指针。@H_301_3@@H_301_3@
步骤:@H_301_3@
第三方框架和库引入的规律都差不多,1.下载库,2.引入,3.浏览文档,查看API。有的是库项目,有的是jar包,但基本同理,最后注意代码混淆的问题。@H_301_3@
@H_301_3@
1、准备阶段,先到官网(@H_301_3@@H_301_3@http://jakewharton.github.io/butterknife/)上jar包,下载下来。
2、把下载下来的jar包,放到项目的libs下,就会自动导入项目了。
3、配置eclips,鼠标对准需要注解的项目,单击右键 poperties –>java Compiler –>
Annotation Procession –> 钩一下 Enable project specific settings 其它的就会自动钩上了
–> Factory Path ( 钩一下Enable project specific settings )–> 最后Add …. JARs 把刚刚下载的jar包来。这样eclips配置就可以了。
4、以下是图片讲解。
5、是用注解,直接上代码。
XML布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tv_test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/hello_world" tools:context=".MainActivity" /> </RelativeLayout>
@H_301_3@code代码部分:
import butterknife.ButterKnife; import butterknife.InjectView; import butterknife.OnClick; import android.os.Bundle; import android.app.Activity; import android.widget.TextView; public class MainActivity extends Activity { @InjectView(R.id.tv_test) TextView tvTest; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.inject(this); tvTest.setText("test"); } @OnClick(R.id.tv_test) public void sayHi() { tvTest.setText("Hello!"); } }
@H_301_3@现在:RUN IT! It will be funny!看上去是不是有点意思,别只是看看热闹,动手吧,你也可以像高手一样编写代码,效率一点不必他们差哦。
参考:http://jakewharton.github.io/butterknife/这里有各种使用注解的示例,就不具体演示,因为看一遍便可上手,新手们也可以尝试哦。@H_301_3@
@H_301_3@
-dontwarn butterknife.internal.** -keep class **$$ViewInjector { *; } -keepnames class * { @butterknife.InjectView *;}