auto scroll ein Galerie-widget

Ich implementieren müssen, um eine Galerie, die Schriftrollen ein Element zu einem Zeitpunkt, und die tun 'autoscroll': d.h. alle paar Sekunden, es scrollt automatisch zum nächsten Element.

Laut diesem thread: Android: Programmgesteuert animieren, zwischen den Bildern in der Galerie-widget, ich erweiterte Galerie, überschreiben onFling zu ignorieren, die Seitensprung-Falle und stattdessen die Simulation einer DPAD-Pfeil Links oder rechts um zu bewegen, um ein einzelnes Element zu einem Zeitpunkt:

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
          int kEvent;
          if(isScrollingLeft(e1, e2)){ //Check if scrolling left
            kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
          }
          else{ //Otherwise scrolling right
            kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
          }
          onKeyDown(kEvent, null);

          return true; 
    }

Funktioniert dies auch.
Für die auto-scroll, habe ich einen handler erstellen und postDelayed einer lauffähigen simuliert die gleiche DPAD-Taste drücken, in der gleichen Weise:

handler.postDelayed(new Runnable() {
    public void run() { 
        onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, null);
    }
}, AUTO_SCROLL_INTERVAL);

aber das macht nichts!!

Ich weiß, das runnable ausgeführt wird, wie erwartet, in den richtigen Zeitabständen, seit ich angemeldet und bestätigt dies, aber die onKeyDown nicht dazu führen, die Galerie zu Blättern oder switch-Elemente.
Warum sollte diese Arbeit in eine Methode und nicht eine andere? Ich versuchte zu rufen, meine onFling statt, ohne Erfolg. Habe auch versucht, dispatchKeyEvent, aber kein Glück.

Ich wirklich brauchen, um dies zu gehen, aber ich möchte auch wirklich zu verstehen, warum der gleiche code nicht zu den gleichen Ergebnissen an zwei verschiedenen Orten ist... Hat das etwas damit zu tun, wie Android-Ansichten handle input-events? Ich schaute in den Galerie-code für die Hinweise, aber nichts gefunden! Es scheint, als ob es funktionieren sollte.

Bitte, ich bin ratlos... irgendwelche Ideen?

Dank

InformationsquelleAutor noobler | 2011-11-16
Schreibe einen Kommentar