在android开发中,我们往往需要很多按钮,比如确定,返回,登录等等,当我们点击后这个按钮会有一个变色的效果,显示用户点了一下,让用户感觉程序和自己有了一个交互的过程,这样用户体验就很好。但是这其中的命名规则很有意思,也和android的SDK版本有关。
比如我想在一个页面加一个返回按钮,我就需要两张图片,一个正常的按钮,一个有灰度的按钮,分别命名为btn_back.png,和btn_back_hover.png。我们想做一个又切换效果的按钮,只需要在res->drawable文件夹中建立一个btn_back.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/btn_back" />
<item android:drawable="@drawable/btn_back_hover" />
</selector>
然后在页面中调用这个xml就可以显示这个按钮了,相关代码如下:
<ImageButton android:id="@+id/btn_top_left"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_centerVertical="true" android:layout_marginLeft="5.0dip"
android:background="@drawable/btn_back" />
正常的情况下,这段代码是没有问题,我在我的三星i9003,和小米手机上都没有问题,但是htc g6 和三星 i5801上都会报错,截图如下: