首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android指南针旋转动画

问android指南针旋转动画
EN

Stack Overflow用户
提问于 2012-07-05 10:56:30
回答 1查看 3.1K关注 0票数 0

我正在制作一个指南针,指向用户定义的位置。我正在使用旋转动画来旋转针头。当指针指向手机的方向时,我就知道手机正指向我想要的方向。然而,我希望指针指向正确的方向,而不管手机的方位。

问题是,看起来旋转动画并不是根据真实世界的坐标旋转指针,而是相对于手机屏幕。因此,在现实世界中,针58度的旋转与58度的旋转并不匹配。这是真的吗?还是我在代码中犯了一个错误?

指南针是通过将手机的背部平放在表面上来使用的。我也尝试过输出方位角,结果是这样的:

代码语言:javascript
复制
Azimuth           Actual Phone angle
0                        0
45                       90
90                       180

当它向后接近一个完整的圆周时,它会在120到340之间反弹。

代码如下:

代码语言:javascript
复制
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是指针的最后一个位置,我之所以使用这个,是因为如果没有它,指针就会恢复到零度并闪烁。

谢谢,附言,这让我抓狂

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-05 12:57:35

我弄清楚了,我的数学都错了,我误解了方位角对旋转的影响。

当我将图像旋转到方位角时,我意识到这导致了针指向北方。我所需要做的就是添加用户方向。我使用的数学方法导致指针以不可预知的方式旋转。

答案很简单:

代码语言:javascript
复制
RotateAnimation animate = new RotateAnimation(-azimuth+rotation, -azimuth+rotation, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

-azimuth是因为旋转动画是逆时针旋转的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11337347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档