对于我当前的项目,我正在构建一个带有句柄和内容的下拉视图。当我通过拖动来移动手柄时,一切都很好。然后我放开它并开始一个动画来完全打开或关闭下拉菜单。
第一:没有动画,一切都很好,但当然不是那么顺利......
所以我为动画添加了这个:
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(和 Google),但没有找到有用的东西。我能找到的唯一接近我的问题的是:NineOldAndroids,旋转或移动后不可点击的视图 但也没有帮助......