2012-07-03 3 views
8

모든 단일보기에 수동으로 할당하지 않고 활동의 모든보기 (보기 그룹)에 GestureDetector를 추가하고 싶습니다. 지금은 onFling()이 배경 위로 스 와이프 할 때만 활성화되지만 예를 들어 스 와이프 할 때 활성화되지 않습니다. button1. 당신은 GestureOverlayView 사용할 수 있습니다모든 하위보기에 GestureDetector 설정

package com.app.example; 

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.GestureDetector; 
import android.view.MotionEvent; 
import android.view.GestureDetector.SimpleOnGestureListener; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.Button; 
import android.widget.LinearLayout; 

public class ExampleActivity extends Activity { 
    Context mContext = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = this; 

     LinearLayout parent = new LinearLayout(mContext); 
     parent.setOrientation(LinearLayout.VERTICAL); 
     parent.setBackgroundColor(Color.RED); 

     Button button1 = new Button(mContext); 
     button1.setText("Button 1"); 
     Button button2 = new Button(mContext); 
     button2.setText("Button 2"); 

     parent.addView(button1); 
     parent.addView(button2); 

     final GestureDetector gestureDetector = new GestureDetector(
       new MyGestureDetector()); 

     parent.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       gestureDetector.onTouchEvent(event); 

       return true; 
      } 
     }); 

     setContentView(parent); 
    } 
} 

class MyGestureDetector extends SimpleOnGestureListener { 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, 
      float velocityX, float velocityY) { 

     // right to left 
     if(e1.getX() - e2.getX() > 10 && Math.abs(velocityX) > 20) { 
      Log.i("onFling", "right to left"); 

      return false; 

     // left to right 
     } else if (e2.getX() - e1.getX() > 10 && Math.abs(velocityX) > 20) { 
      Log.i("onFling", "left to right"); 

      return false; 
     } 

     return false; 
    } 

} 

답변

2

그것을 사용하는 방법에 대한 previus stackoverflow post를 참조하십시오.

+1

GestureOverlayView 팁 주셔서 감사합니다. 그것을 사용하는 방법을 얻는 데는 시간이 걸렸습니다. -> http://www.vogella.com/articles/AndroidGestures/article.html – Paradiesstaub

+0

다행입니다. – Angelo

+2

나는 이것을 사용하는 방법을 알고 싶습니다. GestureOverlayView. – halxinate