Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案
Posted Wei_Leng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案相关的知识,希望对你有一定的参考价值。
PerfectFloatWindow
项目地址:Alonsol/PerfectFloatWindow
简介: android 全局悬浮窗,目前已经适配华为,小米,vivo,oppo,一加,三星,魅族,索尼,LG,IQOO,努比亚,中兴,金立,360,锤子等目前是市面上所有机型兼容 android4.1 至 android11 版本,支持 androidX
标签:
Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案。目前已经适配华为,小米,vivo,oppo,一加,三星,魅族,索尼,LG,IQOO,努比亚,中兴,金立,360,锤子等目前是市面上主流机型包括非主流机型,兼容 4.4 以上包括 android11 版本。调用方便,配置少,后续会新增更多功功能,绝对满足你的定制化需求
特性
-
支持悬浮窗内容自定义
-
内部已处理权限校验,以及设置页面跳转
-
支持 builder 模式,方便动态配置
-
支持悬浮窗手势滑动
-
适配 vivo,oppo 等第三方权限管理器跳转
-
支持应用内以及应用外全局弹窗
-
权限开启弹窗支持用户自定义
1.初始化悬浮窗控件
//定义悬浮窗助手
floatHelper = FloatClient.Builder()
.with(this)
.addView(view)
//是否需要展示默认权限提示弹窗,建议使用自己的项目中弹窗样式(默认开启)
.enableDefaultPermissionDialog(false)
.setClickTarget(MainActivity::class.java)
.addPermissionCallback(object : IFloatPermissionCallback
override fun onPermissionResult(granted: Boolean)
//(建议使用 addPermissionCallback 回调中添加自己的弹窗)
Toast.makeText(this@MainActivity, "granted -> $granted", Toast.LENGTH_SHORT)
.show()
if (!granted)
//申请权限
floatHelper?.requestPermission()
)
.build()
2.开启默认弹窗,默认开启(建议开发者根据自己的样式进行)
enableDefaultPermissionDialog(true)
3.悬浮窗权限回调 用户设置该回调后,可以处理自己的回调逻辑,设置该监听后,enableDefaultPermissionDialog 选项失效
addPermissionCallback(object : IFloatPermissionCallback
override fun onPermissionResult(granted: Boolean)
//(建议使用 addPermissionCallback 回调中添加自己的弹窗)
//granted = true 权限通过 granted = false 权限拒绝
if (!granted)
//申请权限
floatHelper?.requestPermission()
)
4.申请悬浮窗权限
floatHelper?.requestPermission()
5.设置点击跳转目标
floatHelper?.setClickTarget(MainActivity::class.java)
6.开启悬浮窗
floatHelper?.show()
7.关闭悬浮窗
floatHelper?.dismiss()
8.关闭悬浮窗并释放资源
override fun onDestroy()
super.onDestroy()
floatHelper?.release()
9.更新悬浮窗控件
private fun initCountDown()
countDownTimer = object : CountDownTimer(Long.MAX_VALUE, 1000)
override fun onTick(millisUntilFinished: Long)
//更新悬浮窗内容(这里根据自己的业务进行扩展)
tvContent.text = getLeftTime(millisUntilFinished)
override fun onFinish()
countDownTimer?.start()
fun getLeftTime(time: Long): String
val formatter = SimpleDateFormat("HH:mm:ss")
formatter.timeZone = TimeZone.getTimeZone("GMT+00:00")
return formatter.format(time)
10.权限申请
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
11.配置
implementation 'com.alonsol:floatserver:1.0.0'
结语
、、 PerfectFloatWindow 做了大量的机型测试,满足绝大部分市场上机型,欢迎大家提供宝贵意见。 兼容性没有问题,如果需要调整悬浮窗动画以及动画,建议修改 floatServer 中的窗口配置,后续会对外提供相关接口
以上是关于Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案的主要内容,如果未能解决你的问题,请参考以下文章