4

RelativeLayoutを使用して移動しようとしていTranslateAnimationます。同じことを実行するために私が書いたコードは次のとおりです。

translateAnimation = new TranslateAnimation(0, 0, heightOfRootView-excuseContainer.getHeight(), currentYPoint);
translateAnimation.setRepeatMode(0);
translateAnimation.setDuration(500);
translateAnimation.setFillAfter(true);
excuseContainer.startAnimation(translateAnimation);

特定のビューの現在の y 位置からアニメーションを開始しようとしています (ビューの x 位置を変更する必要はありません)。ただし、アニメーションは最初の y 点から毎回開始されます。ビューの現在のy位置から目的のビュー位置までこのアクションを実行するにはどうすればよいですか。

ここでheightOfRootViewは、全画面の高さを表し、 excuseContainerアニメーションで移動したいビューであり、currentYPointの最後の y ポイントですexcuseContainer

編集:利用可能な翻訳アニメーションチュートリアルがあります。探したけど見つからない..

ご協力ありがとうございました。

4

1 に答える 1

10

使用しているコンストラクターの 3 番目のパラメーターはTranslateAnimationデルタ値であるため、開始点は次のように計算されます。

currentYPos + startingDeltaY

画面上の何かの位置を参照する値を渡しているように見えるためY、このデルタ値は正しくありません。

このコンストラクタを使用してみてください:

public TranslateAnimation (int fromXType、float fromXValue、int toXType、float toXValue、int fromYType、float fromYValue、int toYType、float toYValue)

このような:

new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 0, Animation.ABSOLUTE, heightOfRootView-excuseContainer.getHeight(), Animation.ABSOLUTE, currentYPoint);
于 2013-05-24T04:37:18.140 に答える