我想从Android应用程序中的模拟时钟设置时间。为此,我重写了Analogclock.java类,并建立了Ontouchevent侦听器。我遵循此方法和该公式,根据获得的坐标计算时针和分针之间的角度。现在我可以把手移到一个新的位置了。我还可以从中获取针头之间的新角度。这是相同的代码:
case MotionEvent.ACTION_MOVE:
x = (int)event.getX();
y = (int)event.getY();
double dx = x - minuteRect.centerX();
double dy = -(y - minuteRect.centerY());
double inRads = Math.atan2(dy,dx);
if (inRads < 0)
inRads = Math.abs(inRads);
else
inRads = 2*Math.PI - inRads;
double newDegree = Math.toDegrees(inRads);
if(isMove()){
setAngle(newDegree);
invalidate();
}
我现在想设置移动针头的时间。有什么方法可以根据坐标或两个指针之间的角度计算时间吗?
我不知道代码,但数学并不难:
将时针的角度除以2PI,乘以12并截断,就得到了小时。将分针的角度除以2PI,乘以60并截断,就得到了分针。
示例:06:15:
- 小时角比PI稍微大一点。
(PI / 2PI) * 12 = 6
- 微小角度为PI/2。
((PI/2) / 2PI) * 60 = 15