程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> ontouchevent-在onTouchEvent()時間裡面加了一個scale 縮放動畫效果,效果和預期不同

ontouchevent-在onTouchEvent()時間裡面加了一個scale 縮放動畫效果,效果和預期不同

編輯:編程解疑
在onTouchEvent()時間裡面加了一個scale 縮放動畫效果,效果和預期不同
//設置動畫屬性 
  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;
}
dxc1228
u013147734
u013147734
u013147734
dxc1228
dxc1228
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved