android 悬浮窗
时间: 2023-09-20 17:13:29 浏览: 161
源码 悬浮窗 android 悬浮窗.zip
Android悬浮窗(Floating Window)可以让应用在后台运行时,在屏幕上显示出一个可移动的窗口,用户可以在窗口中执行相应的操作。以下是一个简单的实现示例:
1. 在AndroidManifest.xml文件中添加悬浮窗权限
```
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
```
2. 新建一个Service类,并在onCreate()方法中创建悬浮窗
```
public class FloatingWindowService extends Service {
private WindowManager windowManager;
private View floatingView;
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
// 创建悬浮窗View
floatingView = LayoutInflater.from(this).inflate(R.layout.floating_window, null);
// 设置悬浮窗参数
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ? WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY : WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
// 设置悬浮窗初始位置
params.gravity = Gravity.CENTER | Gravity.START;
params.x = 0;
params.y = 0;
// 将悬浮窗添加到WindowManager
windowManager.addView(floatingView, params);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
// 移除悬浮窗
if (floatingView != null) {
windowManager.removeView(floatingView);
}
}
}
```
3. 在悬浮窗布局文件(floating_window.xml)中添加需要显示的内容
```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/floating_window"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent">
<!-- 添加需要显示的内容 -->
</RelativeLayout>
```
4. 在Activity中启动Service
```
Intent intent = new Intent(this, FloatingWindowService.class);
startService(intent);
```
这样就可以实现一个简单的Android悬浮窗了。需要注意的是,悬浮窗权限在Android 6.0以上的系统中需要动态申请,具体实现可以参考Android官方文档。
阅读全文