2009-07-27 19 views
2

Ich habe 2 Fragen über Android TrackBall Event. Ich schätze, wenn Sie mir mit ihnen helfen können:Brauchen Sie Hilfe mit Android TrackBall Event

  1. Kann ich die Geschwindigkeit des TrackBall-Ereignisses erkennen? Wie in Fling kann ich einen "großen" Fling gegen einen "kleinen" Fling erkennen. Kann ich über den Trackball schleudern?

  2. Warum TrackBall Event immer von Key links/rechts Ereignisse folgen? Für mich scheinen sie doppelt zu sein.

Zum Beispiel habe ich Debug-Anweisung in beiden dispatchTrackballEvent() und dispatchKeyEvent() und i-Schalter auf 'Trackball' -Modus in Emulator. Wenn ich meine Maus herumbewege, sehe ich immer dispatchTrackballEventvent mit dispatchKeyEvent.

Vielen Dank für jede Hilfe.

+0

Hat meine Antwort Ihnen geholfen? –

+0

Ja. Danke für Ihre Hilfe. – n179911

Antwort

3

Antworten auf Ihre Zweifel:

  1. Trackball Ereignisse in Android Senden Sie eine Motion Objekt (docs), von diesem Objekt Sie historische Informationen, die lasst uns machen Sie ein Delta von Bewegung kann man, auf diese Weise lesen weiß mit welcher Intensität der Ball gerollt wurde.

  2. Das verursacht, weil das System nicht sagen werden, dass Sie das Ereignis in Ihrem onTrackBallEvent Handler konsumiert haben (docs), wenn Sie das Ereignis nicht wahr zurückgeben wird dann als ein D-Pad-Taste-Ereignis ausgelöst.

+0

In Android-Adressbuch, in der Kontaktlistenansicht, kann ich mit TrackBall (nicht nur Toouch-Bildschirm) nach oben/unten "schleudern". Aber wenn ich mir den Quellcode des Adressbuches anschaue, sehe ich nicht, dass sie dispatchTrackBall() implementieren, also wie haben sie 'Schleudern' über Trackball implementiert? Irgendeine Idee? Danke. – n179911

+0

Es ist nicht notwendig, dispatchTrackBall aufzurufen, Sie können onTrackBallEvent nur in der Ansicht implementieren (in diesem Fall die Listenansicht). http://developer.android.com/reference/android/view/View.html#onTrackballEvent(android.view.MotionEvent) –