Android activity 手机悬浮窗
时间: 2023-08-28 17:33:01 浏览: 185
在 Android 中,可以使用悬浮窗实现在应用外部显示一个小窗口,通常用于显示通知、播放视频、聊天窗口等功能。要实现悬浮窗,可以使用 WindowManager 和 View 来创建一个自定义的 View,并将其添加到 WindowManager 中,代码示例如下:
```java
// 获取 WindowManager
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
// 创建一个自定义的 View
View view = LayoutInflater.from(this).inflate(R.layout.my_float_view, null);
// 设置 View 的参数
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);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 100;
params.y = 100;
// 将 View 添加到 WindowManager
wm.addView(view, params);
```
需要注意的是,为了保证应用能够显示悬浮窗,需要在 AndroidManifest.xml 中添加权限声明:
```xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
```
另外,从 Android 8.0 开始,为了防止悬浮窗被滥用,需要在应用中动态请求权限才能显示悬浮窗,示例代码如下:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE_OVERLAY_PERMISSION);
} else {
showFloatView();
}
} else {
showFloatView();
}
```
其中,REQUEST_CODE_OVERLAY_PERMISSION 是一个自定义的请求码,需要在 onActivityResult 中处理权限请求结果。
以上就是 Android 中实现悬浮窗的基本过程,希望能对你有所帮助。
阅读全文