floatUI自定义极度美化悬浮窗

来源:网络   编辑:桑客游  发表时间:2025-09-20  关注度:0  

一个使用JavaScript编写的Android自动化脚本,用于在Android设备上创建并控制一个悬浮窗。这个脚本假设在类似于Auto.js这样的自动化IDE中运行,并且使用了一些特定的API来实现悬浮窗的功能。以下是对代码的详细解释:XyL桑客游项目交流网

  • 构造函数定义:首先定义了一个名为悬浮窗的构造函数。这并不是标准的JavaScript语法,正确的构造函数定义应该是function 悬浮窗() {}。脚本中使用了function 悬浮窗()(),这看起来像是某种自执行函数的形式,但实际上在标准JavaScript中应该是new 悬浮窗()来实例化对象。XyL桑客游项目交流网

  • 创建悬浮窗实例:使用new 悬浮窗()创建了一个悬浮窗类的实例,并将其赋值给变量float。XyL桑客游项目交流网

  • 全局变量:定义了一个全局变量全局_停止,用于控制脚本的停止状态。当这个变量为true时,意味着脚本需要停止执行。XyL桑客游项目交流网

  • 添加create方法:为悬浮窗构造函数的原型添加了一个create方法,该方法用于创建悬浮窗界面。在这个方法中,首先创建了一个floatUI实例,floatUI是用于创建浮窗界面的类。XyL桑客游项目交流网

  • 屏幕高度获取:尝试获取设备的实际屏幕高度。如果获取失败,则使用默认值1920像素。这里使用了context.getResources().getDisplayMetrics().heightPixels来获取屏幕高度。XyL桑客游项目交流网

  • 定义悬浮窗高度:定义了两个高度变量,收起高度和展开高度,分别表示悬浮窗在收起和展开状态下的高度。XyL桑客游项目交流网

  • 加载XML布局:使用fui.loadXML()方法加载一个XML布局字符串,该布局定义了悬浮窗的外观和结构。布局中包含了一个展开按钮和一个垂直排列的功能按钮区,初始状态下功能按钮区是不可见的。XyL桑客游项目交流网

  • 保存UI实例:将创建的floatUI实例赋值给当前悬浮窗实例的ui属性,以便后续的操作可以访问到这个布局。XyL桑客游项目交流网

  • 设置初始位置:使用this.setPos(0, this.screenHeight - 收起高度);将悬浮窗的位置设置在屏幕底部,只露出展开按钮。XyL桑客游项目交流网

  • 获取UI元素:通过fui.findViewById()方法获取XML布局中各个UI元素的引用,比如展开按钮、开始按钮等。XyL桑客游项目交流网

  • 初始化按钮事件:为各个按钮设置点击事件监听器。例如,当点击展开按钮时,会检查下方的功能按钮区是否可见,如果可见则收起,否则展开。开始按钮和停止按钮用于控制全局的停止变量,从而决定脚本的执行状态。设置按钮用于加载并显示主界面。更新按钮目前仅打印“更新”的信息,没有实际的功能实现。关闭按钮则调用this.close()方法关闭悬浮窗。XyL桑客游项目交流网

  • 关闭悬浮窗:定义了一个close方法,调用floatUI对象的close方法关闭悬浮窗。XyL桑客游项目交流网

  • 设置悬浮窗位置:定义了一个setPos方法,用于设置悬浮窗的位置。该方法调用floatUI对象的setPosition方法来实现。XyL桑客游项目交流网

  • 启动悬浮窗:最后,调用float.create()方法来启动悬浮窗,创建并显示界面。
    XyL桑客游项目交流网

这段代码主要是为了在Android设备上创建一个带有展开/收起功能的悬浮窗,并为其各个按钮添加事件监听器,以便用户可以通过点击悬浮窗上的按钮来实现相应的操作。XyL桑客游项目交流网

  1. /*
    XyL桑客游项目交流网

  2.    欢迎使用AiWork安卓自动化IDE
    XyL桑客游项目交流网

  3.    帮助文档: http://help.autoapp.net.cn
    XyL桑客游项目交流网

  4.    官方地址: www.aiwork24.com
    XyL桑客游项目交流网

  5.    qq群: 743723025
    XyL桑客游项目交流网

  6. */
    XyL桑客游项目交流网

  7. // 定义一个名为悬浮窗的构造函数
    XyL桑客游项目交流网

  8. function 悬浮窗() {
    XyL桑客游项目交流网

  9. }
    XyL桑客游项目交流网


  10. XyL桑客游项目交流网

  11. // 创建一个悬浮窗实例
    XyL桑客游项目交流网

  12. var float = new 悬浮窗()
    XyL桑客游项目交流网

  13. // 定义一个全局变量用于控制停止状态
    XyL桑客游项目交流网

  14. var 全局_停止 = false
    XyL桑客游项目交流网


  15. XyL桑客游项目交流网

  16. // 为悬浮窗构造函数的原型添加create方法,用于创建悬浮窗界面
    XyL桑客游项目交流网

  17. 悬浮窗.prototype.create = function () {
    XyL桑客游项目交流网

  18.     // 创建一个floatUI实例,floatUI是一个用于创建浮窗界面的类
    XyL桑客游项目交流网

  19.     var fui = new floatUI()
    XyL桑客游项目交流网

  20.     // 设置默认屏幕高度为1920像素
    XyL桑客游项目交流网

  21.     this.screenHeight = 1920 // 默认值
    XyL桑客游项目交流网

  22.    
    XyL桑客游项目交流网

  23.     // 尝试获取实际屏幕高度
    XyL桑客游项目交流网

  24.     try {
    XyL桑客游项目交流网

  25.         // 使用context对象获取屏幕显示信息,并从中获取屏幕高度像素值
    XyL桑客游项目交流网

  26.         this.screenHeight = context.getResources().getDisplayMetrics().heightPixels;
    XyL桑客游项目交流网

  27.     } catch(e) {
    XyL桑客游项目交流网

  28.         // 如果获取屏幕高度失败,则打印错误信息并使用默认值
    XyL桑客游项目交流网

  29.         printl("获取屏幕高度失败,使用默认值: " + e);
    XyL桑客游项目交流网

  30.     }
    XyL桑客游项目交流网

  31.    
    XyL桑客游项目交流网

  32.     // 定义收起和展开时悬浮窗的高度
    XyL桑客游项目交流网

  33.     var 收起高度 = 45;  // 只显示展开按钮的高度
    XyL桑客游项目交流网

  34.     var 展开高度 = 250; // 完全展开的高度
    XyL桑客游项目交流网

  35.    
    XyL桑客游项目交流网

  36.     // 加载XML布局,创建悬浮窗界面
    XyL桑客游项目交流网

  37.     fui.loadXML(`
    XyL桑客游项目交流网

  38.       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    XyL桑客游项目交流网

  39.          android:layout_width="wrap_content"
    XyL桑客游项目交流网

  40.          android:layout_height="wrap_content"
    XyL桑客游项目交流网

  41.          android:background="#00000000"
    XyL桑客游项目交流网

  42.          android:alpha="0.8"
    XyL桑客游项目交流网

  43.          android:background="@drawable/lin_border_radius"
    XyL桑客游项目交流网

  44.          android:orientation="vertical">
    XyL桑客游项目交流网

  45.          
    XyL桑客游项目交流网

  46.         <!-- 展开按钮 -->
    XyL桑客游项目交流网

  47.         <ImageButton
    XyL桑客游项目交流网

  48.             android:id="button_open"
    XyL桑客游项目交流网

  49.             android:layout_width="35dp"
    XyL桑客游项目交流网

  50.             android:layout_height="35dp"
    XyL桑客游项目交流网

  51.             android:src="资源/展开.png"
    XyL桑客游项目交流网

  52.             android:scaleType="fitXY"
    XyL桑客游项目交流网

  53.             android:background="#00000000"
    XyL桑客游项目交流网

  54.             android:padding="5dp"/>
    XyL桑客游项目交流网

  55.             
    XyL桑客游项目交流网

  56.         <!-- 功能按钮区 -->
    XyL桑客游项目交流网

  57.         <LinearLayout
    XyL桑客游项目交流网

  58.             android:id="content_layout"
    XyL桑客游项目交流网

  59.             android:layout_width="wrap_content"
    XyL桑客游项目交流网

  60.             android:layout_height="wrap_content"
    XyL桑客游项目交流网

  61.             android:orientation="vertical"
    XyL桑客游项目交流网

  62.             android:visibility="gone">
    XyL桑客游项目交流网

  63.             
    XyL桑客游项目交流网

  64.             <ImageButton
    XyL桑客游项目交流网

  65.                 android:id="button_start"
    XyL桑客游项目交流网

  66.                 android:layout_width="35dp"
    XyL桑客游项目交流网

  67.                 android:layout_height="35dp"
    XyL桑客游项目交流网

  68.                 android:src="资源/开始.png"
    XyL桑客游项目交流网

  69.                 android:scaleType="fitXY"
    XyL桑客游项目交流网

  70.                 android:padding="5dp"
    XyL桑客游项目交流网

  71.                 android:background="#00000000"/>
    XyL桑客游项目交流网

  72.                
    XyL桑客游项目交流网

  73.             <ImageButton
    XyL桑客游项目交流网

  74.                 android:id="button_stop"
    XyL桑客游项目交流网

  75.                 android:layout_width="35dp"
    XyL桑客游项目交流网

  76.                 android:layout_height="35dp"
    XyL桑客游项目交流网

  77.                 android:src="资源/停止.png"
    XyL桑客游项目交流网

  78.                 android:scaleType="fitXY"
    XyL桑客游项目交流网

  79.                 android:padding="5dp"
    XyL桑客游项目交流网

  80.                 android:background="#00000000"/>
    XyL桑客游项目交流网

  81.                
    XyL桑客游项目交流网

  82.             <ImageButton
    XyL桑客游项目交流网

  83.                 android:id="button_setting"
    XyL桑客游项目交流网

  84.                 android:layout_width="35dp"
    XyL桑客游项目交流网

  85.                 android:layout_height="35dp"
    XyL桑客游项目交流网

  86.                 android:src="资源/设置.png"
    XyL桑客游项目交流网

  87.                 android:scaleType="fitXY"
    XyL桑客游项目交流网

  88.                 android:padding="5dp"
    XyL桑客游项目交流网

  89.                 android:background="#00000000"/>
    XyL桑客游项目交流网

  90.                
    XyL桑客游项目交流网

  91.             <ImageButton
    XyL桑客游项目交流网

  92.                 android:id="button_updata"
    XyL桑客游项目交流网

  93.                 android:layout_width="35dp"
    XyL桑客游项目交流网

  94.                 android:layout_height="35dp"
    XyL桑客游项目交流网

  95.                 android:src="资源/下载.png"
    XyL桑客游项目交流网

  96.                 android:scaleType="fitXY"
    XyL桑客游项目交流网

  97.                 android:padding="5dp"
    XyL桑客游项目交流网

  98.                 android:background="#00000000"/>
    XyL桑客游项目交流网

  99.                
    XyL桑客游项目交流网

  100.             <ImageButton
    XyL桑客游项目交流网

  101.                 android:id="button_close"
    XyL桑客游项目交流网

  102.                 android:layout_width="35dp"
    XyL桑客游项目交流网

  103.                 android:layout_height="35dp"
    XyL桑客游项目交流网

  104.                 android:src="资源/关闭.png"
    XyL桑客游项目交流网

  105.                 android:scaleType="fitXY"
    XyL桑客游项目交流网

  106.                 android:padding="5dp"
    XyL桑客游项目交流网

  107.                 android:background="#00000000"/>
    XyL桑客游项目交流网

  108.         </LinearLayout>
    XyL桑客游项目交流网

  109.       </LinearLayout>
    XyL桑客游项目交流网

  110.     `);
    XyL桑客游项目交流网

  111.    
    XyL桑客游项目交流网

  112.     // 将创建的floatUI实例赋值给当前悬浮窗实例的ui属性
    XyL桑客游项目交流网

  113.     float.ui = fui;
    XyL桑客游项目交流网

  114.    
    XyL桑客游项目交流网

  115.     // 设置初始位置:屏幕底部只露出展开按钮
    XyL桑客游项目交流网

  116.     this.setPos(0, this.screenHeight - 收起高度);
    XyL桑客游项目交流网

  117.    
    XyL桑客游项目交流网

  118.     // 获取XML布局中的各个UI元素
    XyL桑客游项目交流网

  119.     this.btn_open = fui.findViewById("button_open");
    XyL桑客游项目交流网

  120.     this.content_layout = fui.findViewById("content_layout");
    XyL桑客游项目交流网

  121.     this.btn_start = fui.findViewById("button_start");
    XyL桑客游项目交流网

  122.     this.btn_stop = fui.findViewById("button_stop");
    XyL桑客游项目交流网

  123.     this.btn_setting = fui.findViewById("button_setting");
    XyL桑客游项目交流网

  124.     this.btn_updata = fui.findViewById("button_updata");
    XyL桑客游项目交流网

  125.     this.btn_close = fui.findViewById("button_close");
    XyL桑客游项目交流网

  126.    
    XyL桑客游项目交流网

  127.     // 初始化按钮事件
    XyL桑客游项目交流网

  128.     this.initButtons();
    XyL桑客游项目交流网

  129. };
    XyL桑客游项目交流网


  130. XyL桑客游项目交流网

  131. // 初始化按钮事件的方法,为各个按钮设置点击事件监听器
    XyL桑客游项目交流网

  132. 悬浮窗.prototype.initButtons = function() {
    XyL桑客游项目交流网

  133.     var self = this;
    XyL桑客游项目交流网

  134.    
    XyL桑客游项目交流网

  135.     // 设置展开/收起按钮的点击事件
    XyL桑客游项目交流网

  136.     this.btn_open.setOnClickListener(function() {
    XyL桑客游项目交流网

  137.         if (self.content_layout.getVisibility() === View.VISIBLE) {
    XyL桑客游项目交流网

  138.             // 如果当前是展开状态,则收起
    XyL桑客游项目交流网

  139.             self.setPos(0, self.screenHeight - 44);
    XyL桑客游项目交流网

  140.             sleep(100); // 等待100毫秒
    XyL桑客游项目交流网

  141.             self.content_layout.setVisibility(View.GONE);
    XyL桑客游项目交流网

  142.         } else {
    XyL桑客游项目交流网

  143.             // 如果当前是收起状态,则展开
    XyL桑客游项目交流网

  144.             self.content_layout.setVisibility(View.VISIBLE);
    XyL桑客游项目交流网

  145.             self.setPos(0, self.screenHeight - 250);
    XyL桑客游项目交流网

  146.         }
    XyL桑客游项目交流网

  147.     });
    XyL桑客游项目交流网

  148.    
    XyL桑客游项目交流网

  149.     // 设置开始按钮的点击事件
    XyL桑客游项目交流网

  150.     this.btn_start.setOnClickListener(function() {
    XyL桑客游项目交流网

  151.         printl("启动");
    XyL桑客游项目交流网

  152.         全局_停止 = false;
    XyL桑客游项目交流网

  153.     });
    XyL桑客游项目交流网

  154.    
    XyL桑客游项目交流网

  155.     // 设置停止按钮的点击事件
    XyL桑客游项目交流网

  156.     this.btn_stop.setOnClickListener(function() {
    XyL桑客游项目交流网

  157.         printl("停止");
    XyL桑客游项目交流网

  158.         全局_停止 = true;
    XyL桑客游项目交流网

  159.     });
    XyL桑客游项目交流网

  160.    
    XyL桑客游项目交流网

  161.     // 设置设置按钮的点击事件
    XyL桑客游项目交流网

  162.     this.btn_setting.setOnClickListener(function() {
    XyL桑客游项目交流网

  163.         printl("设置");
    XyL桑客游项目交流网

  164.         // 加载并显示主界面
    XyL桑客游项目交流网

  165.         var win = window.loadUI("主界面.ui");
    XyL桑客游项目交流网

  166.         win.show();
    XyL桑客游项目交流网

  167.     });
    XyL桑客游项目交流网

  168.    
    XyL桑客游项目交流网

  169.     // 设置更新按钮的点击事件
    XyL桑客游项目交流网

  170.     this.btn_updata.setOnClickListener(function() {
    XyL桑客游项目交流网

  171.         printl("更新");
    XyL桑客游项目交流网

  172.     });
    XyL桑客游项目交流网

  173.    
    XyL桑客游项目交流网

  174.     // 设置关闭按钮的点击事件
    XyL桑客游项目交流网

  175.     this.btn_close.setOnClickListener(function() {
    XyL桑客游项目交流网

  176.         printl("关闭");
    XyL桑客游项目交流网

  177.         self.close();
    XyL桑客游项目交流网

  178.     });
    XyL桑客游项目交流网

  179. };
    XyL桑客游项目交流网


  180. XyL桑客游项目交流网

  181. // 定义关闭悬浮窗的方法
    XyL桑客游项目交流网

  182. 悬浮窗.prototype.close = function() {
    XyL桑客游项目交流网

  183.     // 调用floatUI对象的close方法关闭悬浮窗
    XyL桑客游项目交流网

  184.     this.ui.close();
    XyL桑客游项目交流网

  185. };
    XyL桑客游项目交流网


  186. XyL桑客游项目交流网

  187. // 定义设置悬浮窗位置的方法
    XyL桑客游项目交流网

  188. 悬浮窗.prototype.setPos = function(x, y) {
    XyL桑客游项目交流网

  189.     // 调用floatUI对象的setPosition方法设置悬浮窗的位置
    XyL桑客游项目交流网

  190.     this.ui.setPosition(x, y);
    XyL桑客游项目交流网

  191. };
    XyL桑客游项目交流网


  192. XyL桑客游项目交流网

  193. // 启动悬浮窗,调用create方法
    XyL桑客游项目交流网

  194. float.create();
    XyL桑客游项目交流网


  195. XyL桑客游项目交流网

复制代码XyL桑客游项目交流网


XyL桑客游项目交流网


XyL桑客游项目交流网

    所有资料均来自网络,请各位谨慎判断真实性。网盘链接有时效性,请注意资料发布时间,如果链接失效,点我报错

    如有侵权,出示相关证明联系站长删除(微信在下面)。如果本站资源对你有用,感谢开通会员或者打赏!


下一篇:AIWROK软件多线程thread1.runJsFile例子


上一篇:返回列表


小提示:按 回车[Enter]键 返回,按 ←键 返回上一页, 按 →键 进入下一页。

手机访问

本站APP

联系我

加我微信