现在写的项目里,需要用到一个功能,就是手指从屏幕的底部向上滑动,然后弹出一个登录的Dialog,要实现主要就是捕捉手指的滑动事件。
首先呢,自己的要实现这个功能的Activity或者Fragment要实现两个监听接口:
然后,定义一下GestureDetector:
GestureDetector gestureDetector;
在onCreate()方法中:
gestureDetector = new GestureDetector(this,this);
这两个this,一个是context,一个是listener,因为我这里是Activity,所以两个都是this就可以。
然后我给整个LinearLayout加了这两个监听;
LinearLayout ll_main;
ll_main = findViewById(R.id.layoutMain);
ll_main.setOnTouchListener(this);
ll_main.setLongClickable(true);
下边是这两个接口要重写的方法:
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
if (((e1.getY() - e2.getY()) > 800) && (e1.getY() > 1900)) {
//这里写具体的,捕捉到动作以后,软件要执行的操作
//e1就是按下去的那个点,e2就是抬起来的那个点,这里用e1的Y坐标减去e2的Y坐标,大于0,即为上滑
//操作,后边的那个条件就是判断是不是在底部,屏幕总的为1920,我这里设置的为1900
}
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
这样即可实现。