B2B网络软件

标题: 安卓脚本秒吐司快速显示和关闭的UI提示窗口 [打印本页]

作者: YYPOST群发软件    时间: 7 小时前
标题: 安卓脚本秒吐司快速显示和关闭的UI提示窗口


安卓脚本秒吐司快速显示和关闭的UI提示窗口


安卓脚本秒吐司快速显示和关闭的UI提示窗口 B2B网络软件

安卓脚本秒吐司快速显示和关闭的UI提示窗口 B2B网络软件


  1. /**
  2. * ============================================
  3. * 平台: Android (AIWROK)
  4. * 🍎交流QQ群:711841924(群)
  5. *🍎交流QQ群:528816639  (安卓内测群)
  6. * ============================================
  7. */

  8. // 导入包
  9. importClass(Packages.android.os.Handler);
  10. importClass(Packages.android.os.Looper);

  11. /**
  12. * 秒吐司 - 快速显示和关闭的UI提示窗口(使用floatUI,最上层显示)
  13. * @param {string} message - 提示信息
  14. * @param {number} duration - 显示时长(毫秒),默认3000ms
  15. */
  16. function showQuickToast(message, duration) {
  17.     duration = duration || 3000;
  18.    
  19.     try {
  20.         // 创建 floatUI 实例
  21.         var fui = new floatUI();
  22.         
  23.         // 加载简单的文本布局(红色大字,蓝色背景)
  24.         fui.loadXML(
  25.             '<TextView xmlns:android="http://schemas.android.com/apk/res/android" ' +
  26.             'android:id="toastText" ' +
  27.             'android:layout_width="wrap_content" ' +
  28.             'android:layout_height="wrap_content" ' +
  29.             'android:text="' + message + '" ' +
  30.             'android:textColor="#FF0000" ' +
  31.             'android:textSize="20sp" ' +
  32.             'android:textStyle="bold" ' +
  33.             'android:background="#EE4A90E2" ' +
  34.             'android:padding="20dp" ' +
  35.             'android:gravity="center" />'
  36.         );
  37.         
  38.         // 获取屏幕尺寸
  39.         var screenWidth = screen.getScreenWidth();
  40.         var screenHeight = screen.getScreenHeight();
  41.         
  42.         // 设置位置(屏幕上方居中)
  43.         setTimeout(function() {
  44.             fui.setPosition((screenWidth - 300) / 2, screenHeight / 3);
  45.             
  46.             // 设置为最上层窗口类型
  47.             try {
  48.                 var window = fui.getWindow();
  49.                 if (window) {
  50.                     var params = window.getAttributes();
  51.                     // TYPE_APPLICATION_OVERLAY - Android 8.0+
  52.                     // TYPE_SYSTEM_ALERT - Android 8.0以下
  53.                     params.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
  54.                     // 或者使用更高的层级
  55.                     // params.type = 2038; // TYPE_APPLICATION_OVERLAY 的值
  56.                     window.setAttributes(params);
  57.                 }
  58.             } catch (e) {
  59.                 // 如果设置失败,忽略错误
  60.             }
  61.         }, 50);
  62.         
  63.         // 自动关闭
  64.         setTimeout(function() {
  65.             try {
  66.                 fui.close();
  67.             } catch (e) {
  68.                 // 忽略关闭错误
  69.             }
  70.         }, duration);
  71.         
  72.     } catch (e) {
  73.         printl("❌ 秒吐司显示失败: " + e.message);
  74.         // 降级方案:直接打印
  75.         printl("[提示] " + message);
  76.     }
  77. }

  78. /**
  79. * 在指定位置显示秒吐司(最上层浮动窗)
  80. * @param {string} message - 提示信息
  81. * @param {string} position - 位置:'top'(上), 'bottom'(下), 'left'(左), 'right'(右)
  82. * @param {number} duration - 显示时长(毫秒)
  83. */
  84. function showQuickToastAt(message, position, duration) {
  85.     duration = duration || 3000;
  86.    
  87.     try {
  88.         var fui = new floatUI();
  89.         
  90.         fui.loadXML(
  91.             '<TextView xmlns:android="http://schemas.android.com/apk/res/android" ' +
  92.             'android:id="toastText" ' +
  93.             'android:layout_width="wrap_content" ' +
  94.             'android:layout_height="wrap_content" ' +
  95.             'android:text="' + message + '" ' +
  96.             'android:textColor="#FF0000" ' +
  97.             'android:textSize="20sp" ' +
  98.             'android:textStyle="bold" ' +
  99.             'android:background="#EE4A90E2" ' +
  100.             'android:padding="20dp" ' +
  101.             'android:gravity="center" />'
  102.         );
  103.         
  104.         var screenWidth = screen.getScreenWidth();
  105.         var screenHeight = screen.getScreenHeight();
  106.         var x, y;
  107.         
  108.         // 根据位置设置坐标
  109.         switch(position) {
  110.             case 'top':
  111.                 x = (screenWidth - 300) / 2;
  112.                 y = screenHeight / 4;
  113.                 break;
  114.             case 'bottom':
  115.                 x = (screenWidth - 300) / 2;
  116.                 y = screenHeight * 3 / 4;
  117.                 break;
  118.             case 'left':
  119.                 x = screenWidth / 4;
  120.                 y = (screenHeight - 100) / 2;
  121.                 break;
  122.             case 'right':
  123.                 x = screenWidth * 3 / 4;
  124.                 y = (screenHeight - 100) / 2;
  125.                 break;
  126.             default:
  127.                 x = (screenWidth - 300) / 2;
  128.                 y = screenHeight / 3;
  129.         }
  130.         
  131.         setTimeout(function() {
  132.             fui.setPosition(x, y);
  133.             
  134.             // 设置为最上层窗口类型
  135.             try {
  136.                 var window = fui.getWindow();
  137.                 if (window) {
  138.                     var params = window.getAttributes();
  139.                     params.type = android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
  140.                     window.setAttributes(params);
  141.                 }
  142.             } catch (e) {
  143.                 // 如果设置失败,忽略错误
  144.             }
  145.         }, 50);
  146.         
  147.         setTimeout(function() {
  148.             try {
  149.                 fui.close();
  150.             } catch (e) {
  151.                 // 忽略关闭错误
  152.             }
  153.         }, duration);
  154.         
  155.     } catch (e) {
  156.         printl("❌ 秒吐司显示失败: " + e.message);
  157.         printl("[提示] " + message);
  158.     }
  159. }



  160. /**
  161. * 测试秒吐司功能
  162. */
  163. function testQuickToast() {
  164.     printl("=== 测试秒吐司功能 ===");
  165.    
  166.     // 测试1:基本显示
  167.     showQuickToast("这是秒吐司消息");
  168.     sleep.millisecond(1200);
  169.    
  170.     // 测试2:短时间显示
  171.     showQuickToast("短消息", 600);
  172.     sleep.millisecond(1000);
  173.    
  174.     // 测试3:连续显示
  175.     showQuickToast("第一条");
  176.     sleep.millisecond(300);
  177.     showQuickToast("第二条覆盖第一条");
  178.     sleep.millisecond(1200);
  179.    
  180.     printl("=== 测试完成 ===");
  181. }

  182. /**
  183. * 主函数 - 测试秒吐司功能
  184. */
  185. function main() {
  186.     printl("=== 秒吐司功能演示 ===");
  187.    
  188.     var message = "技术交流QQ群711841924群一,苹果内测群,528816639";
  189.    
  190.     // 演示1:上方显示(3秒)
  191.     printl("1. 上方显示");
  192.     showQuickToastAt(message, 'top', 3000);
  193.     sleep.millisecond(3500);
  194.    
  195.     // 演示2:下方显示(3秒)
  196.     printl("2. 下方显示");
  197.     showQuickToastAt(message, 'bottom', 3000);
  198.     sleep.millisecond(3500);
  199.    
  200.     // 演示3:左侧显示(3秒)
  201.     printl("3. 左侧显示");
  202.     showQuickToastAt(message, 'left', 3000);
  203.     sleep.millisecond(3500);
  204.    
  205.     // 演示4:右侧显示(3秒)
  206.     printl("4. 右侧显示");
  207.     showQuickToastAt(message, 'right', 3000);
  208.     sleep.millisecond(3500);
  209.    
  210.     printl("=== 演示完成 ===");
  211.     printl("\n使用方法:");
  212.     printl("  showQuickToast('消息');                    // 默认3秒,上方显示");
  213.     printl("  showQuickToastAt('消息', 'top', 3000);     // 上方显示");
  214.     printl("  showQuickToastAt('消息', 'bottom', 3000);  // 下方显示");
  215.     printl("  showQuickToastAt('消息', 'left', 3000);    // 左侧显示");
  216.     printl("  showQuickToastAt('消息', 'right', 3000);   // 右侧显示");
  217. }

  218. // 执行主函数
  219. main();
复制代码









欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2