动画视图组而不动画儿童

时间:2011-06-29 17:17:33

标签: android animation viewgroup

我已经建立了一个自定义视图组,并开始在他的视图组中实现动画。我遇到的问题是我需要视图组能够动画,而不会让它的孩子被同一个动画制作动画。

让我们说我将视图组缩放到2倍大小,但我仍然想让孩子保持相同的大小(从而使更多的孩子进入视图组)。

现在我按照以下方式调用动画:

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

提前致谢! :)

1 个答案:

答案 0 :(得分:3)

您无法直接执行旧版Android动画API的操作。您已经注意到一个限制 - 扩展组也包括孩子。

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

你正在寻找的方法可能是:

  1. 合并一个额外的ViewGroup 布局中的小部件,定位 并在小部件上方调整大小 包含“真实”项目。 最初,它是隐形的。
  2. 请 它可见,并播放动画。
  3. 动画完成后,隐藏 额外的小部件,然后调整你的真实 ViewGroup小部件通过LayoutParams 并添加你的额外物品。
  4. 您会 可能需要调整这个一般 大纲使效果看起来 平滑。 (例如,在从屏幕上删除虚假视图组之前,在后台调整实际视图组的大小)。
  5. Android在3.0 Honeycomb中引入了更新,更灵活的动画API,但不幸的是,如果你的目标是2.x设备(即手机),它就不可用。希望一旦新的API成为主流,这将更容易。