AppFloaty - 应用级悬浮窗

  • 更新时间:2025-12-13 11:58:45

应用级悬浮窗

通过$floaty.newApp(xml|path)创建,该悬浮窗不会覆盖标题栏和导航栏,是一个比较友好的悬浮窗。

const {WindowManager.LayoutParams} params;

悬浮窗参数

类型:{android.view.WindowManager.LayoutParams}

  • 版本 : 1.3.5

const {WindowManager} manager;

悬浮窗管理器

类型:{android.view.WindowManager}

  • 版本 : 1.3.5

监听屏幕旋转(回调)

设置屏幕旋转监听

  • 参数 : 回调 {(屏幕信息)=>{}} 屏幕旋转时回调

  • 版本 : 1.7.0

定义 悬浮窗 = $悬浮窗.新建应用级("./floaty/main.xml");
悬浮窗.监听屏幕旋转((屏幕信息)=>{
    //屏幕旋转时回调
    悬浮窗.全屏();//设置成全屏
});

找控件(标识)

获取控件

  • 参数 : 标识 {字符串} 控件找控件

  • 返回 : {XView} 组件

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
        <按钮 标识="关闭按钮" 文本"关闭"/>
    </线性布局>
</界面>
`);
//获取按钮控件
定义 关闭按钮 = 悬浮窗.找控件("关闭按钮");
//绑定点击事件
关闭按钮.点击事件(()=>{
    //关闭悬浮窗
    悬浮窗.关闭();
});

全屏(是否全屏)

是否全屏显示

此函数会将悬浮窗的尺寸设置成全屏大小,之后刷新悬浮窗界面

当全屏(true)的时候悬浮窗将位置设置为(0,0)并且设置宽高为最大后全屏显示;

当全屏(false)的时候悬浮窗将位置设置为上次位置,并且宽高设置为自适应,之后显示。

  • 参数 : 是否全屏 {布尔值} 是否全屏

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//全屏显示
悬浮窗.全屏();

触摸(是否可触摸)

设置是否可触摸

此函数会配置悬浮窗的参数是否可以触摸,之后刷新悬浮窗界面

  • 参数 : 是否可触摸 {布尔值} 是否可触摸

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置不可触摸
悬浮窗.触摸();

设置x(x)

设置X坐标

此函数会设置悬浮窗x坐标参数,之后刷新悬浮窗界面

  • 参数 : x {整数} X坐标

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置X坐标
悬浮窗.设置x(100);

设置y(y)

设置Y坐标

此函数会设置悬浮窗y坐标参数,之后刷新悬浮窗界面

  • 参数 : y {整数} Y坐标

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置Y坐标
悬浮窗.设置y(100);

设置位置(x, y)

设置XY坐标

此函数会设置悬浮窗xy坐标参数,之后刷新悬浮窗界面

  • 参数 : x {整数} X坐标

  • 参数 : y {整数} Y坐标

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置XY坐标
悬浮窗.设置位置(100, 100);

设置宽度(宽度)

设置宽度

此函数会设置悬浮窗宽度参数,之后刷新悬浮窗界面

  • 参数 : 宽度 {整数} 宽度

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置宽度
悬浮窗.设置宽度(100);

设置高度(高度)

设置高度

此函数会设置悬浮窗高度参数,之后刷新悬浮窗界面

  • 参数 : 高度 {整数} 高度

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置高度
悬浮窗.设置高度(100);

设置宽高(宽度, 高度)

设置宽高

此函数会设置悬浮窗宽高参数,之后刷新悬浮窗界面

  • 参数 : 宽度 {整数} 宽度

  • 参数 : 高度 {整数} 高度

  • 返回 : {SysFloaty} 自己

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//设置宽高
悬浮窗.设置宽高(100, 100);

断言()

断言

判断悬浮窗是否处于可此操作状态,不可操作的状态情况如下:

1.view为空或被移除

2.悬浮窗被关闭

  • 返回 : {布尔值} 是否可操作

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//断言
如果(悬浮窗.断言()){
    //可以操作
}否则{
    //悬浮窗已经关闭啦,不能操作了
}

关闭()

关闭悬浮窗

  • 版本 : 1.7.0

//创建悬浮窗对象
定义 悬浮窗 = $悬浮窗.新建应用级(`
<界面>
    <线性布局 宽="最大" 高="最大">
        <!--省略组件-->
    </线性布局>
</界面>
`);
//关闭悬浮窗
悬浮窗.关闭();