3

2 つの角度の間で最短パスの回転アニメーションを実行したいと考えています。RotateAnimation(fromDegrees、toDegrees、pivotX、pivotY) メソッドを使用して画像をアニメーション化しています。

問題は、fromDegrees が 350 で toDegrees が 10 の場合、時計回りに 20 度回転するのではなく、完全な円 (340 度) を回転させることです。

最小限の回転を強制する方法はありますか?

4

1 に答える 1

3

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());

利用可能なすべてのメソッドについては、必ずドキュメントを確認してください。

于 2016-06-14T06:38:54.830 に答える