我正在进行滑动手势。实际上我想限制滑动,如果触摸坐标>点击屏幕的左右边缘(100像素),如
如果我从左向右滑动并触摸坐标>从屏幕左侧Top 100px我想限制滑动
如果从右向左滑动并触摸坐标
顶部和底部滑动没有限制。
这是我尝试的代码:
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD
&& Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
} else {
if (Math.abs(diffY) > SWIPE_THRESHOLD
&& Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (diffY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
}
}
答案 0 :(得分:3)
答案 1 :(得分:0)
您可以使用SimpleOnGestureListener中的onFling方法计算此值。请检查以下问题:
答案 2 :(得分:0)
有一个很棒的帖子可以获取siplay指标:Get screen dimensions in pixels。我不确定我是否完全低估了沿着屏幕的侧面滑动的意义(右边的一根手指,左边的另一根可能?)但是我认为在你的情况下它应该是这样的:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
PointF p1 = new PointF(e1.getX(), e1.getY());
PointF p2 = new PointF(e2.getX(), e2.getY());
if ((p1.x < 100 || p1.x > width - 100) && (p2.x < 100 || p2.x > width - 100))
{
float diffY = p2.y - p1.y;
float diffX = p2.x - p1.x;
int dirY = (diffY < 0) ? -1 : 1;
int dirX = (diffX < 0) ? -1 : 1;
diffY = Math.abs(diffY); diffX = Math.abs(diffX);
if (diffX > diffY) {
if (diffX > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
if (dirX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
} else {
if (diffY > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
if (dirY > 0) {
onSwipeBottom();
} else {
onSwipeTop();
}
}
}
}