2012-05-03 26 views
7

有没有什么方法在Android中为按钮设置动画效果,以便当您单击它时将按钮的背景更改为按下的图像?单击视觉状态变化时的按钮

我只使用背景属性在窗体按钮上显示图像。

+3

动画在这个意义上是误导性的,因为它们本身没有真正的“动画”,而只是状态变化的反映。 (我这样说是因为我试图实际制作一个按钮的动画效果,而且这个线程根本没有帮助!) – styler1972

回答

20

使用此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/category_listing_bg_img" /> 
<item android:state_pressed="true" android:drawable="@drawable/category_listing_bg_img_pressed" /> 
</selector> 
1

是的。实现onTouchListener。使用MotionEvent变量(可以说事件)在onTouch方法写:

if (event.getAction() == MotionEvent.ACTION_DOWN){ 
    /*Code*/ 
} 
if (event.getAction() == MotionEvent.ACTION_UP){ 
    /*Code*/ 
} 
+0

你看过这个问题吗? – thepoosh

+0

上面这个KKD发布的方法也可以使用thepoosh,效果很好。 –

5

你的资源添加XML文件/绘制文件夹名称为button_selector.xml,对于按下的状态还放置了两个可绘制的状态,其他为未压缩状态或正常状态。最后添加这两个你的XML文件按钮选择器,一切都应该工作!不要忘记在你的main.xml文件中设置@ drawable/bytton_selector.xml作为你的按钮的背景。

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

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

    </selector> 
+0

它的工作原理,但我想知道为什么android:state_pressed =“false”不需要?我没有它的测试,仍然工作..可以表现更好,而不是检查两个状态? – lynndragon