android studio悬浮窗怎么做
时间: 2024-05-14 16:11:30 浏览: 117
android编程实现悬浮窗体的方法
Android Studio中实现悬浮窗的方式有很多种,可以使用系统提供的WindowManager来实现,也可以使用第三方库如FloatWindow等来简化操作。下面是一个使用WindowManager的示例代码:
1. 添加权限
在AndroidManifest.xml文件中添加SYSTEM_ALERT_WINDOW权限:
```xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
```
2. 创建Service类
```java
public class FloatingWindowService extends Service {
private WindowManager windowManager;
private WindowManager.LayoutParams layoutParams;
private View floatingView;
@Override
public void onCreate() {
super.onCreate();
// 获取WindowManager对象
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
// 创建悬浮窗View
floatingView = LayoutInflater.from(this).inflate(R.layout.floating_window, null);
// 创建LayoutParams对象
layoutParams = 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 | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
// 设置悬浮窗初始位置
layoutParams.x = 0;
layoutParams.y = 0;
// 添加悬浮窗到WindowManager
windowManager.addView(floatingView, layoutParams);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
// 移除悬浮窗
windowManager.removeView(floatingView);
}
}
```
3. 创建悬浮窗布局文件
在res/layout目录下创建floating_window.xml文件,设置悬浮窗布局。
4. 启动Service
在Activity中启动Service:
```java
Intent intent = new Intent(this, FloatingWindowService.class);
startService(intent);
```
以上就是使用WindowManager创建悬浮窗的简单示例,你可以根据自己的需求进行修改和扩展。
阅读全文