Set GestureDetector to all child views
I would like to add a GestureDetector to all views (view groups) of an activity without assigning it manually to every single view. Right now onFling() is only activated when swiping over the background but not when swiping on eg button1.
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;
}
}
你可以使用GestureOverlayView来查看previus的stackoverflow帖子,了解如何使用它。
链接地址: http://www.djcxy.com/p/91316.html上一篇: 在android中使用手势叠加视图