├── source_codes
├── out-dated
│ └── placeholder
└── AutoNightsToolBox.js
├── README.md
└── src
└── assets
├── fabs
├── fab-64x64.png
├── fab-128x128.png
├── fab-256x256.png
└── fab-512x512.png
├── icons
├── icon-72x72.png
├── icon-96x96.png
├── icon-128x128.png
├── icon-144x144.png
├── icon-152x152.png
├── icon-192x192.png
├── icon-384x384.png
└── icon-512x512.png
└── imgs
├── alipay_qrcode.png
└── wechat_qrcode.png
/source_codes/out-dated/placeholder:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AutonightsToolbox
2 | 自动方舟的工具版
3 |
--------------------------------------------------------------------------------
/src/assets/fabs/fab-64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/fabs/fab-64x64.png
--------------------------------------------------------------------------------
/src/assets/fabs/fab-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/fabs/fab-128x128.png
--------------------------------------------------------------------------------
/src/assets/fabs/fab-256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/fabs/fab-256x256.png
--------------------------------------------------------------------------------
/src/assets/fabs/fab-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/fabs/fab-512x512.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/src/assets/imgs/alipay_qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/imgs/alipay_qrcode.png
--------------------------------------------------------------------------------
/src/assets/imgs/wechat_qrcode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ParticleG/AutonightsToolbox/HEAD/src/assets/imgs/wechat_qrcode.png
--------------------------------------------------------------------------------
/source_codes/AutoNightsToolBox.js:
--------------------------------------------------------------------------------
1 | //version:1.0.0
2 | //platform version:7.0.4-1
3 |
4 | //程序初始化器
5 | initializer();
6 |
7 | //导入安卓原生类
8 | importClass(java.lang.Runnable);
9 | importClass(android.animation.ObjectAnimator)
10 | importClass(android.animation.PropertyValuesHolder)
11 | importClass(android.animation.ValueAnimator)
12 | importClass(android.animation.AnimatorSet)
13 | importClass(android.view.animation.AccelerateInterpolator)
14 | importClass(android.view.animation.TranslateAnimation)
15 | importClass(android.animation.ObjectAnimator)
16 | importClass(android.animation.TimeInterpolator)
17 | importClass(android.os.Bundle)
18 | importClass(android.view.View)
19 | importClass(android.view.Window)
20 | importClass(android.view.animation.AccelerateDecelerateInterpolator)
21 | importClass(android.view.animation.AccelerateInterpolator)
22 | importClass(android.view.animation.AnticipateInterpolator)
23 | importClass(android.view.animation.AnticipateOvershootInterpolator)
24 | importClass(android.view.animation.BounceInterpolator)
25 | importClass(android.view.animation.CycleInterpolator)
26 | importClass(android.view.animation.DecelerateInterpolator)
27 | importClass(android.view.animation.LinearInterpolator)
28 | importClass(android.view.animation.OvershootInterpolator)
29 | importClass(android.view.animation.PathInterpolator)
30 | importClass(android.widget.Button)
31 | importClass(android.widget.ImageView)
32 | importClass(android.widget.TextView)
33 |
34 | //全局变量
35 | var LocalData = storages.create("AutoNightsToolBoxLocal");
36 | var logo_switch = false;//悬浮窗的开启关闭检测
37 | var logo_buys = false;//开启和关闭时占用状态 防止多次点击触发
38 | var running_action;//正在运行的操作线程
39 | var running_floating_window;//正在运行的悬浮窗
40 | var time_0, time_1, time_3//定时器 点击退出悬浮窗时定时器关闭
41 | var x = 0,y = 0;//记录按键被按下时的触摸坐标
42 | var windowX, windowY; G_Y = 0//记录按键被按下时的悬浮窗位置
43 | var downTime; yd = false;//记录按键被按下的时间以便判断长按等动作
44 |
45 | //可修改参数
46 | var logo_ms = 200;//动画播放时间
47 | var DHK_ms = 200;//对话框动画播放时间
48 | var accent_color = LocalData.get("AccentColor");//强调色
49 | var alternative_color = "#BDBDBD"; //副色
50 |
51 |
52 | /**
53 | * 需要三个悬浮窗一起协作达到Auto.js悬浮窗效果
54 | * win 子菜单悬浮窗 处理子菜单选项点击事件
55 | * win_1 主悬浮按钮
56 | * win_2 悬浮按钮动画替身,只有在手指移动主按钮的时候才会被触发
57 | * 触发时,替身Y值会跟主按钮Y值绑定一起,手指弹起时代替主按钮显示跳动的小球动画
58 | */
59 | var win = floaty.rawWindow(
60 | //子菜单悬浮窗
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | )
92 | win.setTouchable(false);//设置子菜单不接收触摸消息
93 |
94 | var win_1 = floaty.rawWindow(
95 | //悬浮按钮
96 |
97 |
98 |
99 |
100 | );
101 | win_1.setPosition(-21, device.height * 0.1)//悬浮按钮定位
102 |
103 | var win_2 = floaty.rawWindow(
104 | //悬浮按钮 弹性替身
105 |
106 |
107 |
108 | );
109 | win_2.setTouchable(false);//设置弹性替身不接收触摸消息
110 |
111 | /**
112 | * 脚本广播事件
113 | */
114 | var XY = [], XY1 = [], TT = [], TT1 = [], img_dp = {}, dpZ = 0, logo_right = 0, dpB = 0, dp_H = 0
115 | events.broadcast.on("定时器关闭", function (X) { clearInterval(X) })
116 | events.broadcast.on("悬浮开关", function (X) {
117 | ui.run(function () {
118 | switch (X) {
119 | case true:
120 | win.id_logo.setVisibility(0)
121 | win.setTouchable(true);
122 | logo_switch = true
123 | break;
124 | case false:
125 | win.id_logo.setVisibility(4)
126 | win.setTouchable(false);
127 | logo_switch = false
128 | }
129 | })
130 |
131 | });
132 |
133 | events.broadcast.on("悬浮显示", function (X1) {
134 | ui.run(function () {
135 | win_2.logo.attr("alpha", "0");
136 | win_1.logo.attr("alpha", "0.4");
137 | })
138 | });
139 |
140 | var terid = setInterval(() => { //等待悬浮窗初始化
141 | //log("13")
142 | if (TT.length == 0 && win.logo.getY() > 0) {// 不知道界面初始化的事件 只能放到这里将就下了
143 | ui.run(function () {
144 | TT = [win.logo.getX(), win.logo.getY()], TT1 = [win.logo_1.getLeft(), win.logo_1.getTop()], anX = [], anY = []// 获取logo 绝对坐标
145 | XY = [
146 | [win.id_0, TT[0] - win.id_0.getX(), TT[1] - win.id_0.getY()],// 获取子菜单 视图和子菜单与logo绝对坐标差值
147 | [win.id_1, TT[0] - win.id_1.getX(), TT[1] - win.id_1.getY()],
148 | [win.id_2, TT[0] - win.id_2.getX(), TT[1] - win.id_2.getY()],
149 | [win.id_3, TT[0] - win.id_3.getX(), TT[1] - win.id_3.getY()],
150 | [win.id_4, TT[0] - win.id_4.getX(), TT[1] - win.id_4.getY()]]
151 | //log("上下Y值差值:" + XY[0][2] + "DP值:" + (XY[0][2] / 83))
152 | dpZ = XY[0][2] / 83
153 | dpB = dpZ * 22
154 | XY1 = [
155 | [parseInt(dpZ * 41), TT1[0] - win.id_0.getLeft(), TT1[1] - win.id_0.getTop()],
156 | [parseInt(dpZ * -65), TT1[0] - win.id_1.getLeft(), TT1[1] - win.id_1.getTop()],
157 | [parseInt(dpZ * -106), TT1[0] - win.id_2.getLeft(), TT1[1] - win.id_2.getTop()],
158 | [parseInt(dpZ * -65), TT1[0] - win.id_3.getLeft(), TT1[1] - win.id_3.getTop()],
159 | [parseInt(dpZ * 41), TT1[0] - win.id_4.getLeft(), TT1[1] - win.id_4.getTop()]]
160 | img_dp.h_b = XY[0][2]//两个悬浮窗Y差值
161 | img_dp.w = parseInt(dpZ * 9)//计算logo左边隐藏时 X值
162 | img_dp.ww = parseInt(dpZ * (44 - 9))//计算logo右边隐藏时 X值
163 | logo_right = win.id_2.getX() - parseInt(dpZ * 22)
164 | win_1.setPosition(0 - img_dp.w, device.height * 0.1)
165 | win.id_logo.setVisibility(4)
166 | win.id_logo.attr("alpha", "1")
167 | events.broadcast.emit("定时器关闭", terid)
168 | })
169 |
170 | }
171 | }, 100)
172 | time_0 = setInterval(() => {
173 | }, 1000)
174 | win_1.logo.setOnTouchListener(function (view, event) {
175 | if (logo_buys) { return false}
176 | //event.getAction())
177 | switch (event.getAction()) {
178 | case event.ACTION_DOWN:
179 | x = event.getRawX();
180 | y = event.getRawY();
181 | windowX = win_1.getX();
182 | windowY = win_1.getY();
183 | downTime = new Date().getTime();
184 | return true;
185 | case event.ACTION_MOVE:
186 | if (logo_switch) { return true; }
187 | if (!yd) {//如果移动的距离大于h值 则判断为移动 yd为真
188 | if (Math.abs(event.getRawY() - y) > 30 || Math.abs(event.getRawX() - x) > 30) { win_1.logo.attr("alpha", "1"); yd = true }
189 | } else {//移动手指时调整两个悬浮窗位置
190 | win_1.setPosition(windowX + (event.getRawX() - x),//悬浮按钮定位
191 | windowY + (event.getRawY() - y));
192 | win_2.setPosition(0, windowY + (event.getRawY() - y));//弹性 替身定位(隐藏看不到的,松开手指才会出现)
193 | }
194 | return true;
195 | case event.ACTION_UP: //手指弹起
196 | //触摸时间小于 200毫秒 并且移动距离小于30 则判断为 点击
197 | if (logo_buys) { return false;}//如果在动画正在播放中则退出事件 无操作
198 | if (Math.abs(event.getRawY() - y) < 30 && Math.abs(event.getRawX() - x) < 30) {
199 | //toastLog("点击弹起")
200 | if (logo_switch) {
201 | logo_switch = false
202 | win_1.logo.attr("alpha", "0.4")
203 | }
204 | else
205 | {
206 | //log("左边")
207 | win.setPosition(windowX + (event.getRawX() - x),
208 | windowY + (event.getRawY() - y) - img_dp.h_b);
209 | win.id_logo.setVisibility(0)
210 | logo_switch = true
211 | win_1.logo.attr("alpha", "0.9")
212 | }
213 | animationCreator()
214 | } else if (!logo_switch) {
215 | //toastLog("移动弹起")
216 | G_Y = windowY + (event.getRawY() - y)
217 | win_1.logo.attr("alpha", "0.4")
218 | //toastLog("左边")
219 | animator = ObjectAnimator.ofFloat(win_2.logo, "translationX", windowX + (event.getRawX() - x), 0 - img_dp.w);
220 | mTimeInterpolator = new BounceInterpolator();
221 | animator.setInterpolator(mTimeInterpolator);
222 | animator.setDuration(300);
223 | win_2.logo.attr("alpha", "0.4")//animationCreator 替身上场
224 | win_1.logo.attr("alpha", "0");//悬浮按钮隐藏
225 | win_1.setPosition(0 - img_dp.w, G_Y)//悬浮按钮移动到终点位置等待替身动画结束
226 | animator.start();
227 |
228 | threads.start(function () {//动画的结束事件一直没有明白 只能拿线程代替了
229 | logo_buys = true
230 | sleep(logo_ms + 100)
231 | events.broadcast.emit("悬浮显示", 0)
232 |
233 | logo_buys = false
234 | });
235 | }
236 | yd = false
237 | return true;
238 | }
239 | return true;
240 | });
241 |
242 | win.fab_profile.on("click", () => { //禁用
243 | toastLog("Disabled")
244 | img_down();
245 | })
246 | win.fab_action_menu.on("click", () => {
247 | if(running_action == null){
248 | img_down();
249 | actionMenu();
250 | }else{
251 | toast("有悬浮窗正在运行,请先关闭悬浮窗!");
252 | }
253 | })
254 |
255 | win.fab_stop_action.on("click", () => {
256 | if(running_action == "Floaty"){
257 | img_down();
258 | toast("悬浮窗已关闭!");
259 | running_floating_window.close();
260 | device.cancelKeepingAwake();
261 | running_action = null;
262 | }
263 | else
264 | {
265 | toast("没有悬浮窗口正在运行!");
266 | }
267 | })
268 |
269 | win.fab_settings_menu.on("click", () => {
270 | img_down();
271 | settingsMenu();
272 | })
273 |
274 | win.fab_misc_menu.on("click", () => {
275 | img_down();
276 | miscMenu();
277 | })
278 |
279 | function actionMenu()
280 | {
281 | let menu = ui.inflate(
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 | );
304 | var menu_dialog = dialogs.build({
305 | customView: menu,
306 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
307 | autoDismiss: false, //按下按钮时是否自动结束对话框
308 | canceledOnTouchOutside:true //点击对话框范围外时是否结束对话框
309 | }).show();
310 |
311 | menu.hr_helper.on("click", () => {
312 | menu_dialog.dismiss();
313 | isPlaying();
314 | running_action = "Floaty";
315 | HRHelper();
316 | })
317 | menu.lvlup_calc.on("click", () => {
318 | menu_dialog.dismiss();
319 | isPlaying();
320 | running_action = "Floaty";
321 | LvlUpCalc();
322 | })
323 | menu.material_calc.on("click", () => {
324 | menu_dialog.dismiss();
325 | isPlaying();
326 | running_action = "Floaty";
327 | MaterialCalc();
328 | })
329 | }
330 | function HRHelper(){ //公开招募助手主函数
331 | var tags_array = baiduOCR();
332 | var tags = tags_array[0].words + "+" + tags_array[1].words + "+" + tags_array[2].words + "+" + tags_array[3].words + "+" + tags_array[4].words;
333 | var helper_url = "https://aktools.graueneko.xyz/hr?hidenav=&tags=" + tags + "&hidetags=";
334 | var helper_window = floaty.rawWindow(
335 |
336 |
337 |
338 |
339 |
340 | );
341 | running_floating_window = helper_window;
342 | helper_window.webview.loadUrl(helper_url);
343 | helper_window.setSize(Math.floor(device.height*0.36), device.width);
344 | helper_window.setPosition(device.height - Math.floor(device.height*0.36) - 80, 0);
345 | helper_window.setTouchable(true);
346 | helper_window.button_minimize.click(function(){
347 | helper_window.webview.setVisibility(4);
348 | helper_window.button_minimize.setVisibility(4);
349 | helper_window.button_maximize.setVisibility(0);
350 | helper_window.setPosition(device.height - 50 - 80, 0);
351 | });
352 | helper_window.button_maximize.click(function(){
353 | helper_window.webview.setVisibility(0);
354 | helper_window.button_minimize.setVisibility(0);
355 | helper_window.button_maximize.setVisibility(4);
356 | helper_window.setPosition(device.height - Math.floor(device.height*0.36) - 80, 0);
357 | });
358 |
359 | }
360 | function LvlUpCalc(){ //公开招募助手主函数
361 | var helper_url = "https://aktools.graueneko.xyz/lvlup?hidenav=";
362 | var helper_window = floaty.rawWindow(
363 |
364 |
365 |
366 |
367 |
368 | );
369 | running_floating_window = helper_window;
370 | helper_window.webview.loadUrl(helper_url);
371 | helper_window.setSize(Math.floor(device.height*0.36), device.width);
372 | helper_window.setPosition(device.height - Math.floor(device.height*0.36) - 80, 0);
373 | helper_window.setTouchable(true);
374 | helper_window.button_minimize.click(function(){
375 | helper_window.webview.setVisibility(4);
376 | helper_window.button_minimize.setVisibility(4);
377 | helper_window.button_maximize.setVisibility(0);
378 | helper_window.setPosition(device.height - 50 - 80, 0);
379 | });
380 | helper_window.button_maximize.click(function(){
381 | helper_window.webview.setVisibility(0);
382 | helper_window.button_minimize.setVisibility(0);
383 | helper_window.button_maximize.setVisibility(4);
384 | helper_window.setPosition(device.height - Math.floor(device.height*0.36) - 80, 0);
385 | });
386 |
387 | }
388 | function MaterialCalc(){ //公开招募助手主函数
389 | var helper_url = "https://aktools.graueneko.xyz/material?hidenav=";
390 | var helper_window = floaty.rawWindow(
391 |
392 |
393 |
394 |
395 |
396 | );
397 | running_floating_window = helper_window;
398 | helper_window.webview.loadUrl(helper_url);
399 | helper_window.setSize(Math.floor(device.height*0.36), device.width);
400 | helper_window.setPosition(device.height - Math.floor(device.height*0.36) - 80, 0);
401 | helper_window.setTouchable(true);
402 | helper_window.button_minimize.click(function(){
403 | helper_window.webview.setVisibility(4);
404 | helper_window.button_minimize.setVisibility(4);
405 | helper_window.button_maximize.setVisibility(0);
406 | helper_window.setPosition(device.height - 50 - 80, 0);
407 | });
408 | helper_window.button_maximize.click(function(){
409 | helper_window.webview.setVisibility(0);
410 | helper_window.button_minimize.setVisibility(0);
411 | helper_window.button_maximize.setVisibility(4);
412 | helper_window.setPosition(device.height - Math.floor(device.height*0.36) - 80, 0);
413 | });
414 |
415 | }
416 | function baiduOCR(){
417 | let api_key = "cmLuvbEk78THtWA7UVMueVIV";
418 | let secret_key = "XsWfCaTXlZLynWMatgPkem58lxvaINyz";
419 | let access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="+api_key+"&client_secret="+secret_key;
420 | let access_token_res = http.get(access_token_url);
421 | let access_token_object = access_token_res.body.json();
422 | //log(access_token_object.access_token);
423 |
424 | let screen = captureScreen();
425 | let img = images.clip(screen, device.height/2.0-400, device.width/2.0, 750, 200)
426 | let img_base64 = images.toBase64(img);
427 | let ocr_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic";
428 |
429 | let ocr_res = http.post(ocr_url, {
430 | headers: {
431 | "Content - Type": "application/x-www-form-urlencoded"
432 | },
433 | access_token:access_token_object.access_token,
434 | image: img_base64,
435 | });
436 | let ocr_object = ocr_res.body.json();
437 | return ocr_object.words_result;
438 | }
439 | function isPlaying(){ //判断是否在游戏内
440 | if (currentPackage() != "com.hypergryph.arknights"){
441 | launch("com.hypergryph.arknights");
442 | }
443 | }
444 | function settingsMenu(){ //总设置菜单
445 | let menu = ui.inflate(
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 | );
462 | var menu_dialog = dialogs.build({
463 | customView: menu,
464 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
465 | autoDismiss: false, //按下按钮时是否自动结束对话框
466 | canceledOnTouchOutside:true //点击对话框范围外时是否结束对话框
467 | }).show();
468 |
469 | menu.floaty_settings.on("click", () => {
470 | //menu_dialog.dismiss();
471 | toast("此选项尚未完善!");
472 | })
473 | menu.other_settings.on("click", () => {
474 | menu_dialog.dismiss();
475 | otherSettings();
476 | })
477 | }
478 | function otherSettings(){
479 | let menu = ui.inflate(
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 | );
493 | switch(LocalData.get("AccentColor")){
494 | case "#2D2D2D" :
495 | menu.spinner_color_choices.setSelection(0);
496 | break;
497 | case "#FB7299" :
498 | menu.spinner_color_choices.setSelection(1);
499 | break;
500 | case "#F44336" :
501 | menu.spinner_color_choices.setSelection(2);
502 | break;
503 | case "#FFC107" :
504 | menu.spinner_color_choices.setSelection(3);
505 | break;
506 | case "#8BC34A" :
507 | menu.spinner_color_choices.setSelection(4);
508 | break;
509 | case "#2196F3" :
510 | menu.spinner_color_choices.setSelection(5);
511 | break;
512 | case "#9C27B0" :
513 | menu.spinner_color_choices.setSelection(6);
514 | break;
515 | case "#FB8C00" :
516 | menu.spinner_color_choices.setSelection(7);
517 | break;
518 | case "#80DEEA" :
519 | menu.spinner_color_choices.setSelection(8);
520 | break;
521 | default:
522 | console.error("Exception: Can't set spinner color properly.");
523 | stop();
524 | break;
525 | }
526 | // 显示对话框
527 | dialogs.build({
528 | customView: menu,
529 | positive: "保存",
530 | negative: "返回",
531 | // view高度超过对话框时是否可滑动
532 | wrapInScrollView: true,
533 | // 按下按钮时是否自动结束对话框
534 | autoDismiss: false,
535 | // 点击对话框范围外时是否结束对话框
536 | canceledOnTouchOutside:false
537 | }).on("positive", (dialog) => {
538 | toast("设置已保存!");
539 | switch(menu.spinner_color_choices.getSelectedItemPosition()){
540 | case 0 :
541 | accent_color = "#2D2D2D"
542 | LocalData.put("AccentColor", accent_color);
543 | break;
544 | case 1 :
545 | accent_color = "#FB7299"
546 | LocalData.put("AccentColor", accent_color);
547 | break;
548 | case 2 :
549 | accent_color = "#F44336"
550 | LocalData.put("AccentColor", accent_color);
551 | break;
552 | case 3 :
553 | accent_color = "#FFC107"
554 | LocalData.put("AccentColor", accent_color);
555 | break;
556 | case 4 :
557 | accent_color = "#8BC34A"
558 | LocalData.put("AccentColor", accent_color);
559 | break;
560 | case 5 :
561 | accent_color = "#2196F3"
562 | LocalData.put("AccentColor", accent_color);
563 | break;
564 | case 6 :
565 | accent_color = "#9C27B0"
566 | LocalData.put("AccentColor", accent_color);
567 | break;
568 | case 7 :
569 | accent_color = "#FB8C00"
570 | LocalData.put("AccentColor", accent_color);
571 | break;
572 | case 8 :
573 | accent_color = "#80DEEA"
574 | LocalData.put("AccentColor", accent_color);
575 | break;
576 | default:
577 | toast("ERROR!");
578 | break;
579 | }
580 | dialog.dismiss();
581 | otherSettings();
582 | }).on("negative", (dialog) => {
583 | dialog.dismiss();
584 | settingsMenu();
585 | }).show();
586 | }
587 | function miscMenu(){ //“更多”菜单
588 | var LocalData = storages.create("AutoNightsToolBoxLocal");
589 | var cash_avalible = LocalData.get("CashAvalible");
590 | let menu = ui.inflate(
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
607 |
608 |
609 |
610 |
611 |
612 |
613 |
614 |
615 |
616 |
617 |
618 |
619 |
620 |
621 |
622 |
623 |
624 | );
625 | var menu_dialog = dialogs.build({
626 | customView: menu,
627 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
628 | autoDismiss: false, //按下按钮时是否自动结束对话框
629 | canceledOnTouchOutside:true //点击对话框范围外时是否结束对话框
630 | }).show();
631 |
632 | menu.accessibility.on("click", () => {
633 | menu_dialog.dismiss();
634 | app.startActivity({
635 | action: "android.settings.ACCESSIBILITY_SETTINGS"
636 | });
637 | })
638 | menu.mainpage.on("click", () => {
639 | //menu_dialog.dismiss();
640 | /*
641 | app.startActivity({
642 | action: "android.intent.action.VIEW", //此处可为其他值
643 | packageName: "org.autojs.autojs",
644 | className: "org.autojs.autojs.ui.splash.SplashActivity"
645 | //此处可以加入其他内容,如data、extras
646 | });
647 | */
648 | toast("此选项尚未完善!");
649 | })
650 | menu.help.on("click", () => {
651 | menu_dialog.dismiss();
652 | help_dialog();
653 | })
654 | menu.about.on("click", () => {
655 | menu_dialog.dismiss();
656 | about_dialog();
657 | })
658 | menu.exit.on("click", () => {
659 | menu_dialog.dismiss();
660 | if((cash_avalible)&&(Math.floor(Math.random()*10)>=7)){
661 | cashing_request();
662 | }else{
663 | toast("自动方舟已关闭!欢迎下次使用!");
664 | stop();
665 | }
666 | })
667 | }
668 | function cashing_request(){
669 | var LocalData = storages.create("AutoNightsToolBoxLocal");
670 |
671 | dialogs.build({
672 | title: "喜欢自动方舟吗?",
673 | content: "喜欢的话可以给作者打赏一杯奶茶的钱\n你们的支持是我继续前进的动力!",
674 | checkBoxPrompt: "不再弹出",
675 | positive:"支付宝",
676 | negative:"微信",
677 | neutral:"退出",
678 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
679 | autoDismiss: false, //按下按钮时是否自动结束对话框
680 | canceledOnTouchOutside:false //点击对话框范围外时是否结束对话框
681 | }).on("positive", (dialog) => {
682 | dialog.dismiss();
683 | alipay_dialog();
684 | }).on("negative", (dialog) => {
685 | dialog.dismiss();
686 | micromessege_dialog();
687 | }).on("neutral", (dialog) => {
688 | dialog.dismiss();
689 | toast("自动方舟已关闭!欢迎再次使用!");
690 | stop();
691 | }).on("check", (checked)=>{
692 | LocalData.put("CashAvalible",!checked);
693 | }).show();
694 | }
695 | function alipay_dialog(){
696 | let menu = ui.inflate(
697 |
698 |
699 |
700 |
701 |
702 |
703 | );
704 | dialogs.build({
705 | customView: menu,
706 | positive:"打开支付宝转账",
707 | neutral:"打开支付宝扫一扫",
708 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
709 | autoDismiss: false, //按下按钮时是否自动结束对话框
710 | canceledOnTouchOutside:false //点击对话框范围外时是否结束对话框
711 | }).on("positive", (dialog) => {
712 | dialog.dismiss();
713 | setClip("gzy1135989508@outlook.com");
714 | toast("账户名已经复制到剪贴板,点击粘贴即可。感谢您支持自动方舟!");
715 | app.startActivity({
716 | packageName: "com.eg.android.AlipayGphone",
717 | className:"com.alipay.mobile.transferapp.ui.TFToAccountInputActivity_"
718 | });
719 | stop();
720 | }).on("neutral", (dialog) => {
721 | dialog.dismiss();
722 | files.copy("./res/qr_code.png", "/storage/emulated/0/Pictures/qr_code.png");
723 | app.startActivity({
724 | packageName: "com.eg.android.AlipayGphone",
725 | className:"com.alipay.mobile.scan.as.main.MainCaptureActivity"
726 | });
727 | toast("感谢您支持自动方舟!欢迎再次使用");
728 | stop();
729 | }).show();
730 | }
731 | function micromessege_dialog(){
732 | let menu = ui.inflate(
733 |
734 |
735 |
736 |
"/>
737 |
738 |
739 | );
740 | dialogs.build({
741 | customView: menu,
742 | positive:"打开微信扫一扫",
743 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
744 | autoDismiss: false, //按下按钮时是否自动结束对话框
745 | canceledOnTouchOutside:false //点击对话框范围外时是否结束对话框
746 | }).on("positive", (dialog) => {
747 | dialog.dismiss();
748 | files.copy("./res/appreciation_code.png", "/storage/emulated/0/Pictures/appreciation_code.png");
749 | app.startActivity({
750 | packageName: "com.tencent.mm",
751 | className:"com.tencent.mm.plugin.scanner.ui.BaseScanUI"
752 | });
753 | toast("感谢您支持自动方舟!欢迎再次使用");
754 | stop();
755 | }).show();
756 | }
757 | function help_dialog(){ //“帮助”对话框
758 | dialogs.build({
759 | title: "使用指南",
760 | content: "1.公开招募助手需要在公招的Tag页面打开,会自动识别tag内容并在悬浮窗内显示\n2.当情况无法控制时,记得按下音量上键结束整个脚本\n3、大部分窗口点击窗口外部就可以关闭,包括主选单",
761 | positive: "返回",
762 | neutral: "还有问题?点击观看演示视频",
763 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
764 | autoDismiss: true, //按下按钮时是否自动结束对话框
765 | canceledOnTouchOutside:false //点击对话框范围外时是否结束对话框
766 | }).on("positive", ()=>{
767 | miscMenu();
768 | }).on("neutral", ()=>{
769 | app.openUrl("https://b23.tv/av61367241");
770 | }).show();
771 | }
772 | function about_dialog(){ //“关于”对话框
773 | dialogs.build({
774 | title: "关于",
775 | content: "本软件由Auto.js Pro打包制成\n\nAuto.js Pro内核版本号:7.0.4-1\n软件版本号:" + app.versionName + "\n\n作者:Particle_G\n联系方式:QQ:1135989508",
776 | positive: "返回",
777 | negative: "加入QQ交流群",
778 | neutral:"打赏作者",
779 | wrapInScrollView: true, //view高度超过对话框时是否可滑动
780 | autoDismiss: true, //按下按钮时是否自动结束对话框
781 | canceledOnTouchOutside:false //点击对话框范围外时是否结束对话框
782 | }).on("positive", ()=>{
783 | miscMenu();
784 | }).on("negative", ()=>{
785 | app.openUrl("https://jq.qq.com/?_wv=1027&k=5PX7Evs");
786 | }).on("neutral", ()=>{
787 | cashing_request();
788 | }).show();
789 | }
790 | function initializer(){ //首次运行、权限及配置数据完整性判断
791 | var LocalData = storages.create("AutoNightsToolBoxLocal");
792 | //确认应用权限是否被授予
793 | if (!LocalData.contains("VersionCode")){
794 | toast("请在接下来的页面里开启本应用的权限");
795 | console.show();
796 | console.hide();
797 | LocalData.put("VersionCode", app.versionCode);
798 | //stop();
799 | }else if(LocalData.get("VersionCode") != app.versionCode){
800 | toast("检测到数据库版本不匹配!已经重置数据库文件夹,请重新运行自动方舟!");
801 | LocalData.clear();
802 | stop();
803 | }
804 | requestScreenCapture(true);
805 |
806 | //确认主题色配置数据是否存在,不存在则默认设置为“false”
807 | if (!LocalData.contains("AccentColor")){
808 | LocalData.put("AccentColor", "#2D2D2D");
809 | }
810 | //确认打赏配置数据是否存在,不存在则默认设置为“true”
811 | if (!LocalData.contains("CashAvalible")){
812 | LocalData.put("CashAvalible", "true");
813 | }
814 | }
815 | function img_down() {
816 | win_1.logo.attr("alpha", "0.4");
817 | logo_switch = false;
818 | animationCreator();
819 | }
820 | function animationCreator(){ //补间动画生成
821 | var anX = [], anY = [], slX = [], slY = []
822 | if (logo_switch) {
823 | for (let i = 0; i < XY.length; i++) {
824 | anX[i] = ObjectAnimator.ofFloat(XY[i][0], "translationX", parseInt(XY[i][1]), 0);
825 | anY[i] = ObjectAnimator.ofFloat(XY[i][0], "translationY", parseInt(XY[i][2]), 0);
826 | slX[i] = ObjectAnimator.ofFloat(XY[i][0], "scaleX", 0, 1)
827 | slY[i] = ObjectAnimator.ofFloat(XY[i][0], "scaleY", 0, 1)
828 | }
829 | } else {
830 | for (let i = 0; i < XY.length; i++) {
831 | anX[i] = ObjectAnimator.ofFloat(XY[i][0], "translationX", 0, parseInt(XY[i][1]));
832 | anY[i] = ObjectAnimator.ofFloat(XY[i][0], "translationY", 0, parseInt(XY[i][2]));
833 | slX[i] = ObjectAnimator.ofFloat(XY[i][0], "scaleX", 1, 0)
834 | slY[i] = ObjectAnimator.ofFloat(XY[i][0], "scaleY", 1, 0)
835 | }
836 | }
837 | set = new AnimatorSet();
838 | set.playTogether(
839 | anX[0], anX[1], anX[2], anX[3], anX[4],
840 | anY[0], anY[1], anY[2], anY[3], anY[4],
841 | slX[0], slX[1], slX[2], slX[3], slX[4],
842 | slY[0], slY[1], slY[2], slY[3], slY[4]);
843 | set.setDuration(logo_ms);
844 | threads.start(function () {//动画的结束事件一直没有明白 只能拿线程代替了
845 | logo_buys = true
846 | if (logo_switch) {
847 | //log("开启")
848 | events.broadcast.emit("悬浮开关", true)
849 | sleep(logo_ms)
850 | } else {
851 | //log("关闭")
852 | sleep(logo_ms + 100)
853 | events.broadcast.emit("悬浮开关", false)
854 | }
855 | logo_buys = false
856 | });
857 | set.start();
858 | }
--------------------------------------------------------------------------------