TranslateAnimation animation = new TranslateAnimation(0, 50, 0, 100);
animation.setDuration(1000);
animation.setFillAfter(false);
animation.setAnimationListener(new MyAnimationListener());
imageView.startAnimation(animation);
更新:
問題は、View
実際にはまだ古い位置にあることです。そのため、アニメーションが終了したら移動する必要があります。アニメーションがいつ終了したかを検出するには、独自のanimationListener
(activity
クラス内で)作成する必要があります。
private class MyAnimationListener implements AnimationListener{
@Override
public void onAnimationEnd(Animation animation) {
imageView.clearAnimation();
LayoutParams lp = new LayoutParams(imageView.getWidth(), imageView.getHeight());
lp.setMargins(50, 100, 0, 0);
imageView.setLayoutParams(lp);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
}
}
そのため、onClickEvent
新しい場所で再び解雇されます。アニメーションはそれをさらに下に移動するので、x
とy
を変数に保存しonAnimationEnd()
て、 で固定位置に移動しないようにすることができます。