gpt4 book ai didi

Android View 在视觉上处于正常位置,但实际上 - 在 TranslateAnimation 之后的起始位置

转载 作者:行者123 更新时间:2023-11-30 04:03:22 25 4
gpt4 key购买 nike

我有 3 个水平可拖动 View 。例如,如果我先落在第二个上 - 第二个和第三个必须向右移动。初始位置: enter image description here

代码:

case DragEvent.ACTION_DROP:
targetIndex = ((ViewInfo) targetView.getTag()).index;
int lastIndex = getChildCount() - 1;
droppedView = (View) event.getLocalState();
droppedIndex = ((ViewInfo) droppedView.getTag()).index;

if (droppedView == this) {
return false;
}

for (int i = targetIndex; i <= lastIndex; i++) {
if (getChildAt(i) != droppedView) {
moveChildToRight(i);
}
}

private void moveChildToRight(int index) {
....
TranslateAnimation anim = new TranslateAnimation(0, 200, 0, 0);
anim.setDuration(1000);
anim.setFillAfter(true);
anim.setAnimationListener(new AnimationListener() {

@Override
public void onAnimationEnd(Animation animation) {
Log.d(TAG, "Animation ended");
requestLayout();
}

@Override
public void onAnimationRepeat(Animation arg0) {
// TODO Auto-generated method stub

}

@Override
public void onAnimationStart(Animation arg0) {
// TODO Auto-generated method stub

}

});

child.startAnimation(anim);
}

好的,放下后,第二个和第三个 View 向右移动: After drop

之后,我长按到第 1 和第 2+3 View 之间的空白处,我看到了什么?第二 View 拖动启动!但它实际上显示得比它可以触摸的更正确。第二或第三 View 的“视觉”表示在动画后不可触摸: Bug

为什么?

最佳答案

我知道这已经超过一年了,但我会回答以防其他人找到该页面。

这就是翻译动画(查看动画)的工作原理。它在视觉上移动对象,但不更新实际的 X/Y 属性。例如,如果您的 View 是按钮,那么在原始区域中触摸会显示在视觉上按钮所在的位置上的点击,但是在您看到按钮的位置上点击不会执行任何操作,因为实际的按钮从未移动过。

关于Android View 在视觉上处于正常位置,但实际上 - 在 TranslateAnimation 之后的起始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12125658/

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