File tree Expand file tree Collapse file tree 3 files changed +28
-2
lines changed
library/src/main/java/com/hjq/window/draggable Expand file tree Collapse file tree 3 files changed +28
-2
lines changed Original file line number Diff line number Diff line change 99import android .util .TypedValue ;
1010import android .view .DisplayCutout ;
1111import android .view .Gravity ;
12+ import android .view .MotionEvent ;
1213import android .view .View ;
1314import android .view .View .OnLayoutChangeListener ;
1415import android .view .View .OnTouchListener ;
@@ -63,6 +64,30 @@ public void start(EasyWindow<?> easyWindow) {
6364 });
6465 }
6566
67+ @ Override
68+ public final boolean onTouch (View v , MotionEvent event ) {
69+ if (event .getAction () == MotionEvent .ACTION_DOWN ) {
70+ // 在按下的时候先更新一下窗口信息和坐标信息,否则点击可能会出现坐标偏移的问题
71+ // 全局的悬浮窗在非全屏的页面创建,跳转到全屏的页面展示就会导致坐标偏移
72+ // 这是因为在跳转到全屏的悬浮窗的时候没有更新当前 Window 信息导致的
73+ // 目前能想到比较好的办法就是在悬浮窗移动前之前先更新 Window 信息和 View 坐标
74+ // Github issue 地址:https://github.com/getActivity/EasyWindow/issues/69
75+ refreshWindowInfo ();
76+ refreshLocationCoordinate ();
77+ }
78+ return onDragWindow (mEasyWindow , mDecorView , event );
79+ }
80+
81+ /**
82+ * 窗口拖拽回调方法
83+ *
84+ * @param easyWindow 当前窗口对象
85+ * @param decorView 当前窗口视图
86+ * @param event 当前触摸事件
87+ * @return 根据返回值决定是否拦截该事件
88+ */
89+ public abstract boolean onDragWindow (EasyWindow <?> easyWindow , View decorView , MotionEvent event );
90+
6691 public EasyWindow <?> getEasyWindow () {
6792 return mEasyWindow ;
6893 }
Original file line number Diff line number Diff line change 33import android .annotation .SuppressLint ;
44import android .view .MotionEvent ;
55import android .view .View ;
6+ import com .hjq .window .EasyWindow ;
67
78/**
89 * author : Android 轮子哥
@@ -21,7 +22,7 @@ public class MovingDraggable extends BaseDraggable {
2122
2223 @ SuppressLint ("ClickableViewAccessibility" )
2324 @ Override
24- public boolean onTouch ( View v , MotionEvent event ) {
25+ public boolean onDragWindow ( EasyWindow <?> easyWindow , View decorView , MotionEvent event ) {
2526 switch (event .getAction ()) {
2627 case MotionEvent .ACTION_DOWN :
2728 // 记录按下的位置(相对 View 的坐标)
Original file line number Diff line number Diff line change @@ -53,7 +53,7 @@ public SpringBackDraggable(int springBackOrientation) {
5353
5454 @ SuppressLint ("ClickableViewAccessibility" )
5555 @ Override
56- public boolean onTouch ( View v , MotionEvent event ) {
56+ public boolean onDragWindow ( EasyWindow <?> easyWindow , View decorView , MotionEvent event ) {
5757 switch (event .getAction ()) {
5858 case MotionEvent .ACTION_DOWN :
5959 // 记录按下的位置(相对 View 的坐标)
You can’t perform that action at this time.
0 commit comments