Butter Knife?
黄油刀是一个非常好的Android视图注入库。 黄油刀有助于减少许多样板代码(例如,重复的findViewById调用)。 如果您处理的活动具有大量的视图,那么您就会知道,将代码与“ findViewById”集群在一起时,它很容易变得笨拙。 如果您有此问题,黄油刀是一个不错的库,可以查阅一下,这将是有关如何使用黄油刀的介绍。
即使您不想使用它,也有个好主意,这样,当您的Android朋友谈论黄油刀时,您就不会在考虑面包ðŸ〜。
图片说一千个单词,代码片段说一万个……ðð。 因此,我将举例说明何时使用黄油刀,何时不使用黄油刀,这样做您将很容易看到差异。 了解了此处展示的内容之后,您可以通过学习有关该图书馆的更多信息来进一步了解自己的知识。
只是让您知道,黄油刀不会以任何方式减慢您的应用程序,因为它使用了编译时注释,因此在运行时没有任何额外的成本。
Before Butter knife
我将要使用的UI在下面,它对您有所帮助,以便您可以了解发生了什么。
UI中有一个TextView和两个按钮。 我们将做两件事,有和没有黄油刀,这是在按钮上设置onClick侦听器并编辑文本视图ðŸ〜‹。
The UI
我希望您在XML中注意到的唯一重要的事情是指向视图ID的“ android:id”值。
以下是此视图的XML代码:
<Button
android:id="@+id/Abtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="203dp"
android:layout_marginStart="48dp"
android:text="Button" />
<Button
android:id="@+id/Bbtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignTop="@+id/Abtn"
android:layout_marginEnd="24dp"
android:text="Button" />
<TextView
android:id="@+id/BKtxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginEnd="28dp"
android:layout_marginTop="74dp"
android:layout_toStartOf="@+id/Bbtn"
android:text="ButterKnife"
android:textSize="20sp" />
因此,如果我想为第一个按钮设置一个onClick侦听器,该按钮的ID为“ Abtn”,这就是不用黄油刀时我可以做的事情:
public class MainActivity extends AppCompatActivity {
Button firstButton;//Button variable
TextView BKtxt;//TextView variable
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstButton = (Button) findViewById(R.id.Abtn);//Button
BKtxt = (TextView) findViewById(R.id.BKtxt);//Textview
firstButton.setOnClickListener(new View.OnClickListener() {//set onclick listener for Button
@Override
public void onClick(View view) {
BKtxt.setText("It works");
}
});
}
}
因此,当单击第一个按钮时,它实际上会将“文本视图”的文本更改为“有效”。 很好,不是吗。 好吧,让我们尝试使用黄油刀🔪。
Using Butter knife
为了使用黄油刀,您将必须添加一些依赖项。 将以下内容添加到app / build.gradle文件
dependencies {
//bla bla bla
//.
//.
//.
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}
另外,请确保升级到最新的Gradle版本,以使用注释处理器语法💊。
下面的示例使用黄油刀完成。
public class MainActivity extends AppCompatActivity {
@BindView(R.id.BKtxt)
TextView BKtxt;//This is all we need for the text view
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);//important to add this under super.onCreate and setContentView
}
@OnClick(R.id.Abtn)
public void firstclick(Button button)
{
BKtxt.setText("It works");
}
}
它可以做的事情还很多,例如,除了为每个按钮创建点击侦听器之外,我还可以这样做:
@OnClick({R.id.Abtn,R.id.Bbtn})//the two buttons now use the same onClick
public void firstclick(Button button)
{
BKtxt.setText("It works");
}
您还可以对视图进行分组并对其进行分组操作:
// Group the views together
@BindViews({ R.id.Abtn,R.id.Bbtn})
List<Button> daButtons;
因此,如果您尚未尝试,请尝试一下! 对于其他只想有个主意的人来说,这很好。 您至少知道它的意思和优点。 继续阅读更多有关它的信息,它确实是一个很好的工具ðŸ’。