注册 登录
发贴工具
查看: 8|回复: 0
打印 上一主题 下一主题

[24小时收录超级好的网站] floatUI实例秒显示秒关闭吐司功能

[复制链接]

2567

主题

2615

帖子

1万

积分

积分
15578
跳转到指定楼层
楼主
floatUI实例秒显示秒关闭吐司功能
floatUI实例秒显示秒关闭吐司功能 群发软件发帖工具

  1. /*
  2.    floatUI实例秒显示秒关闭吐司功能 v2 - AIWROK平台专用
  3.    实现快速显示和自动关闭的悬浮窗提示效果
  4.    
  5.    功能特点:
  6.    - 毫秒级响应速度
  7.    - 支持自定义显示时长
  8.    - 支持多种样式(成功、警告、错误、信息)
  9.    - 支持可拖动功能
  10.    - 自动关闭
  11. */

  12. // ==================== 核心吐司类 ====================
  13. function QuickToast() {
  14.     this.toast = null;
  15.     this.isShowing = false;
  16.     this.autoCloseTimer = null;
  17. }

  18. // 创建吐司界面
  19. QuickToast.prototype.create = function(message, type, duration, draggable) {
  20.     var self = this;
  21.    
  22.     // 如果已有吐司在显示,先关闭
  23.     if (this.isShowing && this.toast) {
  24.         this.close();
  25.     }
  26.    
  27.     // 创建新的floatUI实例
  28.     this.toast = new floatUI();
  29.    
  30.     // 根据类型设置颜色
  31.     var bgColor, textColor, borderColor;
  32.     switch(type) {
  33.         case 'success':
  34.             bgColor = '#9028a14b';  // 绿色背景
  35.             textColor = '#ffffff';
  36.             borderColor = '#28a14b';
  37.             break;
  38.         case 'warning':
  39.             bgColor = '#90f39c12';  // 橙色背景
  40.             textColor = '#ffffff';
  41.             borderColor = '#f39c12';
  42.             break;
  43.         case 'error':
  44.             bgColor = '#90e74c3c';  // 红色背景
  45.             textColor = '#ffffff';
  46.             borderColor = '#e74c3c';
  47.             break;
  48.         default:
  49.             bgColor = '#903498db';  // 蓝色背景(默认)
  50.             textColor = '#ffffff';
  51.             borderColor = '#3498db';
  52.     }
  53.    
  54.     // 加载简洁的吐司布局(带ID用于拖动)
  55.     this.toast.loadXML(
  56.         '<LinearLayout id="toast_root" orientation="vertical" w="wrap_content" h="wrap_content" ' +
  57.         'background="' + bgColor + '" padding="15" gravity="center">' +
  58.         '  <TextView text="' + message + '" textColor="' + textColor + '" ' +
  59.         'textSize="16" layout_width="wrap_content" layout_height="wrap_content" ' +
  60.         'padding="10 5"/>' +
  61.         '</LinearLayout>'
  62.     );
  63.    
  64.     // 设置初始位置(屏幕中央偏下)
  65.     var screenWidth = screen.getScreenWidth();
  66.     var screenHeight = screen.getScreenHeight();
  67.     var x = (screenWidth - 300) / 2;
  68.     var y = screenHeight * 0.6;
  69.    
  70.     this.toast.setPosition(x, y);
  71.    
  72.     // 如果启用拖动,设置触摸事件
  73.     if (draggable) {
  74.         this.enableDrag();
  75.     }
  76.    
  77.     this.isShowing = true;
  78.    
  79.     // 设置自动关闭定时器
  80.     if (duration && duration > 0) {
  81.         var self = this;
  82.         var dur = duration;
  83.         this.autoCloseTimer = setTimeout(function() {
  84.             self.close();
  85.         }, dur);
  86.     }
  87.    
  88.     return this;
  89. };

  90. // 启用拖动功能
  91. QuickToast.prototype.enableDrag = function() {
  92.     var self = this;
  93.     var lastX = 0;
  94.     var lastY = 0;
  95.     var dragging = false;
  96.    
  97.     try {
  98.         // 获取根视图(通过ID)
  99.         var rootView = this.toast.findViewById('toast_root');
  100.         if (!rootView) {
  101.             printl("⚠️ 无法获取根视图,拖动功能不可用");
  102.             return;
  103.         }
  104.         
  105.         // 定义触摸事件常量(如果View和MotionEvent不存在)
  106.         var ACTION_DOWN = (typeof MotionEvent !== 'undefined') ? MotionEvent.ACTION_DOWN : 0;
  107.         var ACTION_MOVE = (typeof MotionEvent !== 'undefined') ? MotionEvent.ACTION_MOVE : 2;
  108.         var ACTION_UP = (typeof MotionEvent !== 'undefined') ? MotionEvent.ACTION_UP : 1;
  109.         
  110.         printl("✅ 准备启用拖动功能...");
  111.         
  112.         // 设置触摸监听器
  113.         rootView.setOnTouchListener(new android.view.View.OnTouchListener({
  114.             onTouch: function(view, event) {
  115.                 try {
  116.                     var action = event.getAction();
  117.                     
  118.                     if (action === ACTION_DOWN) {
  119.                         dragging = true;
  120.                         lastX = event.getRawX();
  121.                         lastY = event.getRawY();
  122.                         return true;
  123.                     } else if (action === ACTION_MOVE && dragging) {
  124.                         var dx = event.getRawX() - lastX;
  125.                         var dy = event.getRawY() - lastY;
  126.                         
  127.                         // 获取当前位置
  128.                         var currentPos = self.toast.getPosition();
  129.                         var newX = currentPos.x + dx;
  130.                         var newY = currentPos.y + dy;
  131.                         
  132.                         // 边界检查
  133.                         var screenWidth = screen.getScreenWidth();
  134.                         var screenHeight = screen.getScreenHeight();
  135.                         if (newX < 0) newX = 0;
  136.                         if (newY < 0) newY = 0;
  137.                         if (newX > screenWidth - 200) newX = screenWidth - 200;
  138.                         if (newY > screenHeight - 100) newY = screenHeight - 100;
  139.                         
  140.                         // 设置新位置
  141.                         self.toast.setPosition(newX, newY);
  142.                         
  143.                         // 更新上次触摸位置
  144.                         lastX = event.getRawX();
  145.                         lastY = event.getRawY();
  146.                         return true;
  147.                     } else if (action === ACTION_UP) {
  148.                         dragging = false;
  149.                         return true;
  150.                     }
  151.                 } catch(e) {
  152.                     // 静默处理错误
  153.                 }
  154.                 return false;
  155.             }
  156.         }));
  157.         
  158.         printl("✅ 拖动功能已启用");
  159.     } catch(e) {
  160.         printl("⚠️ 启用拖动功能失败: " + e);
  161.     }
  162. };

  163. // 关闭吐司
  164. QuickToast.prototype.close = function() {
  165.     if (this.toast && this.isShowing) {
  166.         var self = this;
  167.         try {
  168.             self.toast.close();
  169.         } catch(e) {
  170.             printl("关闭吐司时出错: " + e);
  171.         }
  172.         self.isShowing = false;
  173.         self.toast = null;
  174.         self.autoCloseTimer = null;
  175.     }
  176. };

  177. // ==================== 便捷函数 ====================

  178. // 显示成功提示
  179. function showSuccess(message, duration) {
  180.     var toast = new QuickToast();
  181.     toast.create(message || '操作成功', 'success', duration || 1500);
  182.     return toast;
  183. }

  184. // 显示警告提示
  185. function showWarning(message, duration) {
  186.     var toast = new QuickToast();
  187.     toast.create(message || '请注意', 'warning', duration || 2000);
  188.     return toast;
  189. }

  190. // 显示错误提示
  191. function showError(message, duration) {
  192.     var toast = new QuickToast();
  193.     toast.create(message || '操作失败', 'error', duration || 2500);
  194.     return toast;
  195. }

  196. // 显示信息提示
  197. function showInfo(message, duration) {
  198.     var toast = new QuickToast();
  199.     toast.create(message || '提示信息', 'info', duration || 1500);
  200.     return toast;
  201. }

  202. // 极速显示(500ms自动关闭)
  203. function quickShow(message) {
  204.     var toast = new QuickToast();
  205.     toast.create(message || '', 'info', 500);
  206.     return toast;
  207. }

  208. // ==================== 使用示例 ====================

  209. printl("========== 秒显示秒关闭吐司功能演示 v2 ==========");
  210. printl("提示:尝试拖动标记为可拖动的吐司\n");

  211. // 示例1:基础可拖动吐司
  212. printl("【示例1】可拖动的基础提示(2秒后自动关闭)");
  213. var t1 = new QuickToast();
  214. t1.create("我可以拖动哦!", 'info', 2000, true);
  215. sleep.second(秒=3);

  216. // 示例2:成功提示
  217. printl("\n【示例2】成功提示");
  218. var t2 = showSuccess("操作成功!");
  219. sleep.second(秒=2);

  220. // 示例3:警告提示
  221. printl("\n【示例3】警告提示");
  222. var t3 = showWarning("请注意安全", 2000);
  223. sleep.second(秒=2.5);

  224. // 示例4:错误提示
  225. printl("\n【示例4】错误提示");
  226. var t4 = showError("网络连接失败");
  227. sleep.second(秒=3);

  228. // 示例5:长文本提示(可拖动)
  229. printl("\n【示例5】长文本可拖动提示");
  230. var t5 = new QuickToast();
  231. t5.create("这是一个很长的提示信息,你可以拖动我到任何位置!试试看吧~", 'warning', 3000, true);
  232. sleep.second(秒=4);

  233. printl("\n========== 演示结束 ==========");
  234. printl("\n使用说明:");
  235. printl("1. quickShow('消息') - 快速显示500ms");
  236. printl("2. showSuccess('消息', 时长ms) - 成功提示");
  237. printl("3. showWarning('消息', 时长ms) - 警告提示");
  238. printl("4. showError('消息', 时长ms) - 错误提示");
  239. printl("5. showInfo('消息', 时长ms) - 信息提示");
  240. printl("6. 自定义:new QuickToast().create('消息', '类型', 时长ms, 是否可拖动)");
  241. printl("\n类型参数:'success', 'warning', 'error', 'info'");
  242. printl("拖动参数:true=可拖动,false或不传=不可拖动");

  243. /*
  244. ================ 功能说明 ================

  245. 这个脚本实现了一个快速显示、自动关闭的可拖动吐司提示系统,专为AIWROK平台设计。它提供了四种预设样式(绿色成功、橙色警告、红色错误、蓝色信息),支持自定义显示时长(建议500-3000毫秒),并可选启用触摸拖动功能让用户用手指自由移动提示框到屏幕任意位置。核心特性包括:毫秒级响应速度、新提示自动覆盖旧提示、自动边界检测防止拖出屏幕、提供便捷的调用函数如showSuccess显示成功提示、showWarning显示警告提示等。适用于自动化脚本中的操作反馈、状态提示、警告提醒、临时通知等场景,让用户体验更加友好和直观。

  246. =========================================
  247. */
复制代码



unto苹果脚本HID多行实例粘帖板示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读了
    采集亚马逊正版群发工具有没有?
    Apr.20旅行X心语今天来说说YYPOST新功能的一个灵活用法,采集亚马逊商品信息,并且获得排名的软件,亚马逊现在越来越多客户做,淘宝的水是越来越清了,以前做电商的客户,现在都转战到外国,最赚钱的要数一些客户往亚马逊里堆了吧,拿我这个YYPOST的客户,最多的是采集,分析排名,刷价格,刷数量,改价,刷访问量等等技术

    企业发展B2B网站有什么东东软件可以发呢
    标题企业发展网B2B软件,现在虽然B2B网站收录不错,可愁的是心急的人们,他们太想一口吃撑胖子了,发帖宣传虽然不能像佛系那样淡定,但也不能像跑火车那般急躁对待,自己内容不收录,完全是自己操作内容问题,可以参考一下别人的内容是怎么弄的,然后自己要试着转变,而且收录这个内容,常常会变化的,不是一种规则就吃到老

    搜房天下房聊软件哪一个好呢
    本帖最后由 发帖软件 于 2019-5-22 16:15 编辑 2搜房天下群发房聊信息软件,开始本来打算做58同城的,但发一个就要一次点触验证码,这就让人没有感觉到存在的价值了吧,都是卖二手房和新房的搜房天下倒是可以发即时聊天信息,也没有发现他这个网站有啥子限制,登陆一个搜房天下账号,然后采集回来分类列表的网址,然后就一

    大家坛有没有好用的群发工具下载呢
    当你的笑容给我礼貌的招呼,大家坛全自动发帖软件,宣传推广是一场持久战,总是有一些人把软件用了一天,或是几个小时,就觉得自己付出太多了,那加进来的粉丝,或是流量,应该是和宣传多少成正比的,其实没有这么便宜的事,就像很多阅读量超过一百万的视频,或是电影,真正会在屏幕打赏的人不会超过三千,真正大额打赏给主

    群发正版软件中国塑料网
    中国塑料网群发软件YYPOST脚本下载地址,这个网站会有一个很奇怪的问题就是你在首页登陆无半个验证码,但在登陆网址登陆就会有一个验证码,所以我们灵活一些,在首页登陆就不用输入验证码了哈。网站秒收录比较高,但发的都是五金和建筑行业,先前有很多人都是发土建工程的大公司操作的,现在这个网站专为那个行业诞生的吧。

    OpenStreetMap网站正版2019年发帖工具下载
    本帖最后由 发帖软件 于 2019-5-21 11:13 编辑 OpenStreetMap网站全自动群发,OpenStreetMapOpenStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。有的人编辑地图然后等收录,有的人发日志等收录,我们这里也是利用地图日志做为宣传的目标,简单的脚本理

    搜房天下全自动收短信全自动识别验证码注册账号软件
    房天下自动注册机,这个脚本是前几天发房聊的脚本廷伸品种,这个脚本能做到自动注册账号,自动保存账号,自动发房聊的效果,不过今天我们主要说一说怎么注册账号写脚本吧,这个搜房天天下的账号,可以发提问,可以发房聊,发论坛,发博客,还有发个人中心页都是有秒收的效果的,这样就省去了去买号,去乱花钱的效果了吧,而

    企业邮箱安卓端有什么APP软件可以发的呢
    请输入标题企业邮箱安卓发发送邮箱脚本,这个脚本是利用企业邮箱进行群发的,全程是一种模拟手工操作的过程,所以封号是很少的,而且企业邮箱群发到普通QQ邮箱不容易进垃圾箱中的,所以这个脚本也是这样的原理,不过最好是利用一些多开器,登陆多点的QQ邮箱账号会比较流畅一些,然后用软件一个一个的切换APP进行群发邮件会

    头条留评论软件有没有好用的呢?
    今天整一个今日头条留言软件,对于留言YYPOST是优势是比较大的存在,因为他往往专注一些下拉定位的优点,像今日头条这样,还是需要一些特殊下拉定位的,因为他新闻有长有短,有图有视频的,所以综合起来定位是比较难的,如果用POST也不是很轻松可以破解他的加密参数。这个脚本也是有一个不好的地方就是换号会比较麻烦,您电

    单网页生成神器
    最近新技术,网页生成机占领了整个网络的半壁江山,效果很疯狂,虽然不知道能持续多久,作为开发软件的领头者,一直在找收录的方法,一直在努力创新着,一直被人模仿,却从没有被超越过,这个网页生成机,已经出来有一段时间了,一直没有拿出来分享,醉过醉过,它是利用的一些小小收录漏洞整的,您最好用一些老站域名,进行

关闭
快速回复 返回列表 返回顶部
本站自动发贴软件,是现在最流行的做脚本软件,这种发贴工具,不但发贴收录快,而且抢占好的先机,完全自由编辑,实现针对性群发模拟操作,软件可以顶贴,也可以发贴,可以兼容支持Discuz、PHPWind、Dvbbs三大主流论坛,有手机验证码收件,邮件收发的功能,支持验证码识别,注册问题识别,多线程任务,自动上传头像,自动激活注册邮件,兼容防注册插件,本站软件原创正版,更新效率最快的原创软件。 『网络推广软件』『自动发帖软件』『 自动发帖