0

这不是什么秘密。我的数学能力不是那么令人印象深刻。

我正在开发自己的 Wear Watchface。但我想在手表上每隔 10 分钟在屏幕中心画一条画线。(参见 500px 模拟示例)。

通过使用谷歌示例代码,我可以实现这一点,但只有从屏幕一侧到中心的整行。但我希望它的长度是 500px 表盘的 5%(或固定数量的像素)。这是谷歌绘制第二个表盘的代码:

float centerX = width / 2f;
float centerY = height / 2f;

float secRot = mTime.second / 30f * (float) Math.PI;
float secLength = centerX - 20;

float secX = (float) Math.sin(secRot) * secLength;
float secY = (float) -Math.cos(secRot) * secLength;
canvas.drawLine(centerX, centerY, centerX + secX, centerY + secY, mHandPaint);

通过更改 mTime.second 我可以从特定的秒数开始绘制。

4

1 回答 1

0

找到了解决方案,这是一个片段:

    int teller_minuut_stip = 0; //Current minute

    float secRot_stip = teller_minuut_stip / 30f * (float) Math.PI;
    float secRot_stip_klein = teller_minuut_stip / 30f * (float) Math.PI;

    float secLength_stip = centerX - 10;
            float secX = (float) Math.sin(secRot_stip) * secLength_stip;
            float secY = (float) -Math.cos(secRot_stip) * secLength_stip;

            float secLength_stip_klein = centerX - 140;
            float secX_klein = (float) Math.sin(secRot_stip_klein) * secLength_stip_klein;
            float secY_klein = (float) -Math.cos(secRot_stip_klein) * secLength_stip_klein;

            float eindpunt_x = centerX + secX;
            float eindpunt_y = centerY + secY;

            float lijn_x = eindpunt_x - secX_klein;
            float lijn_y = eindpunt_y - secY_klein;

        canvas.drawLine(eindpunt_x, eindpunt_y, lijn_x, lijn_y, datePaint_cirkel_kleurtien);
于 2015-04-06T08:47:47.970 回答