私が作成したナビゲーションアプリの一部として使用されるカスタムビルドのコンパスがあります。また、コンパスを滑らかにするアルゴリズム (一種のローパス フィルター) も作成しました。すべてがうまく機能し、コンパスは流動的です。現在の角度と以前の角度の引数を RotateAnimation に渡します。問題は、コンパスを使ってすばやく回転すると、特定のポイントの後、現在の角度と前の角度のギャップが非常に大きくなり、回転が最小距離のパスに方向を切り替えることです。これは、ローパス フィルターから発生する一種の遅延と関係があります。つまり、リアルタイムの方向に追いつく必要があります。誰かがこれに対処したかどうか(これを処理するコンパスアプリをストアから見たことがあります)、または回転の向きを維持するために何らかのアルゴリズム/ソリューションを持っているかどうか疑問に思っていました。
RotateAnimation rotate = new RotateAnimation(startingPointer, pointerDeg, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setInterpolator(new LinearInterpolator());
rotate.setDuration(ROTATION_INTERVAL);
rotate.setFillAfter(true);
pointer.setAnimation(rotate);
startingPointer = pointerDeg;