我正在製作一個指向用戶定義位置的指南針。我正在使用旋轉動畫來旋轉針。當針指向手機的方向時,我知道手機正指向我想要的方向。但是,無論手機的方位角如何,我都希望針指向正確的方向。android指南針rotateanimation
問題是,旋轉動畫似乎並不根據真實世界的座標旋轉針,而是相對於手機的屏幕。因此,58度旋轉的針與現實世界中的58度旋轉不匹配。這是真的還是我在我的代碼中犯了一個錯誤?
指南針是爲了將手機背部平放在表面上而使用的。我也試着輸出方位角和讀取這樣的:
Azimuth Actual Phone angle
0 0
45 90
90 180
當它得到接近了一圈又回到它反彈120和340之間
下面的代碼:
direction = 360 - azimuth + rotate;
RotateAnimation animate = new RotateAnimation(rotateLast, direction, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animate.setFillAfter(true);
animate.setInterpolator(new LinearInterpolator());
animate.setDuration(10);
needle.startAnimation(animate);
rotateLast = direction;
方位角是傳感器的手機方位角,旋轉方向是用戶指定的方向(以北爲度),方向是指針所需的旋轉方向。
rotateLast是針的最後位置,我使用這個,因爲沒有它,針返回零度並閃爍。
謝謝, P.S.這已經讓我發瘋了
嗯,你爲什麼使用fromDegree,toDegree具有相同的價值?它是否指向該位置? –