官网
- 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
// JitPack 远程仓库:https://jitpack.io
maven { url 'https://jitpack.io' }
- 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {
// JitPack 远程仓库:https://jitpack.io
maven { url 'https://jitpack.io' }
- 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
// 悬浮窗框架:https://github.com/getActivity/EasyWindow
implementation 'com.github.getActivity:EasyWindow:10.3'
// 传入 Activity 对象表示设置成局部的,不需要有悬浮窗权限
// 传入 Application 对象表示设置成全局的,但需要有悬浮窗权限
.setContentView(R.layout.toast_hint)
//.setAnimStyle(android.R.style.Animation_Translucent)
//.setOutsideTouchable(false)
//.setBackgroundDimAmount(0.5f)
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
.setText(android.R.id.message, "点我消失")
.setOnClickListener(android.R.id.message, new EasyWindow.OnClickListener<TextView>() {
public void onClick(EasyWindow toast, TextView view) {
// toast.startActivity(intent);
EasyWindow.with(activity).apply {
setContentView(R.layout.toast_hint)
//setAnimStyle(android.R.style.Animation_Translucent)
//setOutsideTouchable(false)
//setBackgroundDimAmount(0.5f)
setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
setText(android.R.id.message, "点我消失")
setOnClickListener(android.R.id.message, EasyWindow.OnClickListener<TextView?> { toast: EasyWindow<*>, view: TextView? ->
// toast.startActivity(intent);
EasyWindow.with(activity)
.setContentView(R.layout.toast_hint)
//.setAnimStyle(android.R.style.Animation_Translucent)
//.setOutsideTouchable(false)
//.setBackgroundDimAmount(0.5f)
.setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)
.setText(android.R.id.message, "点我消失")
.setOnClickListener(android.R.id.message, EasyWindow.OnClickListener<TextView?> { toast: EasyWindow<*>, view: TextView? ->
// toast.startActivity(intent);
- 没有悬浮窗权限是不能全局显示在其他应用上的,但是全局显示在自己的应用上是可以实现的
- 但是当前 Activity 创建的悬浮窗只能在当前 Activity 上面显示,如果想在所有的 Activity 都显示需要做特殊处理
- 我们可以通过 Application 来监听所有 Activity 的生命周期方法,然后在每个 Activity.onCreate 时创建悬浮窗
public final class ActivityWindowLifecycle implements Application.ActivityLifecycleCallbacks {
static void with(Application application) {
application.registerActivityLifecycleCallbacks(new FloatingLifecycle());
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
EasyWindow.with(activity)
public void onActivityStarted(Activity activity) {}
public void onActivityResumed(Activity activity) {}
public void onActivityPaused(Activity activity) {}
public void onActivityStopped(Activity activity) {}
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
public void onActivityDestroyed(Activity activity) {}
setOutsideTouchable(boolean touchable)
setBackgroundDimAmount(float amount)
addWindowFlags(int flags)
removeWindowFlags(int flags)
setWindowFlags(int flags)
hasWindowFlags(int flags)
EasyWindow.cancelByClass(Class<EasyWindow<?>> clazz)
EasyWindow.cancelByTag(String tag)
EasyWindow.recycleByClass(Class<EasyWindow<?>> clazz)
EasyWindow.recycleByTag(String tag)