EasyFloat
EasyFloat copied to clipboard
能否加个设置悬浮窗不拦截触摸事件
比如悬浮窗不需要任何操作,只用做显示,但是挡住了某些非悬浮窗的内容,导致非悬浮窗内容无法点击和滑动。
请问这种有解决方案么?
有同样的需求
同求
解决了。重写 OnFloatAnimator 加一个 FLAG_NOT_TOUCHABLE
class Animator implements OnFloatAnimator {
@Nullable
@Override
public android.animation.Animator enterAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) {
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
return null;
}
@Nullable
@Override
public android.animation.Animator exitAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) {
layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
return null;
}
}
EasyFloat.with(this).setLayout(layout)
.setShowPattern(ShowPattern.ALL_TIME)
.setAnimator(new Animator()) // 在这里设置穿透鼠标
.setTag("DrawFloat")
.setDragEnable(false)
.show();
解决了。重写 OnFloatAnimator 加一个 FLAG_NOT_TOUCHABLE
class Animator implements OnFloatAnimator { @Nullable @Override public android.animation.Animator enterAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } @Nullable @Override public android.animation.Animator exitAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } } EasyFloat.with(this).setLayout(layout) .setShowPattern(ShowPattern.ALL_TIME) .setAnimator(new Animator()) // 在这里设置穿透鼠标 .setTag("DrawFloat") .setDragEnable(false) .show();
原理是这样的,我是直接加了一个方法控制,因为我要动态设置是否可触摸。
我想实现悬浮窗内Listview上下滑动,同求
解决了。重写 OnFloatAnimator 加一个 FLAG_NOT_TOUCHABLE
class Animator implements OnFloatAnimator { @Nullable @Override public android.animation.Animator enterAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } @Nullable @Override public android.animation.Animator exitAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } } EasyFloat.with(this).setLayout(layout) .setShowPattern(ShowPattern.ALL_TIME) .setAnimator(new Animator()) // 在这里设置穿透鼠标 .setTag("DrawFloat") .setDragEnable(false) .show();
Android 12好像无效哦
解决了。重写 OnFloatAnimator 加一个 FLAG_NOT_TOUCHABLE
class Animator implements OnFloatAnimator { @Nullable @Override public android.animation.Animator enterAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } @Nullable @Override public android.animation.Animator exitAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } } EasyFloat.with(this).setLayout(layout) .setShowPattern(ShowPattern.ALL_TIME) .setAnimator(new Animator()) // 在这里设置穿透鼠标 .setTag("DrawFloat") .setDragEnable(false) .show();Android 12好像无效哦
那是因为需要设置下WindowManager.LayoutParams的不透明度
解决了。重写 OnFloatAnimator 加一个 FLAG_NOT_TOUCHABLE
class Animator implements OnFloatAnimator { @Nullable @Override public android.animation.Animator enterAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } @Nullable @Override public android.animation.Animator exitAnim(@NonNull View view, @NonNull WindowManager.LayoutParams layoutParams, @NonNull WindowManager windowManager, @NonNull SidePattern sidePattern) { layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; return null; } } EasyFloat.with(this).setLayout(layout) .setShowPattern(ShowPattern.ALL_TIME) .setAnimator(new Animator()) // 在这里设置穿透鼠标 .setTag("DrawFloat") .setDragEnable(false) .show();Android 12好像无效哦
那是因为需要设置下WindowManager.LayoutParams的不透明度
这个透明度限制果然还是绕不过去啊