2 つの角度の間で最短パスの回転アニメーションを実行したいと考えています。RotateAnimation(fromDegrees、toDegrees、pivotX、pivotY) メソッドを使用して画像をアニメーション化しています。
問題は、fromDegrees が 350 で toDegrees が 10 の場合、時計回りに 20 度回転するのではなく、完全な円 (340 度) を回転させることです。
最小限の回転を強制する方法はありますか?
2 つの角度の間で最短パスの回転アニメーションを実行したいと考えています。RotateAnimation(fromDegrees、toDegrees、pivotX、pivotY) メソッドを使用して画像をアニメーション化しています。
問題は、fromDegrees が 350 で toDegrees が 10 の場合、時計回りに 20 度回転するのではなく、完全な円 (340 度) を回転させることです。
最小限の回転を強制する方法はありますか?
RotateAnimationの代わりに、指定された値でビューを回転させるメソッドrotationByを持つViewPropertyAnimatorを使用できるため、「from」と「to」の値は必要ありません。
これら 2 つのアニメーションの主な違いは、主に、RotateAnimation は画面上のピクセルのみを移動することです。たとえば、OnClickListener はピクセルでアニメーション化されませんが、ViewPropertyAnimator は画面上のビューの実際のプロパティ/位置を変更します。
ViewPropertyAnimator も実装が非常に簡単なため、非常に役立ちます。時計回りに 20 度回転する ViewPropertyAnimator の最小限の実装は、次のようになります。
yourImage.animate().rotationBy(20);
期間を設定することは決して間違いではなく、アニメーションをよりリアルに見せるため、Interpolator を設定することもお勧めします。
yourImage.animate()
.rotationBy(20) -> degrees -20 would be counter clockwise
.setDuration(1000) -> ms
.setInterpolator(new AccelerateDecelerateInterpolator());
利用可能なすべてのメソッドについては、必ずドキュメントを確認してください。