Dialer App

  • Antworten:7
Georg Buchta
  • Forum-Beiträge: 24

05.10.2011, 13:48:47 via Website

Hello

bin grad dabei eine Dialer-App mit Zugriff auf Kontakte usw. zu kreiren, möchte damit mal lernen wie Android arbeitet.

Hab jetzt zwei Fragen an Euch:

1) wie kann man feststellen ob ein Button 1x, 2x oder 3x geklickt wurde?

2) ich möchte per onClick ein "Feld" öffnen (von unten nach oben) welches aber nur das untere Drittel
meiner View verdeckt und in dem Feld sollen sich dann zwei weitere Buttons befinden...
Für mein Verständnis, würde ich per onClick eine neue View aufrufen, nur wie kann man bewerkstelligen,
dass diese View nur eben einen Teil überdeckt und der Rest sichtbar bleibt??

lg
georg

Antworten
Florian B.
  • Forum-Beiträge: 284

05.10.2011, 14:22:16 via Website

Zu 1)
Hier musst du einfach mitzählen. Sowas wie einen Doppelklick gibt es nicht. Dies liegt vermutlich daran, dass das auf einem Touch Display nicht sehr intuitiv ist.

Zu 2)
Ich hab noch nicht ganz verstanden was du genau mit "nur das untere Drittel meiner View verdeckt" meinst. Aber prinzipiell gibt es verschieden Möglichkeiten das umzusetzen. Das einfachste ist vermutlich mit der Sichtbarkeit der einzelnen Komponenten zu arbeiten. Die Ansicht also komplett aufbauen, und bestimmte Teile dann auf Knopfdruck sichtbar oder unsichtbar machen.

Antworten
Georg Buchta
  • Forum-Beiträge: 24

05.10.2011, 18:00:41 via Website

zu 1)
aha...ich hatte gehofft dass es eine "elegantere" lösung gibt...aber dann halt mit zählen ;-)

zu 2)
naja vereinfacht gesagt meine app beginnt mit einer view welche die ganze Seite ausfüllt und da hab ich insgesamt
12 buttons verteilt in 4 reihen mit je 3 buttons.
die ersten 3 reihen sind die zahlen/buchstaben
die letzte reihe ist hat dann einen button für cancel, ok und "more"
wenn jetzt der user auf "more" klickt dann soll von sich von unten nach oben ein feld ins bild schieben
in dem dann noch 2-3 buttons "versteckt" sind (optionen, kontakte, etc.)

Antworten
Florian B.
  • Forum-Beiträge: 284

05.10.2011, 22:27:26 via Website

Ah ok, jetzt verstehe ich was du meinst.

Wir man das umsetzt hängt auch davon ab, wie die zusätzlichen Buttons angezeigt werden sollen. Sollen sie sich über die andere Ansicht schieben, oder sollen sie die bestehende Ansicht verdrängen bzw. zusammenstauchen?

Antworten
Gelöschter Account
  • Forum-Beiträge: 725

05.10.2011, 22:38:25 via App

mache doch einfach anstatt den Note bitten, ein Menü. dann hast du den gewollten Effekte ohne rund herum schreiben...

Antworten
Georg Buchta
  • Forum-Beiträge: 24

06.10.2011, 11:29:47 via Website

@Florian B.

schön wärs wenn sie sich über die andere Ansicht schieben würde

@davide 94

ja ein menü wär auch eine möglichkeit finde ich aber nicht als so schön
wie wenn sich was von unten in bild schiebt
...diesen effekt finde ich nämlich immer sehr toll und deshalb möcht
ich das selbst auch verwenden..

Antworten
Georg Buchta
  • Forum-Beiträge: 24

07.10.2011, 07:20:29 via Website

Georg Buchta
zu 1)
aha...ich hatte gehofft dass es eine "elegantere" lösung gibt...aber dann halt mit zählen ;-)

das geht doch nicht so leicht wie ich mir das vorgestellt habe...
hab eine TableLayout mit eben insgesamt 12 Tasten
9 davon bestehen aus der normalen alten Handytastatur 1(abc), 2(def), .....
und bei diesen Tasten müsste die App wissen wie oft eine der Tasten gedrückt
wurde - vor ob die Taste in einem bestimmten Zeitfenster nochmals gedrückt wurde...

wie kann ich meine App warten lassen ob die Taste nochmals gedrückt wird?

Liebe Grüße
Georg

Antworten
Florian B.
  • Forum-Beiträge: 284

07.10.2011, 10:18:43 via Website

Zu 1)
Du musst dir ein Zeitfenster definieren, innerhalb desse die gleiche Taste mehrfach gedrückt werden darf. Zudem musst du dir den Zeitpunkt, zudem das letzte Zeichen im Eingabefeld eingetragen wurde, merken. Im Event-Handler der Taste, schaust du dann nicht nur welche Taste gedrückt wurde, sondern auch zu welchem Zeitpunkt. Wenn im Textfeld schon ein Zeichen steht, dann prüfst du zunächst ob es sich um die gleiche Taste handelt, wenn nicht, dann hängst du das neue Zeichen im Textfeld einfach an und überschreibst den Zeitpunkt des zuletzt hinzugefügten Zeichens mit dem des aktuell hinzugefügten Zeichen.

Handelt es sich allerdings um die gleiche Taste, dann prüfst du anhand des Zeitpunkt des zuletzt hinzugefügten Zeichens und der gerade gedrückten Taste, ob sich der Tastendruck innerhalb des vorher festgelegten Zeitfenster befindet. Wenn dies der Fall ist, dann ersetzt zu das letzte Zeichen mit dem neuen Zeichen. Liegt der Tastendruck außerhalb des Zeitfensters, dann wird das Zeichen wieder einfach nur angehängt. In beiden Fällen, aktualisierst du den Zeitpunkt des zuletzt hinzugefügten Zeichen mit dem aktuellen Wert.

Wenn ich jetzt nicht total daneben liege, dann sollte das vom Grund her so funktionieren. Natürlich musst du noch ein paar Sonderfälle behandeln.

zu 2)
Hier könntest du mit einem RelativeLayout arbeiten, damit ist es möglich Element übereinander anzuzeigen. Mit einer Animation könntest du dann das Element von unten über die bestehen View schieben. Ich hab das zwar noch nie gemacht, aber so könnte es funktionieren, denke ich.

— geändert am 07.10.2011, 11:30:56

Antworten