【问题标题】:Animate viewgroup without animating children为视图组设置动画而不为子项设置动画
【发布时间】:2011-06-29 17:17:32
【问题描述】:

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

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

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

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

提前致谢! :)

【问题讨论】:

    标签: android animation viewgroup


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您提供的信息丰富的答案,竖起大拇指!但是,我将此特定应用程序定位到平板电脑,因此我可以明确地使用新的动画框架。如果你能指出我用蜂窝 API 解决这个问题的方向,那将非常有帮助:)
    • 希望我能帮助您,但我不是新 Honeycomb API 方面的专家。我的应用程序支持带有一个 APK 的手机和平板电脑,因此我被困在最低公分母上。但要开始使用 Honeycomb API,请查看 Google Android 团队的以下文章:android-developers.blogspot.com/2011/02/…android-developers.blogspot.com/2011/05/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多