2010-12-21 8 views
7

In der Lebkuchen-Auslage ist Überrollen mit einem orangefarbenen "Blitz" gekennzeichnet. Die Versionshinweise und einige der API-Dokumente scheinen jedoch darauf hinzuweisen, dass es eine Unterstützung für Überschießen-Overscroll-Verhalten im iPhone-Stil gibt. Siehe zum Beispiel here. Es ist jedoch nicht klar, wie diese funktionieren sollen. Das einfache Festlegen von Zeichen mit diesen Methoden ändert das Verhalten nicht. Kennt jemand einen Weg, dies zu tun?Wie bekomme ich iPhone-Style-Überrollen in Android 2.3 (Gingerbread)?

Antwort

8

Ich habe vor kurzem ein paar Blog-Posts darüber gemacht. Guck mal!

http://jasonfry.co.uk/?id=26

http://jasonfry.co.uk/?id=27

Seitdem habe ich einen Gedanken gehabt, wenn Sie die overScrollBy Methode überschreiben, ich vermute, dass Sie die Hälfte einer dieser Parameter, um die Ansicht zu erhalten nicht folgen Sie Ihren Finger wenn du überrollst, aber folge einfach der halben Strecke.

+0

halber deltaY Parameter;) – jsonfry

+0

gibt es eine Möglichkeit, dies in Android-Version zu tun <2.3 – rOrlig

+0

In dieser Implementierung, wenn die Listview überstrichen ist und du berührst es weiterhin, es springt zurück, ohne es zu berühren, was ich vermeiden will. Hast du eine Idee, wie das geht? – erikaD

1

Ich kann dies nicht aus Erfahrung beantworten, aber unter AbsListView gibt es eine Methode namens setOverScrollMode(), die hilfreich sein kann. Daneben habe ich aber auch die OverScroller Klasse gefunden. Dies scheint eher das zu sein, wonach Sie suchen; Die Details der Implementierung, kann ich nicht wirklich helfen, obwohl.

+0

Danke für die Kommentare. Ich habe mir diese Methoden angeschaut, aber sie helfen nicht. Der "overScrollMode" ist standardmäßig aktiviert, sodass die Methode nur deaktiviert werden kann. Das Ausschalten verhindert lediglich, dass der orangefarbene Blitz erscheint. Die OverScroller-Klasse scheint die Benachrichtigung über das Overscroll-Verhalten zu verwalten, ist jedoch nicht für das Rendering selbst verantwortlich. – pents90

+0

Wenn ich weiter darüber nachdenke, bin ich eigentlich fast sicher, dass OverScroller die eigentlichen Mechanismen des Überrollens handhabt. Der Nachteil, den ich gerade erkannt habe, ist, dass es nur Android 2.3+ (Gingerbread) ist. Es wurde der ScrollView-Klasse hinzugefügt, einige der Commits finden Sie hier: http://android.git.kernel.org/?p=platform/frameworks/base.git;a=history;f=core/java/ android/widget/ScrollView.java – kcoppock

+0

http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/widget/OverScroller.java;h = f48eb89e596c52e09186941501284fc64a08db56; hb = 737e8fe2c7ce167bc68ad779160488007a5e0b1d Hier ist der tatsächliche OverScroll-Code, wenn Sie interessiert sind. Scrollen Sie nach unten zur MagneticOverScroller-Klasse, um die Mathematik dahinter zu sehen. (Und ich lag falsch, sie zogen es als separate Klasse aus ScrollView heraus, es sieht so aus) – kcoppock

Verwandte Themen