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
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, es stellt sich heraus, dass die ursprüngliche Logik, die ich hatte hat Arbeit.
Eine benutzerdefinierte Galerie implementieren der Logik, aber ohne die alles andere in meiner Klasse (unten) funktioniert wie erwartet, also muss es etwas anderes in meiner Klasse, die dieses problem verursacht.
Dank für Eure Hilfe, Hacker 🙂
Zumindest habe ich gelernt, über Reflexion... das ist ein sehr cooles feature von Java.
Hinweis für zukünftige Besucher: eine bessere Lösung in Situationen wie dieser (full-view gallery) ist die Verwendung eines
ViewPager
. Es funktioniert wie eine Galerie, aber richtig implementiert einesetCurrentItem()
Methode für smooth-scrolling. Mit der Kompatibilität Paket, es funktioniert für API 4 (Android 1.6!) und, so jeder kann es verwenden.Es scheint, dass Sie call onKeyDown-Methode Ihrer Aktivität, nicht Galerie.
Aufruf versuchen,
statt.
Korrigieren Sie mich, wenn ich falsch bin,