MotionEvent.ACTION_MOVEを使用してホーム画面のようなViewFlipperを作る

? DJTripleThreat @ | Original: StackOverFlow
---

[OK]を私は「 ____ 」 3と「 ____ 」その中にネストされている。最初の1を示すためにそれをデフォルトとします。このコード:

ViewFlipper

...ビューフリッピングを処理しますが、アニメーションは、 「オン/オフ」に非常にある。誰かが最後の部分で私を助けることができる場合、私は思ったんだけど。私はLinearLayoutsにアクセスできると仮定すると、私はdeltaXはとdeltaY移動に基づいてレイアウトの位置を設定することができます方法はありますか?

誰かが私にこのリンクを与えた: https://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/view/animation/TranslateAnimation.java;h=d2ff754ac327dda0fe35e610752abb78904fbb66;hb=HEADと私はこれを行う方法のヒントを「 ____ 」メソッドを参照してくださいと述べたが、私はこれと同じ動作を繰り返す方法がわからない。

---

Top 5 答え

1phreezie @

あなたの指が簡単に行われて移動している間に見解の移動:

LinearLayouts

さて、これは現在の表示だけではなく、隣人に移動します。私はまだそれをテストしていないが、これらはおそらくは、getChildAtによって得ることができます。

// Assumptions in my Activity class:
// oldTouchValue is a float
// vf is my view flipper
@Override
public boolean onTouchEvent(MotionEvent touchEvent) {
  switch (touchEvent.getAction()) {
    case MotionEvent.ACTION_DOWN: {
      oldTouchValue = touchEvent.getX();
      break;
    }
    case MotionEvent.ACTION_UP: {
      float currentX = touchEvent.getX();
      if (oldTouchValue < currentX) {
        vf.setInAnimation(AnimationHelper.inFromLeftAnimation());
        vf.setOutAnimation(AnimationHelper.outToRightAnimation());
        vf.showNext();
      }
      if (oldTouchValue > currentX) {
        vf.setInAnimation(AnimationHelper.inFromRightAnimation());
        vf.setOutAnimation(AnimationHelper.outToLeftAnimation());
        vf.showPrevious();
      }
      break;
    }
    case MotionEvent.ACTION_MOVE: {
      // TODO: Some code to make the ViewFlipper
      // act like the home screen.
      break;
    }
  }
  return false;
}

public static class AnimationHelper {
  public static Animation inFromRightAnimation() {
    Animation inFromRight = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, +1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
    inFromRight.setDuration(350);
    inFromRight.setInterpolator(new AccelerateInterpolator());
    return inFromRight;
  }

  public static Animation outToLeftAnimation() {
    Animation outtoLeft = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, -1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
    outtoLeft.setDuration(350);
    outtoLeft.setInterpolator(new AccelerateInterpolator());
    return outtoLeft;
  }

  // for the next movement
  public static Animation inFromLeftAnimation() {
    Animation inFromLeft = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, -1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
    inFromLeft.setDuration(350);
    inFromLeft.setInterpolator(new AccelerateInterpolator());
    return inFromLeft;
  }

  public static Animation outToRightAnimation() {
    Animation outtoRight = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, +1.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f,
    Animation.RELATIVE_TO_PARENT, 0.0f);
    outtoRight.setDuration(350);
    outtoRight.setInterpolator(new AccelerateInterpolator());
    return outtoRight;
  }
}

ホープことができます。

2Kurru @

私はあなたの要求を理解していれば、この効果は、現在使用して実装する必要がありますhttp://android-developers.blogspot.com/2011/08/horizontal-view-swiping-with-viewpager.html

次のようになります。

MotionEvent.ACTION_MOVEを使用してホーム画面のようなViewFlipperを作る