任何人都可以帮我处理我的代码吗?我想要做的是当imageView被触摸时它将运行动画师并将视图移动到屏幕的中心。在动画师完成后,imageView将设置另一个onTouch以运行动画以从0.0 - 1.0缩放。但是动画不会从视图的新位置开始,而是从视图的前一个位置开始。
private void animation() {
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
imageView.animate().translationY(height/2).setDuration(1000).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ScaleAnimation scale = new ScaleAnimation(0,1,0,1);
scale.setDuration(1000);
imageView.startAnimation(scale);
return true;
}
});
}
}).start();
return false;
}
});
}
链接是我从代码中获得的 http://sendvid.com/0vbtkhi7
以下链接是我想通过动画获得的结果
答案 0 :(得分:0)
这是因为您正在使用ViewAnimation。它只是动画视图而不是对象本身,因此对象坐标保持不变,当您重新加载新动画时,它以未更改的X和Y开始。 您应该使用Android Property Animation API.
它更简单,您的问题将得到解决。
答案 1 :(得分:0)
啊我发现解决方案基本上我只需更新枢轴。
private void animation() {
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
imageView.animate().translationY(height/2).setDuration(1000).start();
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ScaleAnimation scaleAnimation = new ScaleAnimation(0, 1, 0, 1,imageView.getWidth()/2,imageView.getY() + imageView.getHeight()/2);
scaleAnimation.setDuration(1000);
imageView.startAnimation(scaleAnimation);
return true;
}
});
return false;
}
});
}
顺便说一句,谢谢你回答我的问题