android 按钮点击变换颜色
时间: 2023-05-08 07:02:08 浏览: 1679
在开发Android应用时,经常需要为按钮添加一些效果来增强交互性,其中一种常见的效果就是点击按钮后改变背景颜色。下面介绍两种实现方法。
方法一:使用Selector
Selector是一种状态选择器,根据按钮的点击状态来改变按钮的背景。具体操作步骤如下:
1. 创建一个drawable资源文件,命名为button_bg.xml,内容如下:
```
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/colorPrimaryDark" />
<item android:state_enabled="true" android:drawable="@color/colorPrimary" />
<item android:drawable="@color/colorGray" />
</selector>
```
在这个文件中,使用了三个item来表示按钮不同的状态,分别是:
- 当按钮被点击时,state_pressed属性为true,此时按钮的背景颜色为@color/colorPrimaryDark。
- 当按钮可用且未被点击时,state_enabled属性为true,按钮的背景颜色为@color/colorPrimary。
- 当按钮不可用时,即state_enabled属性为false,按钮的背景颜色为@color/colorGray。
2. 将drawable资源文件设置为按钮的背景。在xml布局文件中添加如下代码:
```
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:text="按钮" />
```
这样,当按钮被点击时,按钮的背景颜色就会变为@color/colorPrimaryDark。
方法二:使用ShapeDrawable
ShapeDrawable是一种自定义可绘制对象,可以用来绘制简单的形状,例如矩形、圆形等。具体操作步骤如下:
1. 创建一个drawable资源文件,命名为button_bg.xml,内容如下:
```
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary" />
<corners android:radius="5dp" />
</shape>
```
在这个文件中,定义了一个矩形,宽度和高度与按钮相同,圆角为5dp,填充颜色为@color/colorPrimary。
2. 在Java代码中设置按钮的点击事件。代码如下:
```
Button btn = findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setBackground(new ColorDrawable(getResources().getColor(R.color.colorPrimaryDark)));
}
});
```
当按钮被点击时,设置按钮的背景为@color/colorPrimaryDark。
两种方法各有优缺点,可以根据具体需求选择适合的方法。Selector需要编写xml文件,但是对于整个应用中大量相同样式的按钮来说,可以减少代码量,提高开发效率。ShapeDrawable不需要额外的xml文件,代码量较少,但是在大量重复使用时需要在Java代码中实现,稍微繁琐一些。
阅读全文