demo.js 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. /**
  2. * 作者: 大柒
  3. * 日期: 20190307
  4. *
  5. */
  6. let floatyWindow = {}
  7. floatyWindow.showWindow = function () {
  8. threads.start(function () {
  9. var window = floaty.rawWindow(
  10. ` <frame id="xx1" h="875px" w="150px" >
  11. <img id="cd_1" layout_gravity="bottom|center" w="100px" h="100px" src="file://./start.png" rotation="-90" />
  12. <img id="cd_2" layout_gravity="bottom|center" w="100px" h="100px" src="file://./resume.png" rotation="-90" />
  13. <img id="cd_3" layout_gravity="bottom|center" w="100px" h="100px" src="file://./back.png" rotation="-90" />
  14. <img id="cd_4" layout_gravity="bottom|center" w="100px" h="100px" src="file://./back.png" rotation="-90" />
  15. </frame>`
  16. );
  17. var window1 = floaty.window(
  18. ` <frame h="150px" w="150px" >
  19. <img id="jia" layout_gravity="bottom|left" w="150px" h="150px" src="file://./logo.png" />
  20. </frame>`
  21. );
  22. //cd1值 菜单的默认加载位置 b,d,e 跟随C值 这个自己摸索
  23. //jiaodu值 加载图标的旋转开始角度
  24. //sleep0值 动画时间 0为无延迟 数值越小 加载越快 反之则慢
  25. //date0_sj值 按下手指不移动时等待多少毫秒关闭悬浮窗
  26. //move0值 手指移动的距离小于该值 则判断为 未移动
  27. //date1_sj 值 手指触摸时间小于该值 则判断为点击
  28. var cd1 = 180;
  29. var jiaodu = 0;
  30. var sleep0 = 1;
  31. var date0_sj = 1000;
  32. var move0 = 60;
  33. var date1_sj = 200;
  34. var y2 = false,
  35. y1 = true;
  36. let cd2 = cd1,
  37. cd3 = cd1,
  38. cd4 = cd1
  39. window.cd_1.setPivotY(cd1)
  40. window.cd_1.setPivotX(cd1)
  41. window.cd_2.setPivotY(cd2)
  42. window.cd_2.setPivotX(cd2)
  43. window.cd_3.setPivotY(cd3)
  44. window.cd_3.setPivotX(cd3)
  45. window.cd_4.setPivotY(cd4)
  46. window.cd_4.setPivotX(cd4)
  47. window.setTouchable(false);
  48. //两个悬浮窗Y值差值
  49. var Y_cz = 725
  50. //两个悬浮窗初始位置
  51. window.setPosition(device.width - 200, device.height - (400 + Y_cz))
  52. window1.setPosition(device.width - 200, device.height - 400)
  53. function jz() {
  54. threads.start(function () {
  55. if (y1) {
  56. y1 = false
  57. if (y2) {
  58. y2 = false
  59. for (let i = 0; i < 100; i++) {
  60. if (i % 2) {
  61. window1.jia.setRotation(jiaodu += 1)
  62. }
  63. window.cd_1.setPivotY(cd1 += 4)
  64. window.cd_1.setPivotX(cd1)
  65. window.cd_2.setPivotY(cd2 += 3)
  66. window.cd_2.setPivotX(cd2)
  67. window.cd_3.setPivotY(cd3 += 2)
  68. window.cd_3.setPivotX(cd3)
  69. window.cd_4.setPivotY(cd4 += 1)
  70. window.cd_4.setPivotX(cd4)
  71. sleep(sleep0)
  72. }
  73. } else {
  74. for (let i = 100; i > 0; i--) {
  75. if (i % 2) {
  76. window1.jia.setRotation(jiaodu -= 1)
  77. }
  78. window.cd_1.setPivotY(cd1 -= 4)
  79. window.cd_1.setPivotX(cd1)
  80. window.cd_2.setPivotY(cd2 -= 3)
  81. window.cd_2.setPivotX(cd2)
  82. window.cd_3.setPivotY(cd3 -= 2)
  83. window.cd_3.setPivotX(cd3)
  84. window.cd_4.setPivotY(cd4 -= 1)
  85. window.cd_4.setPivotX(cd4)
  86. sleep(sleep0)
  87. }
  88. y2 = true;
  89. }
  90. y1 = true
  91. }
  92. })
  93. }
  94. window.cd_1.on("click", () => {
  95. if (y2) {
  96. toastLog("首页")
  97. jz();
  98. window.setTouchable(false);
  99. }
  100. })
  101. window.cd_2.on("click", () => {
  102. if (y2) {
  103. toastLog("设置")
  104. jz();
  105. window.setTouchable(false);
  106. }
  107. })
  108. window.cd_3.on("click", () => {
  109. if (y2) {
  110. toastLog("系统")
  111. jz();
  112. window.setTouchable(false);
  113. }
  114. })
  115. window.cd_4.on("click", () => {
  116. if (y2) {
  117. toastLog("我的")
  118. jz();
  119. window.setTouchable(false);
  120. }
  121. })
  122. var fn = () => {}
  123. var id = setInterval(
  124. fn, 3000
  125. )
  126. //记录按键被按下时的触摸坐标
  127. var x = 0,
  128. y = 0;
  129. //记录按键被按下时的悬浮窗位置
  130. var windowX, windowY;
  131. //记录按键被按下的时间以便判断长按等动作
  132. var downTime;
  133. yd = false;
  134. window1.jia.setOnTouchListener(function (view, event) {
  135. switch (event.getAction()) {
  136. case event.ACTION_DOWN:
  137. x = event.getRawX();
  138. y = event.getRawY();
  139. windowX = window.getX();
  140. windowY = window.getY();
  141. downTime = new Date().getTime();
  142. return true;
  143. case event.ACTION_MOVE:
  144. if (!yd) { //如果移动的距离大于h值 则判断为移动 yd为真
  145. if (Math.abs(event.getRawY() - y) > move0 || Math.abs(event.getRawX() - x) > move0) {
  146. yd = true
  147. }
  148. //如果按下的时间超过g值并且yd值为假判断为长按,退出脚本
  149. if (new Date().getTime() - downTime > date0_sj) {
  150. log(new Date().getTime() - downTime);
  151. exit();
  152. //关闭悬浮窗
  153. //window.close()
  154. //window1.close()
  155. }
  156. } else { //移动手指时调整两个悬浮窗位置
  157. window.setPosition(windowX + (event.getRawX() - x),
  158. windowY + (event.getRawY() - y));
  159. window1.setPosition(windowX + (event.getRawX() - x),
  160. windowY + ((event.getRawY() - y) + Y_cz));
  161. }
  162. return true;
  163. case event.ACTION_UP:
  164. //触摸时间小于 200毫秒 则判断为 点击
  165. if (new Date().getTime() - downTime < date1_sj) {
  166. jz();
  167. //根据Y2值 设置悬浮窗是否可以触摸
  168. if (y2) {
  169. window.setTouchable(false);
  170. } else {
  171. window.setTouchable(true);
  172. }
  173. }
  174. yd = false
  175. return true;
  176. }
  177. return true;
  178. });
  179. })
  180. }
  181. floatyWindow.closeWindow = function(){
  182. floaty.closeAll()
  183. }
  184. floatyWindow.showWindow()