MyGestureDetector erstreckt SimpleOnGestureListener

Ich die Umsetzung ein MyGestureDetector, erstreckt sich ein SimpleOnGestureListener. Ich habe mir die Klasse aus: http://www.codeshogun.com/blog/tag/view-flipper/ zu ermöglichen, eine swipe-Aktion in einem ViewFlipper. Ich kann nicht, wenn die Funktion auf dem emulator. Irgendwelche Vorschläge?

Unten ist der gesamte code:

Den 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;
} 

Den 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> 
  • Was ist das Verhalten?
  • FWIW, ich habe bereits ein ViewFlipper mit swipe-Unterstützung über eine GestureDetector: github.com/commonsguy/cwac-viewswiper
  • Haben Sie versucht, es auf einem Gerät? Ich bin mir nicht sicher, dass der emulator verarbeiten kann, schleudert. Dieser code ist identisch mit dem, was ich benutze, und ich basiert meine auf die gleiche website, die Sie verlinkt. Es funktioniert für mich auf aktuellen Geräten, aber ich habe noch nie getestet, es auf einem emulator.
  • Ich werde überprüfen die viewSwiper 2morrow - Sieht sehr interessant aus. Thnx!!
  • Läuft die ViewSwiper auf seine eigene funktioniert gut, sowohl auf dem emulator als & das Gerät. Implementieren Sie den code in meine Anwendung tut es nicht. Ich denke, das problem liegt auf, dass die Kinder WebViews, die Länge, die eine scroll-up/dwn (?). Da ich dort einen work-around dafür? ie: drehen Sie das scroll-er aus, wenn der Benutzer Eingaben lft/rght - und wie kann ich dies tun?
InformationsquelleAutor | 2011-02-10
Schreibe einen Kommentar