要在Android应用内实现全局悬浮窗,你可以使用系统提供的 WindowManager 来添加一个悬浮窗口。以下是实现该功能的基本步骤:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
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);
}
}
}
在 res/layout 目录下创建一个布局文件 floating_widget.xml,用于定义悬浮窗口的布局。
在 MainActivity 或其他需要显示悬浮窗口的地方启动 FloatingWidgetService:
startService(new Intent(this, FloatingWidgetService.class));
这样就可以在应用内实现全局悬浮窗口了。当应用进入后台或者被销毁时,记得停止 FloatingWidgetService 以及移除悬浮窗口。