2011-02-15 130 views
2

我有一个酒吧与几个ImageViews,他们每个人都用作一个按钮(通过使用OnClickListener)。现在我想要实现的是,当用户按下图像时,图像周围会出现某种发光效果(就像在iPhone上按barButton时一样)。Android:动画图像?

这可能吗?

回答

1

这是可能的。达到此目的的正确方法是定义一个StateList Drawable
状态列表为每个状态定义一个单独的drawable。

例如下面的XML定义了一可拉伸表示如果按钮按下blue_button_pressed绘制和在所有其他情况下,可绘制blue_button_active。

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

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

<item 
    android:drawable="@drawable/blue_button_active"/> 

</selector> 

你把这个文件中的文件夹绘制像任何其他图像,也引用它的布局文件像任何其他绘制。

+1

好的,但是这意味着我将不得不手动创建2个图像。那里没有内置的动画吗? – Alex1987 2011-02-15 11:56:29

-1

您可以手动生成此发光效果作为背景图片,并使其在单击时显示为实际图像背后的父视图。但我不认为有任何本地功能。

0

尽管出于某种原因,大多数视图实际上并没有动画动画可绘制。要做到这一点,你必须通过调用AnimationDrawablestart()方法(或Animatable,对于这个问题)手动启动动画。

虽然将Drawable设置为View后,您不能立即执行此操作,但出于某种奇怪的原因。相反,你可以尝试发布开始通话的处理程序,使存在Drawable和初始设置其动画的开始之间的一段时间。

没有时间找出为什么它的行为这样还,但它是我最后不得不做的事。