Android 安卓视图动画放松了视图的位置
对于我当前的项目,我正在构建一个带有句柄和内容的下拉视图。 当我拖动手柄时,一切正常。然后我放开它,开始一个动画来完全打开或关闭下拉菜单 第一:没有动画,一切都很好,但当然不是那么顺利 因此,我为动画添加了以下内容:Android 安卓视图动画放松了视图的位置,android,android-layout,android-animation,Android,Android Layout,Android Animation,对于我当前的项目,我正在构建一个带有句柄和内容的下拉视图。 当我拖动手柄时,一切正常。然后我放开它,开始一个动画来完全打开或关闭下拉菜单 第一:没有动画,一切都很好,但当然不是那么顺利 因此,我为动画添加了以下内容: ObjectAnimator animHandle = ObjectAnimator.ofFloat(mHandleContainer, "y", newHandlePosition); ObjectAnimator animContent = ObjectAnim
ObjectAnimator animHandle = ObjectAnimator.ofFloat(mHandleContainer, "y", newHandlePosition);
ObjectAnimator animContent = ObjectAnimator.ofFloat(mContent, "y", newContentPosition);
final AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animHandle, animContent);
animatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
animatorSet.setDuration(MAX_ANIMATION_DURATION);
animatorSet.start();
这里一切都很好
但是,当我再次按下手柄(mHandleContainer)时,我想知道手柄的位置,所以我要做一个
mHandleContainer.getTop()
这就是问题所在。
初始化自定义组件时,我将句柄的顶部设置为0。
到目前为止还不错,然后我开始拖动,当我放开时,我看到我将设置动画到1134像素的位置。这很好(意味着下拉将完全打开)
但是,我再次按下句柄并得到顶部(getTop()),它仍然返回0
我想要的是视图的getTop()函数再次返回1134
可能吗
或者我应该在AnimatorListener的onAnimationEnd方法中做些什么?
我已经试过在那里做一个mHandleContainer.layout(..),然后我的getTop()就可以了,但是我的布局就坏了
还有让动画在正确的位置结束(就像它那样)并在视图中保持该位置的技巧
我已经在SO(和谷歌)上看过了,但没有找到有用的东西。我能找到的唯一接近我的问题是:
但是也没有帮助…这是因为您在尝试读取属性top时正在设置“y”属性的动画,而它们并不相同。 顶部是视图相对于其父视图的顶部位置。 Y是视图的可视Y位置,相当于平移Y+当前顶部特性 因此,在你的情况下:
ObjectAnimator animHandle = ObjectAnimator.ofFloat(mHandleContainer, "top", 200);
并通过
mHandleContainer.getTop()
mHandleContainer.getY();
mHandleContainer.getTop()
mHandleContainer.getY();
我确实使用基本值Animator解决了这个问题,它每次调用我的自定义绘图方法来移动我的所有视图