• Auto.js中的悬浮窗


    悬浮窗一般用来显示当前脚本运行的状态和信息,是最为重要的人机交互方式。悬浮窗在脚本停止运行时会自动关闭,因此,要保持悬浮窗不被关闭,需要用一个空的setInterval来实现。

    setInterval(()=>{}, 1000);

    1. 创建和关闭悬浮窗

    1.1. 创建并显示一个悬浮窗;

    1. var obj = floaty.window(
    2. <frame gravity="center">
    3. <text id="text">悬浮文字text>
    4. frame>
    5. );
    6. // 2秒后关闭窗口
    7. setTimeout(()=>{
    8. obj.close();
    9. }, 2000);

    上面的代码中会返回一个FloatyWindow对象。由于脚本运行的线程不是UI线程,而所有对控件的修改操作需要在UI线程执行,此时需要用ui.run(function(){})方法来调用。

    1. ui.run(function(){
    2. // obj对应窗口返回的对象
    3. // text对应节点的ID
    4. obj.text.setText("文本");
    5. });

    1.2. 创建并显示一个原始悬浮窗;

    1. var obj = floaty.rawWindow(
    2. <frame gravity="center">
    3. <text id="text">悬浮文字text>
    4. frame>
    5. );
    6. // 设置悬浮窗的位置
    7. obj.setPosition(500, 500);
    8. setTimeout(()=>{
    9. // 2秒后关闭窗口
    10. obj.close();
    11. }, 2000);

    返回一个FloatyRawWindow对象。与floaty.window()函数产生悬浮窗不同的是:该悬浮窗不会增加任何额外功能(调整大小、位置按钮),可以根据自己需要编写任何布局。另外该悬浮窗支持完全全屏,可以覆盖状态栏,因此可以做护眼模式之类的应用。

    1.3. 关闭所有悬浮窗

    floaty.closeAll()


    2. FloatyWindow对象

    悬浮窗对象,可通过ID获取悬浮窗界面上的控件。例如通过FloatyWindow创建了悬浮窗window,window上一个控件的id为input, 那么window.input 即可获取该控件。

    FloatyWindow对象常见的方法如下:

    2.1. 是否启用悬浮窗调整;

    FloatyWindow.setAdjustEnabled(enabled)

    enabled的值为ture表示启用,false为不启用。

    2.2. 设置悬浮窗位置;

    FloatyWindow.setPosition(x,y) 

    2.3. 获取悬浮窗位置的X坐标;

    FloatyWindow.getX()

    2.4. 获取悬浮窗位置的Y坐标;

    FloatyWindow.getY()

    2.5. 设置悬浮窗宽高;

    FloatyWindow.setSize(width,height)

    2.6. 获取悬浮窗宽度;

    FloatyWindow.getWidth()

    2.7. 获取悬浮窗高度;

    FloatyWindow.getHeight()

    2.8. 关闭悬浮窗;

    FloatyWindow.close()

    如果悬浮窗已经是关闭状态,将不执行任何操作,被关闭后的悬浮窗不能再显示。

    2.9. 悬浮窗被关闭时自动结束脚本运行;

    FloatyWindow.exitOnClose()

    3. FloatyRawWindow对象

    原始悬浮窗对象,可通过ID获取悬浮窗界面上的控件。例如通过FloatyRawWindow创建了悬浮窗window,window上一个控件的id为input, 那么window.input 即可获取该控件。

    FloatyRawWindow对象常见的方法如下:

    3.1. 设置是否可以触摸;

    FloatyRawWindow.setTouchable(touchable)

    touchable的值为ture表示可触摸悬浮窗 ,false表示不可触摸悬浮窗。

    1. var obj = floaty.rawWindow(
    2. <frame gravity="center" bg="#44ffcc00"/>
    3. );
    4. obj.setSize(-1, -1);
    5. obj.setTouchable(true);
    6. setTimeout(()=>{
    7. obj.close();
    8. }, 4000);

    3.2. 设置悬浮窗位置;

    FloatyRawWindow.setPosition(x, y)

    3.3. 获取悬浮窗位置的X坐标;

    FloatyRawWindow.getX()

    3.4. 获取悬浮窗位置的Y坐标;

    FloatyRawWindow.getY()

    3.5. 设置悬浮窗宽高;

    FloatyRawWindow.setSize(width, height)

    如果设置为-1,则为占满全屏。

    3.6. 获取悬浮窗宽度;

    FloatyRawWindow.getWidth()

    3.7. 获取悬浮窗高度;

    FloatyRawWindow.getHeight()

    3.8. 关闭悬浮窗;

    FloatyRawWindow.close()

    如果悬浮窗已经是关闭状态,则此函数将不执行任何操作,被关闭后的悬浮窗不能再显示。

    3.9. 悬浮窗被关闭时自动结束脚本运行;

    FloatyRawWindow.exitOnClose()

  • 相关阅读:
    Java基础进阶多线程-线程安全和synchronized关键字
    关于torch.cat()与torch.stack()
    AJAX基础语法
    RDD的分区、依赖关系、机制
    2. 特征工程
    移动应用买量越来越难,APP增长的新机遇在哪里?
    C语言:多进程的详细介绍
    Flume在大数据集群下的配置以及监控工具Ganglia的部署安装
    高斯分布-最大似然估计公式白板推导
    Android 13.0 SystemUI下拉状态栏时间格式的修改(一)
  • 原文地址:https://blog.csdn.net/weixin_40629244/article/details/126246933