我正在制作一个指向用户定义位置的指南针。我正在使用旋转动画来旋转针。当针指向手机的方向时,我知道手机正指向我想要的方向。但是,无论手机的方位角如何,我都希望针指向正确的方向。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具有相同的价值?它是否指向该位置? –