Unterschied zwischen fokussierbar und fokussierbarInTouchMode?
80
Ich möchte den tatsächlichen Unterschied zwischen ihnen kennen ... Wann sollte jeder verwendet werden, wie sollte jeder verwendet werden und in welchen Situationen ist jeder hilfreich?
Nennen Sie einige Beispiele und erklären Sie sie ausführlich.
Der Touch-Modus ist für sich genommen sehr einfach zu verstehen, da er lediglich anzeigt, ob die letzte Benutzerinteraktion mit dem Touchscreen durchgeführt wurde. Wenn Sie beispielsweise ein G1-Telefon verwenden, wird die Auswahl eines Widgets mit dem Trackball den Touch-Modus verlassen.
...
Im Touch-Modus gibt es keinen Fokus und keine Auswahl. Jedes ausgewählte Element in einer Liste in einem Raster wird deaktiviert, sobald der Benutzer in den Berührungsmodus wechselt. In ähnlicher Weise werden fokussierte Widgets unscharf, wenn der Benutzer in den Berührungsmodus wechselt.
...
Jetzt, da Sie wissen, dass der Fokus im Touch-Modus nicht vorhanden ist, muss ich erklären, dass dies nicht ganz stimmt. Der Fokus kann im Touch-Modus existieren, aber auf eine ganz besondere Art nennen wir fokussierbar im Touch-Modus. Dieser spezielle Modus wurde für Widgets erstellt, die Texteingaben erhalten, z. B. EditText oder, wenn die Filterung aktiviert ist, ListView.
...
Im Touch-Modus fokussierbar ist eine Eigenschaft, die Sie entweder über Code oder XML selbst festlegen können. Es sollte jedoch sparsam und nur in ganz bestimmten Situationen verwendet werden, da es die Konsistenz mit dem normalen Verhalten von Android verletzt. Ein Spiel ist ein gutes Beispiel für eine Anwendung, die die im Touch-Modus fokussierbare Eigenschaft gut nutzen kann. Wenn MapView im Vollbildmodus wie in Google Maps verwendet wird, ist es ein weiteres gutes Beispiel dafür, wo Sie im Touch-Modus fokussierbar verwenden können.
Geben Sie ein Beispiel und erklären Sie sie ausführlich
Ich gebe dir meine eigene Erfahrung:
Ich hatte eine Google TV-Anwendung, die eine Aktivität mit vielen ImageButtons hatte.
Ich wollte, dass die ImageButtons auswählbar sind.
Wenn also eine Person mit der Maus oder der Fernbedienung darauf klickt, werden sie nur ausgewählt (in meinem Fall hervorgehoben). Wenn der Benutzer dann die ausgewählte Taste drückt ImageButton, wird die Aktion ausgelöst. Dieses genaue Verhalten wurde erreicht, indem die focusableInTouchModeEigenschaft über das XML-Layout aktiviert wurde .
Alles was ich tun musste war ein gewöhnliches onClickListenerfür die ImageButtons und voila zu setzen!
Ich habe meine Anwendung auf dem Mobilteil nicht überprüft, aber ich denke, sie würde ein bekanntes Ergebnis liefern.
BEARBEITEN
Wann?
Ich habe Ihnen einen Anwendungsfall mitgeteilt, den ich getestet habe: Wenn Sie möchten, dass Ihre Schaltflächen onClickListenerbei Ihrem zweiten Klick eine Aktion auslösen, nachdem Sie zum ersten Mal auf die Schaltfläche geklickt und sie ausgewählt haben Button.
Ich habe den ersten Klick verwendet, um "Fokus" zu erhalten und eine Zoom-In-Scale-Up-Animation auf meiner Schaltfläche anzuzeigen.
Wie?
Stellen Sie einfach die Eigenschaft der Schaltfläche focusableInTouchModezu trueIhrer XML - Layout - Datei.
Fokussiert ist ein Status für die Ansicht und im Allgemeinen kann der Fokus mit Trackball und dpad geändert werden. Ihre Ansicht kann einen anderen Hintergrund haben, wenn der Status fokussiert ist.
Durch Fokussieren im Touch-Modus kann die Ansicht fokussiert werden, wenn der Benutzer die Ansicht berührt. Ein gutes Beispiel für diese Art von Komponente ist EditText.
Mit Buttonoder einer anklickbaren Komponente ist der gedrückte Zustand normalerweise das, woran Sie interessiert sind.
"Mit Button oder einer anklickbaren Komponente sollten Sie sich stattdessen auf den gedrückten Zustand konzentrieren." Was? der Rest der Antwort +1
ataulm
3
Benutzer können mit ihren Geräten interagieren, indem sie Hardwaretasten oder -tasten verwenden oder den Bildschirm berühren. Durch Berühren des Bildschirms wird das Gerät in den Touch-Modus versetzt. Der Benutzer kann dann mit ihm interagieren, indem er die virtuellen Schaltflächen, Bilder usw. auf dem Bildschirm berührt.
Rufen Sie die isInTouchMode () -Methode der View-Klasse auf, um zu überprüfen, ob sich das Gerät im Touch-Modus befindet .
Antworten:
Dies wird im Android Developers Blog erläutert: http://android-developers.blogspot.co.at/2008/12/touch-mode.html
Die folgenden Zitate sollten es klar machen:
...
...
...
quelle
Ich gebe dir meine eigene Erfahrung:
Ich hatte eine Google TV-Anwendung, die eine Aktivität mit vielen ImageButtons hatte.
Ich wollte, dass die ImageButtons auswählbar sind.
Wenn also eine Person mit der Maus oder der Fernbedienung darauf klickt, werden sie nur ausgewählt (in meinem Fall hervorgehoben). Wenn der Benutzer dann die ausgewählte Taste drückt
ImageButton
, wird die Aktion ausgelöst. Dieses genaue Verhalten wurde erreicht, indem diefocusableInTouchMode
Eigenschaft über das XML-Layout aktiviert wurde .Alles was ich tun musste war ein gewöhnliches
onClickListener
für die ImageButtons und voila zu setzen!Ich habe meine Anwendung auf dem Mobilteil nicht überprüft, aber ich denke, sie würde ein bekanntes Ergebnis liefern.
BEARBEITEN
Ich habe Ihnen einen Anwendungsfall mitgeteilt, den ich getestet habe: Wenn Sie möchten, dass Ihre Schaltflächen
onClickListener
bei Ihrem zweiten Klick eine Aktion auslösen, nachdem Sie zum ersten Mal auf die Schaltfläche geklickt und sie ausgewählt habenButton
.Ich habe den ersten Klick verwendet, um "Fokus" zu erhalten und eine Zoom-In-Scale-Up-Animation auf meiner Schaltfläche anzuzeigen.
Stellen Sie einfach die Eigenschaft der Schaltfläche
focusableInTouchMode
zutrue
Ihrer XML - Layout - Datei.quelle
Fokussiert ist ein Status für die Ansicht und im Allgemeinen kann der Fokus mit Trackball und dpad geändert werden. Ihre Ansicht kann einen anderen Hintergrund haben, wenn der Status fokussiert ist.
Durch Fokussieren im Touch-Modus kann die Ansicht fokussiert werden, wenn der Benutzer die Ansicht berührt. Ein gutes Beispiel für diese Art von Komponente ist
EditText
.Mit
Button
oder einer anklickbaren Komponente ist der gedrückte Zustand normalerweise das, woran Sie interessiert sind.quelle
Benutzer können mit ihren Geräten interagieren, indem sie Hardwaretasten oder -tasten verwenden oder den Bildschirm berühren. Durch Berühren des Bildschirms wird das Gerät in den Touch-Modus versetzt. Der Benutzer kann dann mit ihm interagieren, indem er die virtuellen Schaltflächen, Bilder usw. auf dem Bildschirm berührt.
Rufen Sie die isInTouchMode () -Methode der View-Klasse auf, um zu überprüfen, ob sich das Gerät im Touch-Modus befindet .
quelle