質問

私はビューフリッパーを使用して、ホーム画面のように動作させようとしています(レイアウトは指で動きます)。 これをチェックしてください 例として。私はこれをビューフリッパーで行いたいと思っています。これは、2人の子供のみを含むので、ユーザーが指を動かす方法に応じて、現在のビューの両側に反対のビューを表示する必要があります。このコードは機能しますが、一度に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;
}

現在のビューの両側に同じビューが表示されるように、セットアップすることは可能ですか?

役に立ちましたか?

解決

StealthCopterに感謝します

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

        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());

        }

また、ビューのちらつきを取り除くために、MotionEvent.action_DownにsetVisibility()呼び出しを移動しました。これは助けになりましたが、私はまだ少し得ています。

他のヒント

私はおそらくあまり建設的な提案ではありませんが、あなたがそれをホーム画面のように振る舞いたいなら、なぜあなたは そのsrc, 、そしてそれをあなたのニーズに合わせて変更しますか?

ちらつきを取り除くには、セットします setVisibility(View.INVISIBLE)MotionEvent.ACTION_DOWN. 。デフォルト値は、ビューで「なくなった」です。つまり、設定できないことを意味します Layout() それが「可視」または「目に見えない」のいずれかになるまで、ビューで。だから3つのステップで:

  1. ビューで可視性を見えないように設定します
  2. ビューでレイアウト()を設定します
  3. ビューで可視性を表示するように設定します

私があなたの要求を理解している場合、この効果は今、 ページャーを表示します

このように見えます:

enter image description here

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top