2012-11-29 21 views
5

Çok sayıda çevrimiçi örneğe baktım ve hepsinin bu şekilde uyguladığı gesturelistener var. Jest olayını almak için android alamıyorum myText'in değeri değişmiyor ve logcat'ta herhangi bir çıktı almıyorum. Neyi yanlış yapıyorum?Android GestureListener olayları tespit etmiyor

public class MainActivity extends Activity { 
private GestureDetector gDetector; 
private TextView myText; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    gDetector = new GestureDetector(this, new MyOnGestureListener()); 
    myText = (TextView) findViewById(R.id.mytext); 
    myText.setText("Test"); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 

    return true; 
} 

class MyOnGestureListener extends SimpleOnGestureListener implements 
     OnGestureListener { 
    @Override 
    public boolean onDown(MotionEvent e) { 
     Log.d("Main", "did"); 
     myText.setText("hi"); 
     // TODO Auto-generated method stub 
     return true; 
    } 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
      float velocityY) { 
     myText.setText("hi"); 
     Log.d("Main", "did"); 
     // TODO Auto-generated method stub 
     return true; 
    } 

    @Override 
    public void onLongPress(MotionEvent e) { 
     Log.d("Main", "did"); 
     myText.setText("hi"); 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onScroll(MotionEvent e1, MotionEvent e2, 
      float distanceX, float distanceY) { 
     Log.d("Main", "did"); 
     myText.setText("hi"); 
     // TODO Auto-generated method stub 
     return true; 
    } 

    @Override 
    public void onShowPress(MotionEvent e) { 
     Log.d("Main", "did"); 
     myText.setText("hi"); 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean onSingleTapUp(MotionEvent e) { 
     Log.d("Main", "did"); 
     myText.setText("hi"); 
     // TODO Auto-generated method stub 
     return true; 
    } 
} 

}

cevap

7

hattı

gestureScanner = new GestureDetector(this); 

değiştirin.

@Override 
public boolean onTouchEvent(MotionEvent me) { 
    return gDetector.onTouchEvent(me); 
} 

Ya belirli bir görünümle üzerinde GestureDetector etkinleştirmek istiyorsanız:

Yani böyle OnTouchListener geçersiz kılabilir Eğer saha gDetector kullanmak gerekir

view.setOnTouchListener(new OnTouchListener{ 
    @Override 
    public boolean onTouchEvent(MotionEvent me) { 
     return gDetector.onTouchEvent(me); 
    } 
}) 
+0

Hey, MapView bir jest detektörü uygulamak çalışıyorum. Tanımladığınız yöntemi kullanıyorum, GestureDetector sınıfımı tanımladım ve burada açıkladığınız şekilde mMapView.setOnTouchListner() öğesini arıyorum. OnTouchEvent() için herhangi bir isabet almıyorum. Nedenini söyler misin? – KairisCharm

0

Bu çalışması gerekir here

Bu kodu deneyin.

da eksik parçası dokunmatik etkinliğe katılmak üzere GestureListener bağlantı kalmamasıdır

gestureScanner = new GestureDetector(ScrollTest.this, this); 
4

. Şimdiye kadar, sadece bir örnek oluşturmuştunuz, ama şimdi onu, meyveleri almak için kullanmalısınız. Böyle Örneğin

:

this.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(final View view, final MotionEvent event) { 
     return gDetector.onTouchEvent(event); 
    } 
}); 
İlgili konular