android

android应用内全局悬浮窗怎么实现

小亿
247
2024-06-06 13:52:25
栏目: 编程语言

要在Android应用内实现全局悬浮窗,你可以使用系统提供的 WindowManager 来添加一个悬浮窗口。以下是实现该功能的基本步骤:

  1. 在 AndroidManifest.xml 文件中添加权限声明:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  1. 创建一个 Service 类来管理悬浮窗口的显示和隐藏:
public class FloatingWidgetService extends Service {

    private WindowManager windowManager;
    private View floatingWidget;

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

    @Override
    public void onCreate() {
        super.onCreate();

        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

        floatingWidget = LayoutInflater.from(this).inflate(R.layout.floating_widget, null);

        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);

        windowManager.addView(floatingWidget, params);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        
        if (floatingWidget != null) {
            windowManager.removeView(floatingWidget);
        }
    }
}
  1. 在 res/layout 目录下创建一个布局文件 floating_widget.xml,用于定义悬浮窗口的布局。

  2. 在 MainActivity 或其他需要显示悬浮窗口的地方启动 FloatingWidgetService:

startService(new Intent(this, FloatingWidgetService.class));

这样就可以在应用内实现全局悬浮窗口了。当应用进入后台或者被销毁时,记得停止 FloatingWidgetService 以及移除悬浮窗口。

0
看了该问题的人还看了