问题:
在写一个手机通讯录界面,已完成界面,但是为了能够在屏幕上面显示更多内容,希望能够下往上滑的时候隐藏四个tabs,而在向下滑得时候再显示这四个tabs.
解决方案:
实现:
1 注册手势监听器,为了能够向下兼容使用支持库。
private GestureDetectorCompat mDetector;
mDetector = new GestureDetectorCompat(this, new MyGestureListener()); // 绑定手势监听器
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private static final String DEBUG_TAG = "Gestures";
@Override
public boolean onDown(MotionEvent event) {
Log.d(DEBUG_TAG, "onDown: ");
return true;
}
/**
* 左上角是(0,0)
*
*/
@Override
public boolean onFling(MotionEvent event1, MotionEvent event2,
float velocityX, float velocityY) {
Log.d(DEBUG_TAG, "x坐标:"+String.valueOf(event1.getX())+","+String.valueOf(event2.getX()));
Log.d(DEBUG_TAG, "x坐标差值:"+String.valueOf(event1.getX()-event2.getX()));
Log.d(DEBUG_TAG, "X速度:"+String.valueOf(Math.abs(velocityX)));
Log.d(DEBUG_TAG, "y坐标:"+String.valueOf(event1.getY())+","+String.valueOf(event2.getY()));
Log.d(DEBUG_TAG, "y坐标差值:"+String.valueOf(event1.getY()-event2.getY()));
Log.d(DEBUG_TAG, "y速度:"+String.valueOf(Math.abs(velocityY)));
// Log.d(DEBUG_TAG,
// "onFling: " + event1.toString() + event2.toString());
/**
* 监听向上手势:
* Y:
* y1大,y2小
* 速度取绝对值
*/
if(event1.getY()-event2.getY()>200 && Math.abs(velocityY)>200)
Toast.makeText(GestureActivity2.this, "向上滑动", Toast.LENGTH_SHORT).show();
/**
* 监听向下手势
* Y:
* y1小,y2大
* 速度取绝对值
*/
if(event2.getY()-event1.getY()>0 && Math.abs(velocityY)>200)
Toast.makeText(GestureActivity2.this, "向下滑动", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.d(DEBUG_TAG, "onSingleTapUp");
return super.onSingleTapUp(e);
}
@Override
public boolean onDoubleTap(MotionEvent e) {
Log.d(DEBUG_TAG, "onDoubleTap");
return super.onDoubleTap(e);
}
}
Gesture--向上滑动,上下滑动,布布扣,bubuko.com
原文:http://blog.csdn.net/zqx198810/article/details/20715427