我想在手指下移动视图,并且我希望它始终保持在两个视图之间的高度范围内。
考虑一下:
___________________________
| |
| A |
|__________________________|
_____
|_o_|
___________________________
| |
| B |
|__________________________|
我希望视图“o”在“A”和“B”之间垂直移动。
问题是在移动时似乎没有触发ACTION_MOVE所以我的if语句检查未调用的范围所以如果你快速移动o
视图超出范围然后ACTION_MOVE触发并查看o卡在一些超出范围的地方。
我怎么能这样做。
我的代码片段:
public boolean onTouch(View view, MotionEvent motionEvent) {
BeadView beadView = (BeadView) view;
Rect parentRect = new Rect();
Rect beadRect = new Rect();
((LinearLayout) beadView.getParent()).getGlobalVisibleRect(parentRect);
beadView.getGlobalVisibleRect(beadRect);
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
dy = - Math.abs(beadView.getY() - motionEvent.getRawY());
break;
case MotionEvent.ACTION_MOVE:
if ((beadRect.bottom < parentRect.bottom) &&
beadRect.top > parentRect.top) {
beadView.animate()
.y(motionEvent.getRawY() + dy)
.setDuration(0).
start();
}
break;
}
return true;
}
有什么建议吗?