FloatWindow - 安卓任意界面悬浮窗神器

FloatWindow - 安卓任意界面悬浮窗神器

【免费下载链接】FloatWindow Andorid 任意界面悬浮窗,实现悬浮窗如此简单 【免费下载链接】FloatWindow 项目地址: 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 任意界面悬浮窗,实现悬浮窗如此简单 【免费下载链接】FloatWindow 项目地址: https://gitcode.com/gh_mirrors/fl/FloatWindow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值