MyGestureDetector s'étend SimpleOnGestureListener

Je me suis mise en œuvre d'un MyGestureDetector qui s'étend d'un SimpleOnGestureListener. J'ai emprunté la classe à partir de: http://www.codeshogun.com/blog/tag/view-flipper/ pour permettre une action de balayage dans un ViewFlipper. Je ne peux pas obtenir si la fonction de l'émulateur. Des suggestions?

Ci-dessous est tout le code:

L'main.java

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.MotionEvent;import android.view.View;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.webkit.WebView;
import android.widget.ViewFlipper;
public class main extends Activity {
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
private Animation slideLeftIn;
private Animation slideLeftOut;
private Animation slideRightIn;
private Animation slideRightOut;
private ViewFlipper viewFlipper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//---------------------------------Sets Swipe Animation to Next View -->       
viewFlipper = (ViewFlipper)findViewById(R.id.AC4313);
slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) {
return true;
}
return false;
}
};     
}
class MyGestureDetector extends SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
//right to left swipe
if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
}  else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
}
} catch (Exception e) {
//nothing
}
return false;
}
}    
@Override //------------------------------ Catch the Gesture Event by Overriding onTouch() method: -->
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event))
return true;
else
return false;
} 

Le anim *.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="800"/>
</set> 
Quel est le comportement?
FWIW, je l'ai déjà mis en place un ViewFlipper avec swipe de support via un GestureDetector: github.com/commonsguy/cwac-viewswiper
Avez-vous essayé sur un appareil? Je ne suis pas sûr que l'émulateur peut gérer jette. Ce code est identique à ce que j'utilise, et j'en fonction de la mine sur le même site web que vous avez lié. Il fonctionne pour moi sur les périphériques réels, mais je ne l'ai jamais testé sur un émulateur.
Je vais vérifier la viewSwiper 2morrow - l'air très intéressant. Thnx!!
L'exécution de la ViewSwiper sur son propre fonctionne très bien sur à la fois l'émulateur & l'appareil. Mise en œuvre du code dans mon application, il ne le fait pas. Je pense que le problème se situe à ce que les enfants sont WebViews qui ont une longueur nécessitant un défilement up/dwn (?). J'ai là un travail autour de cela? c'est à dire: tourner le rouleau-er éteint lorsque l'utilisateur effectue lft/rght - et comment pourrais-je faire cela?

OriginalL'auteur | 2011-02-10