2017-02-26 5 views

Antwort

3

Der Code tut, was Sie ihm sagen. Sie sagen in onStart:

end.add(Calendar.MINUTE, 4); 
end.add(Calendar.SECOND, 5); 

, die dem System mitteilt, dass Sie einen Countdown ab 4 Minuten und 4 Sekunden wünschen. Stattdessen tun:

end.add(Calendar.SECOND, 45); 

EDIT

Es dauerte eine Weile, um zu verstehen, was Sie meinten. Gehen Sie zunächst zu github und kopieren Sie TickTockView in Ihr eigenes Projekt. Entfernen Sie die Abhängigkeit vom ursprünglichen Projekt. Öffnen Sie die Datei und in OnDraw ändern:

if (mCircleDuration == DURATION_TOTAL && mStartTime != null) { 
     long totalTime = mEndTime.getTimeInMillis() - mStartTime.getTimeInMillis(); 
     float percentage = (((float) mTimeRemaining)/((float) totalTime)); 
     angle = 360f * percentage; 
    } 

zu:

if (mCircleDuration == DURATION_TOTAL && mStartTime != null) { 
     long totalTime = mEndTime.getTimeInMillis() - mStartTime.getTimeInMillis(); 
     float percentage = (((float) mTimeRemaining)/((float) 45000));//45000(ms) = 45 seconds 
     angle = 360f * percentage; 
    } 

in Ihrem XML-Datei, in der der Kreis definiert ist, fügen:

app:tickCircleDuration="total_time" 

Und das tun, Sie muss nur totalTime in onDraw in der TickTockView ändern. Denken Sie daran, den Paketnamen in der XML-Datei so zu aktualisieren, dass er auf den Speicherort verweist, an dem Sie die Datei gespeichert haben, nicht auf das ursprüngliche Projekt.

Als Referenz this ist die Datei, die Sie

+0

Das ist nicht was ich meinte. Mein Problem ist, dass der Kreis in 45 Sekunden keinen vollen Zyklus macht. Ich werde die Frage jetzt mit einem GIF aktualisieren. – Me123

+0

Es macht keinen vollen Zyklus in 45 Sekunden, weil Sie es von vier Minuten und 5 Sekunden Countdown sagen. Oder 240 Sekunden. Es kann keinen Zyklus in 45 Sekunden ausführen, wenn der angeforderte Zyklus insgesamt 245 Sekunden beträgt. – Zoe

+0

Die GIF erklärt nichts mehr als das Bild – Zoe

1

Ändern Sie den Code unten in

Calendar end = Calendar.getInstance(); 
    end.add(Calendar.MINUTE, 4); 
    end.add(Calendar.SECOND, 5); 

in

Calendar end = Calendar.getInstance(); 
    end.add(Calendar.MINUTE, 0);//O minute 
    end.add(Calendar.SECOND, 45);//45 second 
2

Die gute Art und Weise von Android zu nutzen ist CountDownTimer Klasse kopieren sollte abwärts zählend in der Zeit. Ich habe es kürzlich in meinem Spiel verwendet und ist einfach zu benutzen. Zuerst du

CountDownTimer timer = new CountDownTimer(45000, 1000) { 

     // 45000 milliseconds countdown and 1000 milliseconds decrement at each tick. 

    public void onTick(long millisUntilFinished) { 

     //you can change your UI here based on time 

    } 

    public void onFinish() { 

      // you can define something to happen when timer ends. 

    } 
    }; 

timer.start();