0

RelativeLayout を含む ScrollView があります。RelativeLayout には、最初はすべて同じ場所に配置されている他のいくつかのビューグループが含まれています (互いの上に)。TranslateAnimation を使用して、下にスワイプ ジェスチャするとこれらのビューグループが押し下げられ、それぞれの上部 150 ピクセルが表示されます (一番上のカードは画面の下部に移動し、次のカードはその 150 ピクセル上に移動するなど)。

各ビューグループにタッチリスナーをアタッチしましたが、これは一見起動しますが、移動先ではなく、ビューグループの元の場所をタップしたときにのみ起動します。そして、それらはすべて元々お互いの上にあったので、とにかく OnTouch メソッドで一番上のビューグループしか取得しません。

アニメーション化した後、ビューを実際に新しい場所に配置するにはどうすればよいですか?

コード:

private void setViewgroupVerticalPosition(ViewGroup cardViewGroup,
        int position) {
    // Animates the ViewGroup to the correct vertical position.
    TranslateAnimation ta = new TranslateAnimation(0, 0, 0, position);
    ta.setDuration(500);
    ta.setFillAfter(true);
    ta.setAnimationListener(this);
    cardViewGroup.startAnimation(ta);
    /*
    cardViewGroup.layout(cardViewGroup.getLeft(), position, cardViewGroup.getRight(), position + (cardViewGroup.getBottom() - cardViewGroup.getTop()));
    cardViewGroup.forceLayout();
    cardViewGroup.invalidate();
    */
}

これが各ViewGroupで実行された後、元の位置でタップすることがOnTouchイベントをトリガーする唯一の方法です...

4

1 に答える 1

0

開発しているAndroidのバージョンによっては、アニメーションで予期しない結果が生じる可能性があります。こちらの質問と回答をご覧ください。特にChetHaaseのコメントに注意してください。

于 2013-02-26T12:10:04.367 に答える