views:

38

answers:

1

Hi,

I've taken some animation xml straight from the android docs, and as far as I can see, doesn't work on either my 2.1 update 1 emulator or my 2.1 update 1 Galaxy S device.

Specifically, I'm trying to create an animation to pulsate a view (i.e. make it smaller then larger in one animation) This is the very simple markup:

<?xml version="1.0" encoding="utf-8"?> 
<set 
        xmlns:android="http://schemas.android.com/apk/res/android"&gt; 
        <scale 
                android:fromXScale="1.0" 
                android:toXScale="0.5" 
                android:fromYScale="1.0" 
                android:toYScale="0.5" 
                android:pivotX="50%" 
                android:pivotY="50%" 
                android:duration="1000" /> 
                <set android:startOffset="1000"> 
                        <scale 
                        android:fromXScale="0.5" 
                        android:toXScale="1.0" 
                        android:fromYScale="0.5" 
                        android:toYScale="1.0" 
                        android:pivotX="50%" 
                        android:pivotY="50%" 
                        android:duration="1000" /> 
                </set> 
</set> 

So what I'm trying to achieve is to reduce the view from its size to half of it over a second, then to increase it back to its original size over a second. So to re-iterate, over two seconds it should go from original -> half size -> original.

What actually happens is it snaps instantly to half of the views size (even though fromX/YScale is at 1.0) and then performs the animation over two seconds and snaps back to original size afterwards.

Can anyone else try this out quickly? If others see this behaviour I'll submit it as a bug. I just can't believe something so basic could be broken!?

Also, copying this animation under the "Tween Animation" heading on this page http://developer.android.com/guide/topics/graphics/2d-graphics.html word for word also doesn't animate as per the page says. Seems to be broken in exactly the same way!

Anyone got any ideas?

Thanks!

Andy.

+1  A: 

I removed the second <set> tag, so there's only one <set> with two <scale> children. This got one cycle working ok but it failed to repeat. Maybe you have to listen for the animation ending and manually restart it (so the offsets start from 0 each time).

On the bright side I was able to use repeatMode to achieve the effect you seem to want, using just one tag:

<scale xmlns:android="http://schemas.android.com/apk/res/android" 
        android:repeatMode="reverse"
        android:fromXScale="1.0" 
        android:toXScale="0.5" 
        android:fromYScale="1.0" 
        android:toYScale="0.5" 
        android:pivotX="50%" 
        android:pivotY="50%" 
        android:duration="1000" />
Reuben Scratton
Nearly there! I needed to add android:repeatCount="1" for it to work, else it does the scale out animation and snaps back (instead of animating back). Either way it works with this addition! Thanks a bunch! :) On a side note, I actually tried this approach, all-be-it in code, but it didn't repeat, just always snapped despite the repeat count! Android docs fail again! ;)
Andy
Sorry, I forgot that little detail (which I'd done in code, not XML).
Reuben Scratton