gpt4 book ai didi

android - 挣扎于 View 动画

转载 作者:搜寻专家 更新时间:2023-11-01 09:15:22 24 4
gpt4 key购买 nike

我有一个绝对布局。在该布局中是一个自定义 View ,它占据了屏幕的左侧三分之一。我在布局中放置了一个按钮,我想让自定义 View 在屏幕上滑动。我已经尝试在自定义 View 上使用动画资源(翻译...“slidein”和“slideout”)和函数 startAnimation,但我无法获得我正在寻找的行为。

好的...我从可见的自定义 View 开始,在 onCreate 中找到该 View 并使用我的滑出动画将其设置为动画。那很好用。我发现我需要在动画中设置“fillAfter”,以便自定义 View 不在屏幕上。

现在,当我按下我的按钮时,我想让自定义 View 在屏幕上滑回,所以我再次使用 startAnimation 触发我的滑入动画,但使用 slidein。但是......这会导致 View 首先跳回其原始位置,然后向右滑动......导致它在屏幕中间完成。

如何让动画使用 View 的当前位置作为动画起始位置,而不是它的原始位置?

谢谢

最佳答案

我也经历过这个问题描述的闪烁。我的解决方案是使用改进的 Honeycomb 动画 API。有一个方便的库可以将这些一直移植回 Android 1.0:

http://nineoldandroids.com/

有关 Honeycomb 动画 API 的更多信息,请参阅: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

在我的例子中,我在 RelativeLayout 中有 2 个重叠的 LinearLayouts。我想将顶部的 LinearLayout 滑出屏幕并显示下面的底部 LinearLayout。然后我想在屏幕上将 LinearLayout 滑回其原始位置,以便顶部布局再次覆盖底部布局。使用旧的动画 API,我在第二个动画(屏幕外 -> 屏幕上)开始之前看到了闪烁。

有了新的 API,这项任务变得微不足道:

// Slide out (add to button handler)
ObjectAnimator.ofFloat(mTopLayout, "translationY", mTopLayout.getHeight()).start();

// Slide back in (add to button handler)
ObjectAnimator.ofFloat(mTopLayout, "translationY", 0).start();

Honeycomb Animation API 实际上是在屏幕上四处移动对象(而不是像旧的动画 API 那样假装移动它们),因此无需使用 filleAfter、fillBefore 等。

关于android - 挣扎于 View 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5073265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com