安卓TextView、Button点击效果背景变化实现

安卓TextView、Button点击效果背景变化实现

android UI开发中最经常用到的就是各种控件的点击事件,比如TextView和Button,点击时背景色有个变化提醒用户触发了点击事件,当用户手指抬起时,背景色又恢复正常,这种效果配置方法很简单,两步即可。

第一步 编写一个XML文件

该文件位于drawable文件夹下面,根据使用的背景的资源不同,写法也不同,比如有的背景直接使用的是颜色,有的是用的是图片,下面列举几个写法。

这是使用图片资源的写法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<!--设置按钮点击时,点击后,按钮这2种状态的改变和设置-->
<!--按钮按下时的设置  -->
<item android:state_pressed="true" android:drawable="@drawable/enter"></item>
<!--按钮松开时的设置  -->
<item android:state_pressed="false" android:drawable="@drawable/exit"  ></item>
<!--按钮被选中后显示的图片  ,对Android好像并没有什么用!-->
<item android:state_focused="true" android:drawable="@drawable/setting"  ></item>
</selector>

这是使用自定义shape的写法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#11000000" />
        </shape>
    </item>
    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <!-- 透明色 -->
            <solid android:color="#00000000" />
        </shape>
    </item>
</selector>

这是直接使用颜色的写法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/holo_orange_dark" android:state_pressed="true"></item>
    <item android:drawable="@android:color/holo_orange_light"></item>
</selector>

注意,上面的写法中,属性android:drawable有同学会误写成android:background,的确我们常用background属性来设置背景,并且这样写编译也不会报错,但是运行起来会报错的,所以要注意用的是android:drawable而不是android:background。

第二步 设置控件属性

为要添加点击效果的控件设置background属性,如下

android:background="@drawable/第一步的xml文件的名字"


补充材料:

android:state_selected 是否选中
android:state_focused 是否获得焦点
android:state_pressed 是否点击
android:state_enabled 是否设置是否响应事件,指所有事件

在写drawable xml文件时,我们在运用android:state_pressed、android:state_focused等状态属性时,一定要知道每个item语句是顺序执行的,遇到第一个符合条件的item即执行该语句并且不再往下面执行,所以当你想要的点击效果没有出来时,检查一下item语句的顺序。

猜你喜欢

转载自blog.csdn.net/baidu_27196493/article/details/80747286