Eigenes Design: Circular Progress Bar

F

Fraver

Neues Mitglied
1
Hallo,

für meine App habe ich einen eigenen Button mit Photoshop erstellt. Der sieht in etwa so aus, wie ein Start Engine-Knopf in neueren Autos.

Und genau das ist auch seine Aufgabe. Auf dem Button steht Start und wenn ich drauf drücke, steht dort Stopp.

Bis hier hin funktioniert alles.

Dann habe ich aber noch ein drittes Bild von dem Button, auf dem nichts steht, der Button also inaktiv ist.

Jetzt möchte ich zweierlei Dinge, wo ich auf eure Hilfe angewiesen bin.

Der Button dient ja dazu, den aktuellen Standort zu ermitteln. Das kann ja mitunter etwas Zeit in Anspruch nehmen.

Und genau in dieser Zeit soll der Button inaktiv sein. Nicht klickbar.
Nur wie bekomme ich das hin?


Und für den Endverbraucher, da habe ich auch eine schöne Grafik zum Inaktiv-Button, sollen ringsum "LEDs" aufleuchten, bzw.wandern. Um halt den Benutzer zu signalisieren, die App macht irgendwas.

Das zu realisieren, ist meine zweite Frage.
Wie kann ich ein eigenes Design für eine Circular Progressbar benutzen und was für Voraussetzungen brauche ich?

Für jeden, der 360, bzw 359° kann ich ja kein Image erstellen oder doch?

Lg Andy
 
Fraver schrieb:
Der Button dient ja dazu, den aktuellen Standort zu ermitteln. Das kann ja mitunter etwas Zeit in Anspruch nehmen.

Für normale "grobe" Standortbest. sollte das relativ schnell gehen (annährend sofort). LastKnownLocation und FusedLocationProvider sind hier die Stichworte.

Ein genaues GPS-Signal zu erhalten, kann dauern.
Ansonsten solltest du eine Animation erstellen.

Hier ein Beispiel, wie es bei meiner aktuellen App zum Einsatz kommt:

Code:
case WAITING:     mIvLimit.setBackgroundResource(R.drawable.gear_animation_black);

mIvLimit.setClickable(true);
mIvLimit.setOnClickListener(this);

Animatable frameAnimation = (Animatable) mIvLimit.getBackground();
frameAnimation.start();
und die Animation als Drawable:
Code:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/gear_white_8"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_7"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_6"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_5"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_4"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_3"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_2"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_1"
        android:duration="@integer/my_circle_fps"/>
    <item
        android:drawable="@drawable/gear_white_0"
        android:duration="@integer/my_circle_fps"/>

</animation-list>

Mit dem Fortschreiten der Drehung empfehle ich dir einfach mal zu testen wie es aussieht. 1 Grad-Schritte sind wohl nicht nötig und verschwenden Performance, das Auge nimmt je nach Geschwindigkeit bzw. Stil der Animation die Bilder unterschiedlich wahr. Eine "best Practise" gibts hier nicht.
 
Hallo missspelled,

vielen Dank für deine Antwort. Das werde ich auch gleich mal versuchen, umzusetzen. :smile:

Ok, wenn das auch nicht das Thema ist, aber auch bei der GPS Sache bin ich am verzweifeln.

Vorhin habe ich zum Testen 7 verschiedene Stationen angefahren.
Dabei habe ich meine App so bedient, wie es eigentlich vorgesehen ist und zum Vergleich die App "GPS Status" bemüht.

In beiden Fällen lag das Tablet auf dem Beifahrersitz.
"GPS Status" lag zu 100% richtig, meine App hinkte hingegen um eine Position hinter und hat sogar eine ausgelassen.

Was machen die richtig, was ich falsch mache?

Bei mir ist es so, das ich einen Button drücke, dann die Position bestimme, entweder Netzwerk oder GPS und nach 5 Sekunden removeUpdates aufrufe.

Dann klicke ich wieder und das selbe geht von vorne los.

Kann es sein, dass das GPS gar nicht zum Einsatz kommt?
 
Hehe, deine Vermutung ist richtig, so funktioniert das nicht...

Generell gibt's meines Wissens keine allgemeingültige "best practise" für das Empfangen von Geodaten - wahrscheinlich weil die Anforungsprofile sich stark unterscheiden.

5 Sekunden sind definitiv viel zu wenig... Meiner Meinung nach wären 60 Sekunden sogar noch knapp bemessen <- was die GPS-Standort-Bestimmung angeht (wie gesagt der Netzwerk-Dienst ist meist extrem schnell verfügbar, da würden die 5 Sekunden wohl schon reichen).
Beachte: Hin und wieder kann ein Autodach schon Probleme mit dem Signal hervorrufen.

Generell geht das Ab- und Anmelden des Clients nicht immer zuverlässig (jedenfalls wenn man zwischen verschiedenen Update-Intervallen wechseln möchte um den Akku zu sparen). Falls du Unstimmigkeiten bemerkst, hilft ggf. ein kleiner Delay zwischen den Wechseln.
 
Zuletzt bearbeitet:
Wie meinst du das mit dem Delay?

Aber wo wir wieder beim ersten Beitrag wären. :biggrin:

Wenn ich die App "GPS Status" aufrufe, kurbelt da eine Progress Bar mit dem Text "GPS Position wird gesucht".
Und die genaue Position scheint für meine App unumgänglich.

Denn ich habe momentan keine Zielgruppe, sondern nur eine Zielperson, die oft zu faul ist, sich bestimmte Dinge mit Zettel und Stift aufzuschreiben.

Der Kern der App soll ja im automatisieren Bereich liegen.
Sprich die Standortbestimmung, die ich momentan über einen Button versuche zu meistern, soll eigentlich oder hauptsächlich mit Hilfe von Bluetooth geschehen.

Sein Handy verbindet sich automatisch mit seinem Autoradio: der Standort wird ermittelt. (möglichst genau). Danach geht GPS wieder aus.

Trennt sich das Handy wieder vom Autoradio, soll wieder der Standort ermittelt werden.

Also meine Zielperson muss schon dafür sorgen, das der GPS Empfang gewährleistet ist.

Wobei es in dem Zusammenhang ganz sinnvoll wäre, nach einer Zeit x, wo die Position gesucht und nicht gefunden wird, einen Warnton abzugeben.
 
Zuletzt bearbeitet:
Klingt sehr nach einem Fahrtenschreiber. Erfahrungsgemäß würde hier die Netzwerk-Location vielleicht schon reichen.(?)
Ich würde es so machen:
Du lädst den LocationClient (zB meldest ihn mit "hoher Genauigkeit" an) und fragst getLastKnownLocation ab. Vorher könntest du einen Default-Wert setzen und diesen überschreiben. Wenn dieser nun überschrieben ist speicherst du die Daten...
Oder du fragst bei der letzten bekannten Ortung die Genauigkeit ab und wenn die <50m ist -> speichern...

Und das gleiche wieder beim "Abmelden".

Das mit dem Delay ist nur nötig wenn du unterschiedliche Profile nutzen willst, zB um den Akku zu schonen. Meine App macht es ein bisschen anders.. Sie merkt wenn man Autofährt und versucht dann per GPS die Geo-Daten zu ziehen - nach längerem Stillstand wird die Rate reduziert bzw. auf Netzwerk-Ortung umgeschaltet, um Energie zu sparen..
 

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
337
swa00
swa00
FabianDev
Antworten
5
Aufrufe
560
swa00
swa00
R
  • RudolfHagen
Antworten
1
Aufrufe
652
koje71
koje71
Zurück
Oben Unten