水平にドラッグ可能なビューが 3 つあります。たとえば、最初に 2 番目にドロップすると、2 番目と 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);
}
OK、ドロップ後、2 番目と 3 番目のビューが右に移動します。
その後、1 番目と 2 番目と 3 番目のビューの間の空きスペースを長押しすると、何が表示されますか? 2 番目のビューのドラッグが開始されました! しかし、実際には、触れることができるよりも、より正しく表示されています。2 番目または 3 番目のビューの「視覚的」表現は、アニメーション後に触れることはできません。
なんで?