FloatWindow - 安卓任意界面悬浮窗神器
【免费下载链接】FloatWindow Andorid 任意界面悬浮窗,实现悬浮窗如此简单 项目地址: https://gitcode.com/gh_mirrors/fl/FloatWindow
FloatWindow 是一个强大的安卓悬浮窗口库,允许开发者在任何界面上创建可拖动、可定制大小和位置的悬浮窗口。该库提供了丰富的功能和简洁的API接口,特别适用于实现悬浮按钮、浮动工具栏或其他类似功能的应用场景。
项目特性
FloatWindow 具备以下核心特性:
- 支持拖动功能:提供自动贴边等动画效果
- 自动权限处理:内部自动进行权限申请操作
- 界面过滤机制:可自由指定要显示悬浮窗的界面
- 智能后台管理:应用退到后台时,悬浮窗会自动隐藏
- 广泛兼容性:除小米外,Android 4.4~7.0 无需额外权限申请
- 百分比布局:位置及宽高可设置百分比值,轻松适配各分辨率
- 状态监听:支持权限申请结果、位置等状态监听
- 链式调用:API设计简洁清爽,易于使用
集成方式
第一步:添加仓库配置
在工程的 build.gradle 文件中添加 JitPack 仓库:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
第二步:添加依赖
在应用的 build.gradle 文件中添加依赖:
dependencies {
implementation 'com.github.yhaolpz:FloatWindow:1.0.9'
}
第三步:声明权限
在 AndroidManifest.xml 中添加悬浮窗权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
使用指南
基础使用
FloatWindow
.with(getApplicationContext())
.setView(view)
.setWidth(100) //设置控件宽高
.setHeight(Screen.width,0.2f)
.setX(100) //设置控件初始位置
.setY(Screen.height,0.3f)
.setDesktopShow(true) //桌面显示
.setViewStateListener(mViewStateListener) //监听悬浮控件状态改变
.setPermissionListener(mPermissionListener) //监听权限申请结果
.build();
宽高及位置可设像素值或屏幕宽/高百分比,默认宽高为 wrap_content;默认位置为屏幕左上角,x、y 为偏移量。
指定界面显示
.setFilter(true, A_Activity.class, C_Activity.class)
此方法表示 A_Activity、C_Activity 显示悬浮窗,其他界面隐藏。
.setFilter(false, B_Activity.class)
此方法表示 B_Activity 隐藏悬浮窗,其他界面显示。
注意:setFilter 方法参数可以识别该 Activity 的子类。如果 A_Activity、C_Activity 继承自 BaseActivity,可以这样设置:
.setFilter(true, BaseActivity.class)
拖动与动画效果
.setMoveType(MoveType.slide)
.setMoveStyle(500, new AccelerateInterpolator()) //贴边动画时长为500ms,加速插值器
提供 4 种移动类型:
MoveType.slide:可拖动,释放后自动贴边(默认)MoveType.back:可拖动,释放后自动回到原位置MoveType.active:可拖动MoveType.inactive:不可拖动
setMoveStyle 方法可设置动画效果,只在 MoveType.slide 或 MoveType.back 模式下设置此项才有意义。
后续操作控制
//手动控制显示隐藏
FloatWindow.get().show();
FloatWindow.get().hide();
//修改显示位置
FloatWindow.get().updateX(100);
FloatWindow.get().updateY(100);
//销毁悬浮窗
FloatWindow.destroy();
多悬浮窗管理
//创建第一个悬浮窗
FloatWindow
.with(getApplicationContext())
.setView(imageView)
.build();
//创建第二个悬浮窗,需指定唯一tag
FloatWindow
.with(getApplicationContext())
.setView(button)
.setTag("new")
.build();
//操作指定悬浮窗
FloatWindow.get("new").show();
FloatWindow.get("new").hide();
FloatWindow.destroy("new");
实际应用示例
以下是一个完整的应用示例,展示如何在 Application 中初始化悬浮窗:
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageView imageView = new ImageView(getApplicationContext());
imageView.setImageResource(R.drawable.icon);
FloatWindow
.with(getApplicationContext())
.setView(imageView)
.setWidth(Screen.width, 0.2f)
.setHeight(Screen.width, 0.2f)
.setX(Screen.width, 0.8f)
.setY(Screen.height, 0.3f)
.setMoveType(MoveType.slide,100,-100)
.setMoveStyle(500, new BounceInterpolator())
.setFilter(true, A_Activity.class, C_Activity.class)
.setViewStateListener(mViewStateListener)
.setPermissionListener(mPermissionListener)
.setDesktopShow(true)
.build();
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(BaseApplication.this, "onClick", Toast.LENGTH_SHORT).show();
}
});
}
}
技术优势
FloatWindow 采用了链式调用的设计模式,代码整洁易读。库内部自动处理了复杂的权限申请逻辑,支持从 Android 4.4 到最新版本的广泛兼容,包括各大国产手机品牌的特有权限机制。
该库的百分比定位系统极大地简化了多分辨率屏幕的适配工作,开发者只需关注业务逻辑的实现,而无需担心不同设备上的显示差异。
应用场景
FloatWindow 可广泛应用于:
- 即时通讯应用:悬浮聊天窗口或快速回复按钮
- 音乐播放器:悬浮音乐控制面板
- 阅读应用:悬浮工具栏或书签功能
- 游戏辅助:悬浮快捷键或游戏小工具
- 系统工具:悬浮清理、截屏等实用功能
项目结构
FloatWindow/
├── floatwindow/ # 核心库模块
│ └── src/main/java/com/yhao/floatwindow/
│ ├── FloatWindow.java # 主入口类
│ ├── IFloatWindow.java # 接口定义
│ ├── MoveType.java # 移动类型枚举
│ └── Screen.java # 屏幕工具类
└── sample/ # 示例应用
└── src/main/java/com/example/yhao/floatwindow/
├── BaseApplication.java # 应用入口
├── A_Activity.java # 示例Activity
└── B_Activity.java # 示例Activity
FloatWindow 是一个经过精心设计和充分测试的悬浮窗解决方案,为安卓开发者提供了简单易用且功能强大的悬浮窗实现方式。无论是简单的悬浮按钮还是复杂的浮动界面,都能通过这个库轻松实现。
【免费下载链接】FloatWindow Andorid 任意界面悬浮窗,实现悬浮窗如此简单 项目地址: https://gitcode.com/gh_mirrors/fl/FloatWindow
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





