在 Android Canvas 中确定模拟时钟形成中时针的正确角度

Determine correct angle of hour hand in analog clock formation in Android Canvas

提问人:user7162221 提问时间:1/6/2023 更新时间:1/6/2023 访问量:74

问:

我无法为模拟时钟形成的时针找到正确的角度,其他两个角度工作正常,但是小时角在小时时间内不会移动,例如当时间是 12:00 时,时针会在正确的位置,但随着时间的流逝和时间以分钟为单位的增加,时针不会从原来的位置移位,只会在时间是 1:00 时改变它的位置, 在这种情况下请提供帮助。enter image description here

private fun drawHand(canvas: Canvas, loc: Int, isHour: Boolean) {
        val angle = (Math.PI * loc / 30 - Math.PI / 2).toFloat()
        val handRadius: Float =
            if (isHour) getTextHeight(bigTextSize) * .5f else getTextHeight(bigTextSize) * .9f
        canvas.drawLine(
            relativePoint,
            currentHeight + getTextHeight(bigTextSize),
            relativePoint + cos(angle) * handRadius,
            currentHeight + getTextHeight(bigTextSize) + sin(angle) * handRadius,
            templatePaint
        )
    }
val c = Calendar.getInstance()
                val minute=c[Calendar.MINUTE]
                val hour = if (c[Calendar.HOUR_OF_DAY] > 12) c[Calendar.HOUR_OF_DAY] - 12
                else c[Calendar.HOUR_OF_DAY]
                templatePaint.strokeWidth=5f
                drawHand(canvas, c.get(360 * (hour % 12) / 12 ) + ( (minute / 60)), true)

我尝试了开源平台上列出的所有可能的解决方案,但无法实现正确的目标。 可能的解决方案是时针随着时间的流逝而不断移动,因为真正的时钟指针在工作,

java android 数学 时钟 角度

评论


答: 暂无答案