2017-02-15 144 views

回答

2

試試這個。

ObjectAnimator animation = ObjectAnimator.ofFloat(yourImageView, "rotationX", 0.0f, 90f); 
     animation.setDuration(1000); 
     animation.setRepeatCount(ObjectAnimator.INFINITE); 
     animation.setRepeatMode(ObjectAnimator.REVERSE); 
     animation.setInterpolator(new AccelerateDecelerateInterpolator()); 
     animation.start(); 
+0

但旋轉完整的圖像,我想圖像修復 –

+0

的底部則是圖像分割成兩個和旋轉第一部分。 –

+0

我做到了,但如何使兩個旋轉我沒有得到它 –

3

答案很簡單,您必須設置視圖的支點,以便在旋轉時可以通過軸旋轉視圖。 (在你的情況,這個代碼將保持視圖底部相同,動畫視圖頂部就像你在視頻顯示)

enter image description here

根據圖像如果杆底盒是25percentage圖像高度,那麼你必須計算圖像的軸旋轉25%。

View v = findViewById(R.id.animate_view); 
    v.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View v) { 
      int percentageHeightOfBox = 25; 
      int height = v.getMeasuredHeight(); 
      v.setPivotX(v.getMeasuredWidth()/2); 
      v.setPivotY(height - ((height * percentageHeightOfBox)/100)); 
      ValueAnimator animator = ValueAnimator.ofFloat(0.0f, 90f); 
      animator.setDuration(1000); 
      animator.setRepeatCount(ObjectAnimator.INFINITE); 
      animator.setRepeatMode(ObjectAnimator.REVERSE); 
      animator.setInterpolator(new AccelerateDecelerateInterpolator()); 
      animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
       @Override 
       public void onAnimationUpdate(ValueAnimator animation) { 
        float rotate = Float.parseFloat(animation.getAnimatedValue().toString()); 
        v.setRotationX(rotate); 
       } 
      }); 
      animator.start(); 
     } 
    }); 
+0

不工作,我想圖像修復 –

+1

其工作的底部。我測試了這個代碼。圖像或視圖正在回退。休息你可以用相同的代碼/想法做。 –

+0

@DharaPatel可能你沒有準確地嘗試過代碼,代碼工作得很好。請嘗試使用樞軸廣告價值動畫製作人的確切代碼。 –