学校网站三合一建设方案,wordpress nginx php,美术馆展厅设计方案,jsp网站架构官网
项目地址#xff1a;Github博客地址#xff1a;悬浮窗需求终结者
本框架意在解决一些悬浮窗的需求#xff0c;如果是普通的 Toast 封装推荐使用Toaster
集成步骤
如果你的项目 Gradle 配置是在 7.0 以下#xff0c;需要在 build.gradle 文件中加入
allprojects {…官网
项目地址Github博客地址悬浮窗需求终结者
本框架意在解决一些悬浮窗的需求如果是普通的 Toast 封装推荐使用Toaster
集成步骤
如果你的项目 Gradle 配置是在 7.0 以下需要在 build.gradle 文件中加入
allprojects {repositories {// JitPack 远程仓库https://jitpack.iomaven { url https://jitpack.io }}
}
如果你的 Gradle 配置是 7.0 及以上则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {repositories {// JitPack 远程仓库https://jitpack.iomaven { url https://jitpack.io }}
}
配置完远程仓库后在项目 app 模块下的 build.gradle 文件中加入远程依赖
android {// 支持 JDK 1.8compileOptions {targetCompatibility JavaVersion.VERSION_1_8sourceCompatibility JavaVersion.VERSION_1_8}
}dependencies {// 悬浮窗框架https://github.com/getActivity/EasyWindowimplementation com.github.getActivity:EasyWindow:10.3
}
使用案例
Java 用法
// 传入 Activity 对象表示设置成局部的不需要有悬浮窗权限
// 传入 Application 对象表示设置成全局的但需要有悬浮窗权限
EasyWindow.with(this).setContentView(R.layout.toast_hint)// 设置成可拖拽的//.setDraggable()// 设置显示时长.setDuration(1000)// 设置动画样式//.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.OnClickListenerTextView() {Overridepublic void onClick(EasyWindow toast, TextView view) {// 点击这个 View 后消失toast.cancel();// 跳转到某个Activity// toast.startActivity(intent);}}).show();
Kotlin 用法二选一
EasyWindow.with(activity).apply {setContentView(R.layout.toast_hint)// 设置成可拖拽的//setDraggable()// 设置显示时长setDuration(1000)// 设置动画样式//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.OnClickListenerTextView? { toast: EasyWindow*, view: TextView? -// 点击这个 View 后消失toast.cancel()// 跳转到某个Activity// toast.startActivity(intent);})
}.show()
EasyWindow.with(activity).setContentView(R.layout.toast_hint)// 设置成可拖拽的//.setDraggable()// 设置显示时长.setDuration(1000)// 设置动画样式//.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.OnClickListenerTextView? { toast: EasyWindow*, view: TextView? -// 点击这个 View 后消失toast.cancel()// 跳转到某个Activity// toast.startActivity(intent);}).show()
没有悬浮窗权限如何全局显示
没有悬浮窗权限是不能全局显示在其他应用上的但是全局显示在自己的应用上是可以实现的但是当前 Activity 创建的悬浮窗只能在当前 Activity 上面显示如果想在所有的 Activity 都显示需要做特殊处理我们可以通过 Application 来监听所有 Activity 的生命周期方法然后在每个 Activity.onCreate 时创建悬浮窗
public final class ActivityWindowLifecycle implements Application.ActivityLifecycleCallbacks {static void with(Application application) {application.registerActivityLifecycleCallbacks(new FloatingLifecycle());}Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {EasyWindow.with(activity).setView(R.layout.xxx).show();}Overridepublic void onActivityStarted(Activity activity) {}Overridepublic void onActivityResumed(Activity activity) {}Overridepublic void onActivityPaused(Activity activity) {}Overridepublic void onActivityStopped(Activity activity) {}Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}Overridepublic void onActivityDestroyed(Activity activity) {}
}
框架的 API 介绍
对象方法
// 设置悬浮窗宽度
setWidth(int width)
// 设置悬浮窗高度
setHeight(int height)// 设置悬浮窗显示的重心
setGravity(int gravity)
// 设置水平偏移量
setXOffset(int px)
// 设置垂直偏移量
setYOffset(int px)// 设置悬浮窗外层是否可触摸
setOutsideTouchable(boolean touchable)
// 设置悬浮窗背景阴影强度
setBackgroundDimAmount(float amount)// 添加窗口标记
addWindowFlags(int flags)
// 移除窗口标记
removeWindowFlags(int flags)
// 设置窗口标记
setWindowFlags(int flags)
// 是否存在某个窗口标记
hasWindowFlags(int flags)// 设置悬浮窗的显示类型
setWindowType(int type)// 几乎涵盖了所有 WindowManager 的参数
// 更多 API 方法请查看 EasyWindow 类的源码
......
静态方法
// 取消所有正在显示的悬浮窗
EasyWindow.cancelAll()// 取消特定类名的悬浮窗
EasyWindow.cancelByClass(ClassEasyWindow? clazz)// 取消特定标记的悬浮窗
EasyWindow.cancelByTag(String tag)// 回收所有正在显示的悬浮窗
EasyWindow.recycleAll()// 回收特定类名的悬浮窗
EasyWindow.recycleByClass(ClassEasyWindow? clazz)// 回收特定标记的悬浮窗
EasyWindow.recycleByTag(String tag)