Android版黄油刀简介

黄油刀是一个Android视图注入库,减少了findViewById的使用,简化UI代码。本文介绍了黄油刀如何减少样板代码,展示了使用与不使用黄油刀的区别,并提供了添加依赖及使用示例。
摘要由CSDN通过智能技术生成

Butter Knife?

黄油刀是一个非常好的Android视图注入库。 黄油刀有助于减少许多样板代码(例如,重复的findViewById调用)。 如果您处理的活动具有大量的视图,那么您就会知道,将代码与“ findViewById”集群在一起时,它很容易变得笨拙。 如果您有此问题,黄油刀是一个不错的库,可以查阅一下,这将是有关如何使用黄油刀的介绍。

即使您不想使用它,也有个好主意,这样,当您的Android朋友谈论黄油刀时,您就不会在考虑面包ðŸ〜。

图片说一千个单词,代码片段说一万个……ðð。 因此,我将举例说明何时使用黄油刀,何时不使用黄油刀,这样做您将很容易看到差异。 了解了此处展示的内容之后,您可以通过学习有关该图书馆的更多信息来进一步了解自己的知识。

只是让您知道,黄油刀不会以任何方式减慢您的应用程序,因为它使用了编译时注释,因此在运行时没有任何额外的成本。

Before Butter knife

我将要使用的UI在下面,它对您有所帮助,以便您可以了解发生了什么。

UI中有一个TextView和两个按钮。 我们将做两件事,有和没有黄油刀,这是在按钮上设置onClick侦听器并编辑文本视图ðŸ〜‹。

The UI

Mountain View

我希望您在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;

因此,如果您尚未尝试,请尝试一下! 对于其他只想有个主意的人来说,这很好。 您至少知道它的意思和优点。 继续阅读更多有关它的信息,它确实是一个很好的工具ðŸ’。

from: https://dev.to//lemuelogbunude/intro-to-butter-knife-for-android-views-d4e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值