Я хочу применить анимацию всякий раз, когда пользователь нажимает на кнопку, например -
- при касании / наведении = уменьшение,
- вывести палец за пределы вида = масштабировать до предыдущей позиции,
- при отпускании / клик = масштаб до предыдущей позиции
Анимация при касании работает отлично, но я не могу определить масштабирование анимации до ее предыдущей позиции при отпускании пальца. Кроме того, я не слишком знаком с событием касания Motion, поэтому, пожалуйста, скажите мне, какое событие движения будет подходящим для этого. Кто-нибудь может мне помочь, пожалуйста. вот мой код:
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
imageView.animate().scaleX(0.5f).scaleY(0.5f).start();
break;
case MotionEvent.ACTION_CANCEL:
imageView.animate().scaleX(2.0f).scaleY(2.0f).start();
break;
case MotionEvent.ACTION_UP:
imageView.animate().scaleX(2.0f).scaleY(2.0f).start();
startActivity(new Intent(ActivityOne.this, ActivityTwo.class));
break;
}
return true;
}
});
Я также пробовал с объектным аниматором, что-то вроде этого:
private void scaleAnimation(View view) {
ObjectAnimator scaleDownX = ObjectAnimator.ofFloat(view, "scaleX", 0.5f);
ObjectAnimator scaleDownY = ObjectAnimator.ofFloat(view, "scaleY", 0.5f);
scaleDownX.setDuration(150);
scaleDownY.setDuration(150);
//scaleDownX.setRepeatMode(ValueAnimator.REVERSE);
//scaleDownY.setRepeatMode(ValueAnimator.REVERSE);
//scaleDownX.setRepeatCount(1);
//scaleDownY.setRepeatCount(1);
animatorSet = new AnimatorSet();
//animatorSet.play(scaleDownX).with(scaleDownY);
animatorSet.playTogether(scaleDownX, scaleDownY);
animatorSet.start();
}