Как смоделировать аналоговый секундомер в Android Watch Face? - PullRequest
0 голосов
/ 03 ноября 2018

Я разрабатываю реалистичные часы с хронографом для Android Wear OS. У меня уже хорошо работают часы с секундной стрелкой и остановленная стрелка хронографа. Когда я нажимаю на часы, я хочу, чтобы моя стрелка хронографа начиналась с нуля, но она начинается с фактической секунды.

Мой вопрос: Как я могу применить значение смещения к повороту моего хронографа, чтобы уменьшить фактическую секунду, и стрелка начала с позиции 0?

Вот фактическое поведение:

enter image description here

Вот код, который вращает маленькую секундную стрелку:

private float getSecondsRotation() {
            final float seconds =
                    (mCalendar.get(Calendar.SECOND) + mCalendar.get(Calendar.MILLISECOND) / 1000f);
            return seconds * 6f;
        }

Есть ли способ передачи параметра shift для этого метода и скидки от результата?

1 Ответ

0 голосов
/ 24 мая 2019

На самом деле я не пытался запустить этот код, но, надеюсь, он даст вам представление о том, как решить вашу проблему.

// True when the chronograph is running, false otherwise
private boolean isChronographRunning = false;

// The second when the chronograph is started
private float secondOffset = 0f;

// Called when the user taps on the watch face
private void startChronograph() {
    isChronographRunning = true;
    secondOffset = mCalendar.get(Calendar.SECOND) + mCalendar.get(Calendar.MILLISECOND) / 1000f;
}

// Called from your draw loop if(isChronographRunning)
private float getChronographRotation() {
    float currentSecond = mCalendar.get(Calendar.SECOND) + mCalendar.get(Calendar.MILLISECOND) / 1000f;
    float chronographSecond = currentSecond - secondOffset;
    return chronographSecond * 6f;
}
...