1

i have built a custom viewgroup and m beginning to implement animations tot his viewgroup. the problem i am having is that i need the viewgroup to be able to animate without it's children being animated by the same animation.

Lets say i am scaling the viewgroup to 2x size, but i still want to keep children at the same size (thus fitting more children into the viewgroup).

Right now i am calling the animation as follows:

    ScaleAnimation expandAnimation =  new ScaleAnimation(1,2,1,2);
    this.startAnimation(expandAnimation);

Thanks in advance! :)

WendiKidd
  • 4,333
  • 4
  • 33
  • 50
Emil Sjölander
  • 1,773
  • 4
  • 19
  • 27

1 Answers1

3

You can't directly do what you're seeking to do with the old Android animation API. You've already noticed one limitation - that scaling the group also includes the children.

The second limitation is that the old Android animation API only affects the visual render of the item you're animating, and only for the time the animation is active. In other words, it doesn't actually alter the size or positioning of the item in question in terms of view layout. It only temporarily renders it a different way. So for instance, to animate a button moving from x to y across the screen, you would need to run the animation, then when the animation completes actually reposition the button using the layout APIs.

Probably the way to do what you're looking for is:

  1. Incorporate an extra ViewGroup widget in your layout, positioned and sized over top the widget containing the "real" items. Initially, it's invisible.
  2. Make it visible, and play the animation.
  3. When animation complete, hide the extra widget, then resize your real ViewGroup widget via LayoutParams and add your extra items.
  4. You'll probably need to tweak this general outline to make the effect look smooth. (For instance, resize the real viewgroup in the background before you remove the fake viewgroup from the screen).

Android introduced a newer, more flexible animation API in 3.0 Honeycomb, but unfortunately it's not available if you're targeting 2.x devices (i.e., phones). Hopefully this will be easier once the new APIs are mainstream.

mportuesisf
  • 5,587
  • 2
  • 33
  • 26
  • thanks for the informative answer, thumbs up! however, i am targeting this specific application to tablets so i can definently use the new animation framework. Would be really helpfull if you could point me into the direction of solving this problem with the honeycomb apis :) – Emil Sjölander Jun 29 '11 at 18:17
  • Wish I could help you, but I'm not an expert with the new Honeycomb APIs. My app supports phones and tablets with one APK, and so I'm stuck coding to lowest common denominator. But to get started with the Honeycomb APIs, check out these articles from the Google Android team: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html and http://android-developers.blogspot.com/2011/05/introducing-viewpropertyanimator.html – mportuesisf Jun 29 '11 at 18:21