前言
相信大家对Android悬浮窗应该是很熟悉了,比如说腾讯视频、爱奇艺等APP都有悬浮窗功能。在你打游戏的同时还可以看视频,充分利用屏幕空间。还有微信,360手机卫士等APP也有悬浮窗功能。那么Android悬浮窗是怎么实现的呢?
项目源码:Android仿腾讯视频悬浮窗的实现
其实并不难,核心代码就只有一行:
windowManager.addView(view, layoutParams)
效果图
对view比较熟悉的同学们应该发现了,其实悬浮窗就是一个view,我们只需要把view添加到windowManager上就可以了。那么,开始讲细节了:
权限一定要记得加:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
因为我们的悬浮窗要在Launcher上或者在其他APP上面运行,所以这里就用到了service,因为service可以默默地在后台运行。
实现大致步骤:
1.检查权限(如果没有权限跳转到授权界面)
2.在service中用inflate方法获取我们需要的view,设置位置参数等,加入到windowManager里面
3.启动悬浮窗服务
view布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="200dp"
android:layout_height="100dp"
android:src="@drawable/huge"></ImageView>
<ImageView
android:id="@