2011-06-29 62 views
1

我已经建立了一个自定义viewgroup和m开始实施动画他的viewgroup。我遇到的问题是我需要视图组能够在没有它的孩子被相同动画动画的情况下进行动画制作。可以说我将视图组缩放为2倍大小,但我仍然想让孩子保持相同的大小(从而让更多的孩子进入视图组)。Animate viewgroup没有动画儿童

现在我打电话动画如下:提前

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

谢谢! :)

回答

3

你不能直接做你想用旧的Android动画API做什么。你已经注意到了一个限制 - 缩放组还包括孩子。

第二个限制是旧的Android动画API仅影响您正在动画的项目的视觉渲染,并且仅在动画处于活动状态时才会生效。换句话说,就视图布局而言,它实际上并未改变所讨论项目的大小或位置。它只是临时呈现它不同的方式。因此,举例来说,要在屏幕上为从x移动到y的按钮设置动画,您需要运行动画,然后在动画完成时使用布局API实际重新定位按钮。

可能做你要找的内容的方式是:

  1. 在布局纳入一个额外的ViewGroup 部件,定位 和尺寸在顶部包含“真正”的项目小部件 。 最初,它是不可见的。
  2. 使 它可见,并播放动画。
  3. 当动画完成时,隐藏 额外的小部件,然后通过LayoutParams 调整您的真实 ViewGroup小部件并添加您的额外项目。
  4. 你会 大概需要调整这个一般 提纲,使效果看起来 平稳。 (例如,在从屏幕中删除假视图组之前,在后台调整实际视图组的大小)。

Android在3.0 Honeycomb中引入了一个更新,更灵活的动画API,但不幸的是,如果您的目标是2.x设备(即手机),它不可用。希望一旦新的API成为主流,这将会更容易。

+0

感谢您提供的信息丰富的答案,竖起大拇指!不过,我针对平板电脑的这个特定应用程序,所以我可以定义使用新的动画框架。如果你能指出我用蜂窝apis解决这个问题的方向,那将是非常有用的:) –

+0

希望我能帮助你,但我不是新蜂窝API的专家。我的应用程序支持带有一个APK的手机和平板电脑,因此我坚持编码为最低公分母。但要开始使用Honeycomb API,请查看Google Android团队的这些文章:http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html和http:// android-developers .blogspot.com/2011/05/introduction-viewpropertyanimator.html – mportuesisf

+0

非常感谢:) –