3 Stimmen

Android-Uhr Sekundenzeiger

Ich bin neu in der Android-Entwicklung und frage mich, ob es möglich ist, einen "Sekundenzeiger" zur Standard-Analoguhr in Android hinzuzufügen?

Ich habe bereits eine funktionierende Uhr mit einem Zifferblatt, Stunden- und Minutenzeiger. Ich habe gesucht und bin auf einige Beiträge gestoßen, die besagen, dass Sie einen im Hintergrund laufenden Dienst benötigen, um die Uhr alle Sekunde zu aktualisieren. Das war jedoch für ein Uhren-Widget und meins ist für eine App.

Gibt es einen Weg, es zu tun?

2voto

Pedro Loureiro Punkte 11320

Hier ist, wie es geht: http://developer.android.com/resources/articles/timed-ui-updates.html

Warnung: Das wird die Batterie wirklich schnell entleeren!

0 Stimmen

Vielen Dank, so kann ich das auf die Standard Analoguhr anwenden? Da das hier ein digitales Beispiel ist. Ja, wenn ich es zum Laufen bringen kann, muss es definitiv aufgeladen werden, während die Uhr angezeigt wird haha. Danke nochmal.

0 Stimmen

Ich war nicht einmal bewusst, dass das Beispiel, das sie verwendet haben, eine Uhr war :) Ich wusste nur, dass sie das UI jede Sekunde aktualisierten, wie du gefragt hast

0 Stimmen

Teilen Sie Details, keine Links. Es handelt sich um eine 404-Seite.

0voto

Axarydax Punkte 16025

Wenn Sie die Uhr bereits selbst mit Stunde- und Minutenzeigern rendern, was genau ist das Problem mit dem Sekundenzeiger? Aktualisieren Sie ihn genau wie die anderen Zeiger, erhöhen Sie einfach die Aktualisierungsfrequenz des Threads auf eine Sekunde.

0voto

Herry Punkte 6947

Ja, es ist möglich, einen Sekundenzeiger in die Android-Analoguhr einzusetzen. Ich habe das in meiner Anwendung gemacht. Bitte sehen Sie es sich an, es kann Ihnen helfen. Wenn Sie Fehler finden, kommentieren Sie diese hier. Hier ist der Link Sie können es hier im Link finden

0voto

kyogs Punkte 6578
private ImageView img;
 Handler mHandler;

 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  Thread myThread = null;

  Runnable runnable = new CountDownRunner();
  myThread = new Thread(runnable);
  myThread.start();

 }

 public void doRotate() {

  runOnUiThread(new Runnable() {
   public void run() {
    try {

     Date dt = new Date();
     int hours = dt.getHours();
     int minutes = dt.getMinutes();
     int seconds = dt.getSeconds();
     String curTime = hours + ":" + minutes + "::" + seconds;
     Log.v("log_tag", "Log is here Time is now" + curTime);
     img = (ImageView) findViewById(R.id.imgsecond);
     RotateAnimation rotateAnimation = new RotateAnimation(
       (seconds - 1) * 6, seconds * 6,
       Animation.RELATIVE_TO_SELF, 0.5f,
       Animation.RELATIVE_TO_SELF, 0.5f);

     rotateAnimation.setInterpolator(new LinearInterpolator());
     rotateAnimation.setDuration(1000);
     rotateAnimation.setFillAfter(true);

     img.startAnimation(rotateAnimation);
    } catch (Exception e) {

    }
   }
  });
 }

 class CountDownRunner implements Runnable {
  // @Override
  public void run() {
   while (!Thread.currentThread().isInterrupted()) {
    try {

     doRotate();
     Thread.sleep(1000);
    } catch (InterruptedException e) {
     Thread.currentThread().interrupt();
    } catch (Exception e) {
     Log.e("log_tag", "Error is " + e.toString());
    }
   }
  }
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X