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イベントをトリガーする唯一の方法です...