Frage

Übersicht
Ich verwende eine Klasse Listfield vertikal eine Reihe von Informationen angezeigt werden. Jede Zeile dieser Listfield nimmt 2 / 5. ist der Bildschirmhöhe.

Als solcher, wenn das nächste Element Scrollen (vor allem, wenn sie von den Zwängen der Bildschirmhöhe ein Element teilweise verdeckt Anzeige), die ganze Rolle / Fokus Aktion ist sehr schreckhaft.

Ich mag diese Sprunghaftigkeit beheben, indem flüssiges Scrollen zwischen Scroll-Umsetzung / Fokus Aktionen. Ist dies möglich, mit der Listfield-Klasse?

Beispiel:
Nachstehend ist ein Screenshot der Frage auf der Hand anzeigt.


(Quelle: perkmobile.com )

Sobald der Benutzer nach unten scrollt zu ListFieldTHREE Reihe, diese Zeile „gescrollt“ in dem Blick auf eine sehr schreckhaft Weise, kein flüssiges Scrollen. Ich weiß, was die Zeilenhöhe kleiner wird dieses Problem mildern, aber ich wan nicht diesen Weg zu gehen.

Leitfrage
Wie glatt ich in einem Listfield Scrollen?

War es hilfreich?

Lösung

Angenommen, Sie das Verhalten möchten, dass der Benutzer nach unten scrollt 1 ‚Klick‘ des Trackball, und der nächste Punkt wird dann hervorgehoben, aber statt einer sofortigen Scroll springen Sie eine glatte Scroll erhalten das neue Element sichtbar ist (wie in Google zu machen Google Mail-App für Blackberry), werden Sie Ihre eigene Komponente rollen.

Die Grundidee ist VerticalFieldManager Unterklasse, dann auf einer Spirale (Schlüssel aus dem Movefocus-Methode) Sie haben einen separaten Thread Update eine vertikale Position variabel und ungültig machen die Manager mehrmals.

Der Faden ist notwendig, weil, wenn man darüber nachdenkt Sie eine Animation aus einer Benutzerereignis fahren - die glatte Rolle auf dem Blackberry wirklich eine Animation, wie es länger als die Veranstaltung dauert, die es ausgelöst

Ich habe auf Details ein bisschen vage, und das ist nicht eine wirklich einfache Sache zu tun, so dass hoffentlich das hilft ein wenig.

Andere Tipps

Es ist keine offizielle API Art und Weise, dies zu tun, soweit ich weiß, aber es kann wahrscheinlich durch eine geschickte Nutzung von NullField (Field.FOCUSABLE) frisiert werden, was, wie viele benutzerdefinierten Blackberry-UIs Fokus Verhalten gezwungen implementieren .

Ein Ansatz wäre jedes „Listenelement“ abzuleiten aus einer Klasse, die fokussierbar NullFields mit dem sichtbaren Inhalt des Listenelementes selbst verwebt - das im Wesentlichen des Scrollen System zwingen würde, zu „springen“ in geringeren Abständen statt den großen Intervalle durch die natürlichen Gegensätze zwischen den Listenelementen diktiert, und würden den Nebeneffekt, nicht die sichtbare Positionierung des Inhalts des Listenelementes haben zu ändern.

, wenn Sie die, wie die Listfield Farben außer Kraft setzen möchten oder Ihre eigenen Wrapper erstellen, werden Sie immer dieses Problem haben, ist dies, weil jede Zeile immer sichtbar ist beim Scrollen. Versuchen Sie es mit labelField- statt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top