From f48b0ea10351246da43bf7e259855a91e1314dbc Mon Sep 17 00:00:00 2001 From: ShadeTeam <44560819+ShadeTeam@users.noreply.github.com> Date: Thu, 29 Nov 2018 20:45:58 +0800 Subject: [PATCH] Update IFloatWindowImpl.java --- .../yhao/floatwindow/IFloatWindowImpl.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java b/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java index 65f222e..215a12d 100644 --- a/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java +++ b/floatwindow/src/main/java/com/yhao/floatwindow/IFloatWindowImpl.java @@ -298,5 +298,41 @@ private void cancelAnimator() { mAnimator.cancel(); } } + + /** +* 判断是否超出范围,根据自己需求设置比例大小,我自己设置的是0.025和0.975 +* @param x event.getRawX() +* @param y event.getRawY() +* @return +*/ +private boolean isOutOfRange(float x, float y) { +boolean b = true; +float screenWidth = Util.getScreenWidth(mB.mApplicationContext); +float screenHeight = Util.getScreenHeight(mB.mApplicationContext); +float widthRate, heightRate; +widthRate = (screenWidth - x) / screenWidth; +heightRate = (screenHeight - y) / screenHeight; +if (widthRate > 0.025 && widthRate < 0.975 && heightRate > 0.025 && heightRate < 0.975) { +b = false; +} else { +b = true; +} +return b; +} +然后在case MotionEvent.ACTION_MOVE 中判断即可 +case MotionEvent.ACTION_MOVE: +if (!isOutOfRange(event.getRawX(), event.getRawY())) { +changeX = event.getRawX() - lastX; +changeY = event.getRawY() - lastY; +newX = (int) (mFloatView.getX() + changeX); +newY = (int) (mFloatView.getY() + changeY); +mFloatView.updateXY(newX, newY); +if (mB.mViewStateListener != null) { +mB.mViewStateListener.onPositionUpdate(newX, newY); +} +lastX = event.getRawX(); +lastY = event.getRawY(); +} +break; }