gpt4 book ai didi

android - 如何在触摸时删除 TYPE_SYSTEM_OVERLAY View

转载 作者:太空狗 更新时间:2023-10-29 13:12:04 33 4
gpt4 key购买 nike

我想删除添加到 Android 服务上的 TYPE_SYSTEM_OVERLAY View ,这是可能的。我的服务是..

OverlayService服务

    public class OverlayService extends Service {
WindowManager wm;
View myView;

@Override
public IBinder onBind(Intent intent) {
return null;
}

@Override
public void onCreate() {
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT, 0, 0,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
PixelFormat.RGBA_8888);

wm = (WindowManager) getSystemService(WINDOW_SERVICE);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
myView = inflater.inflate(R.layout.activity_charging, null);


myView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("==== Remove View ");
wm.removeView(myView);
return false;
}
});

wm.addView(myView, params);
super.onCreate();
}
}

xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical">

<Button
android:id="@+id/btnRemoveView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal"
android:text="Remove View" />
</RelativeLayout>

根据我上面的代码,当应用程序被调用时, View 被添加到屏幕上,但是在那个按钮点击不起作用,我想要什么..我想删除按钮点击时创建的 View ,如果可以删除自定义TYPE_SYSTEM_OVERLAY 那怎么..?帮帮我..

谢谢。

最佳答案

您可能已经修复它或继续前进,但以防万一:

它没有响应的原因是因为我无法让 TYPE_SYSTEM_OVERLAY 响应触摸事件。执行此操作的方法是使用类型 TYPE_SYSTEM_ALERT 并使用标志:

 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

然后它应该会正确响应您的其余代码。

关于android - 如何在触摸时删除 TYPE_SYSTEM_OVERLAY View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39411993/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com