【发布时间】:2012-08-25 21:05:54
【问题描述】:
我有 3 个水平可拖动视图。例如,如果我将第一个放在第二个上 - 第二个和第三个必须向右移动。 初始位置:
代码:
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);
}
好的,放下第二个和第三个视图后向右移动:
之后,我长按到第 1 次和第 2 次+第 3 次视图之间的空白处,我看到了什么?开始第二个视图的拖动!但实际上它显示得比它可以触摸的更正确。第二或第三视图的“视觉”表示在动画后不可触摸:
为什么?
【问题讨论】:
标签: android android-animation android-4.0-ice-cream-sandwich android-4.2-jelly-bean