4

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;
}

現在のビューの両側に同じビューが表示されるように設定することはできますか?

4

4 に答える 4

1

ありがとうステルスコプター

ここで機能したのは、誰かが興味を持っている場合の新しいコードです。

        if (touchEvent.getX() < oldTouchValue){
             // place this view just right of the currentView
            rightView.layout(currentView.getRight(), rightView.getTop(), 
                            currentView.getRight() + 320, rightView.getBottom());

        }else if (touchEvent.getX() > oldTouchValue) {
            // place this view just left of the currentView
            leftView.layout(currentView.getLeft() - 320, leftView.getTop(),
                            currentView.getLeft(), leftView.getBottom());

        }

また、ビューのちらつきをなくすために、 setVisibility() 呼び出しを MotionEvent.ACTION_DOWN に移動しました。これは役に立ちましたが、まだ少し得ています。

于 2010-04-29T19:30:03.417 に答える
0

おそらくあまり建設的な提案はありませんが、ホーム画面のように動作させたい場合は、そのsrcを見て、必要に応じて変更したくないのはなぜですか?

于 2010-04-28T18:35:05.320 に答える
0

あなたの要求を理解できれば、この効果はビュー ページャーを使用して実装する必要があります。

次のようになります。

ここに画像の説明を入力

于 2011-10-12T04:57:11.020 に答える
0

ちらつきをなくすには、 に設定setVisibility(View.INVISIBLE)MotionEvent.ACTION_DOWNます。ビューのデフォルト値は「GONE」です。つまりLayout()、ビューが「VISIBLE」または「INVISIBLE」になるまでビューを設定できないということです。したがって、3つのステップで:

  1. ビューで可視性を INVISIBLE に設定する
  2. ビューに Layout() を設定する
  3. ビューで可視性を可視に設定
于 2011-03-15T14:06:28.960 に答える