//設置動畫屬性
animation = new ScaleAnimation(1.0f, 0.5f, 1.0f, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(500);// 設置動畫持續時間
animation.setRepeatCount(1);// 設置重復次數
animation.setRepeatMode(Animation.REVERSE);
//onTouchEvent()事件
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
int width = iv.getWidth();
int height = iv.getHeight();
iv.setX(event.getX() - (width/2) );//iv是圖片所在的imageView控件
iv.setY(event.getY() - (height/2) );
iv.startAnimation(animation);
break;
}
return true;
}
就是想實現一個類似相機手動點擊聚焦的動畫效果,但是實際效果是在點擊屏幕後動畫位置能確定,但是縮放中心是變化的,並不是設置的圖片的中心點,請有經驗的人幫忙指出問題,多謝!
因為你做動畫前突然setX值等,中心不好確定了。換用ObjectAnimation或ValueAnimation吧,自己實現縮放機制
ValueAnimator valueAnimator = ValueAnimator.ofFloat(1, 0.5f);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float v = (Float) animation.getAnimatedValue();
ball.setScaleX(v);
ball.setScaleY(v);
}
});
valueAnimator.setDuration(500);// 設置動畫持續時間
valueAnimator.setRepeatCount(1);// 設置重復次數
valueAnimator.setRepeatMode(Animation.REVERSE);
@Override
public boolean onTouch(MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
int width = ball.getWidth();
int height = ball.getHeight();
ball.setX(event.getX() - (width / 2));//ball是圖片所在的imageView控件
ball.setY(event.getY() - (height / 2));
ball.setPivotX(ball.getWidth() / 2f);
ball.setPivotY(ball.getHeight() / 2f);
valueAnimator.start();
break;
}
return true;
}