Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案。目前已经适配华为,小米,vivo,oppo,一加,三星,魅族,索尼,LG,IQOO,努比亚,中兴,金立,360,锤子等目前是市面上主流机型包括非主流机型,兼容 4.4 以上包括 Android 11 版本。调用方便,配置少,后续会新增更多功功能,绝对满足你的定制化需求
-
支持悬浮窗内容自定义
-
内部已处理权限校验,以及设置页面跳转
-
支持builder模式,方便动态配置
-
支持悬浮窗手势滑动
-
适配vivo,oppo等第三方权限管理器跳转
-
支持应用内以及应用外全局弹窗
-
权限开启弹窗支持用户自定义
//定义悬浮窗助手
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()
enableDefaultPermissionDialog(true)
addPermissionCallback(object : IFloatPermissionCallback {
override fun onPermissionResult(granted: Boolean) {
//(建议使用addPermissionCallback回调中添加自己的弹窗)
//granted = true 权限通过 granted = false 权限拒绝
if (!granted) {
//申请权限
floatHelper?.requestPermission()
}
}
})
floatHelper?.requestPermission()
floatHelper?.setClickTarget(MainActivity::class.java)
floatHelper?.show()
floatHelper?.dismiss()
override fun onDestroy() {
super.onDestroy()
floatHelper?.release()
}
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)
}
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
implementation 'com.alonsol:floatserver:1.0.0'
、、 PerfectFloatWindow做了大量的机型测试,满足绝大部分市场上机型,欢迎大家提供宝贵意见。 兼容性没有问题,如果需要调整悬浮窗动画以及动画,建议修改floatServer中的窗口配置,后续会对外提供相关接口