要在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 以及移除懸浮窗口。