1

我已经建立了一个自定义视图组,并且我开始在他的视图组中实现动画。我遇到的问题是我需要 viewgroup 能够在没有它的孩子被相同动画动画的情况下进行动画处理。

假设我将视图组缩放到 2 倍大小,但我仍然希望让孩子保持相同大小(从而将更多孩子放入视图组)。

现在我调用动画如下:

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

提前致谢!:)

4

1 回答 1

3

你不能直接用旧的 Android 动画 API 做你想做的事情。您已经注意到一个限制 - 扩展组还包括孩子。

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

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

  1. 在您的布局中加入一个额外的 ViewGroup 小部件,在包含“真实”项目的小部件之上定位和调整大小。最初,它是不可见的。
  2. 使其可见,然后播放动画。
  3. 动画完成后,隐藏额外的小部件,然后通过 LayoutParams 调整真实 ViewGroup 小部件的大小并添加额外的项目。
  4. 您可能需要调整此总体轮廓以使效果看起来平滑。(例如,在从屏幕上删除假视图组之前,在后台调整真实视图组的大小)。

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

于 2011-06-29T17:31:10.947 回答