ViewFlipper を使用して、ホーム画面のように動作させようとしています (レイアウトは指で移動します)。例については、これを確認してください。2 つの子のみを含む ViewFlipper でこれを行いたいので、ユーザーが指を動かす方法に応じて、現在のビューの両側に反対のビューを表示する必要があります。このコードは機能しますが、一度に 1 方向のみです。これは onTouchEvent にあります。
case MotionEvent.ACTION_MOVE:
leftView.setVisibility(View.VISIBLE);
rightView.setVisibility(View.VISIBLE);
// move the current view to the left or right.
currentView.layout((int) (touchEvent.getX() - oldTouchValue),
currentView.getTop(),
(int) (touchEvent.getX() - oldTouchValue) + 320,
currentView.getBottom());
// place this view just left of the currentView
leftView.layout(currentView.getLeft() - 320, leftView.getTop(),
currentView.getLeft(), leftView.getBottom());
// place this view just right of the currentView
rightView.layout(currentView.getRight(), rightView.getTop(),
currentView.getRight() + 320, rightView.getBottom());
その方向の最後に配置した下の 2 行のうち、どちらが正しく機能しますが、もう一方は機能しません。
leftView と rightView を設定する方法は次のとおりです。
final View currentView = myFlipper.getCurrentView();
final View leftView, rightView;
if (currentView == meView) {
Log.d("current layout: ", "me");
leftView = youView;
rightView = youView;
} else if (currentView == youView) {
Log.d("current layout: ", "you");
leftView = meView;
rightView = meView;
} else {
leftView = null;
rightView = null;
}
現在のビューの両側に同じビューが表示されるように設定することはできますか?