对视图组进行动画处理而不对子项进行动画处理

发布于 2024-11-17 21:33:12 字数 311 浏览 2 评论 0原文

我已经构建了一个自定义视图组,并且开始在他的视图组中实现动画。我遇到的问题是,我需要视图组能够进行动画处理,而无需使用相同的动画对其子项进行动画处理。

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

现在我将动画称为如下:

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

提前致谢! :)

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! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柏拉图鍀咏恒 2024-11-24 21:33:12

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

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

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

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

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文