如何使用自定义背景图像制作按钮在Android中显示点击动画

Pri*_*tam 8 android

如何使按钮显示在Android中使用自定义背景图像单击按钮(通过设置下降/某些更改).我不想包含更多图像,并将不同的图像设置为不同的状态,如google hello views示例中所示.谢谢.

Pra*_*een 12

你必须使用两个图像来做到这一点.

  1. button_normal
  2. button_pressed

然后在drawable文件夹中创建一个xml资源

<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="false"
    android:drawable="@drawable/button_normal" />

<item android:state_pressed="true"
    android:drawable="@drawable/button_pressed" />

</selector>
Run Code Online (Sandbox Code Playgroud)

然后,将此文件设置为imageview的背景.这里我们使用imageview作为按钮.别忘了在drawable文件夹中包含这两个按钮.而已.

  • 感谢您的回复,但正如我已经提到的,这个解决方案需要2个drawables(drawable/button_normal和drawable/button_pressed),我想避免在我的应用程序中为不同的按钮状态提供额外的drawable,因为有许多不同的按钮.我的目的是只向用户提供按下按钮的反馈.有什么工作吗? (2认同)

Ste*_*ley 4

使用 ColorFilter 方法可以只处理一个图像文件。但是,ColorFilter 期望与 ImageView 一起使用,而不是与 Button 一起使用,因此您必须将按钮转换为 ImageView。无论如何,如果您使用图像作为按钮,这不是问题,但如果您有文本,那就更烦人了……无论如何,假设您找到了解决文本问题的方法,下面是要使用的代码:

ImageView button = (ImageView) findViewById(R.id.button);
button.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
Run Code Online (Sandbox Code Playgroud)

这会将红色覆盖层应用于按钮(颜色代码是完全不透明红色的十六进制代码 - 前两位数字是透明的,然后是 RR GG BB。)。

您可以通过将 sdkfolder/platforms/(android version/data/res/drawable) 中的 btn_default_normal.9.png 文件复制到您自己的项目中,使您的 ImageView 看起来像普通按钮。然后在您的 ImageView 中使用并android:background="@drawable/btn_normal_default"android:src="..."按钮。