autojs修改悬浮窗按钮点击事件

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


main.js

"ui";
let fv = require("./fv");
ui.layout(
  <vertical>
    <button id="显示悬浮窗">显示悬浮窗</button>
    <button id="修改悬浮窗按钮点击事件">修改悬浮窗按钮点击事件</button>
  </vertical>
);
let action = function () {
  toastLog("悬浮窗按钮点击事件");
};
ui.显示悬浮窗.click(function () {
  fv.show();
});
ui.修改悬浮窗按钮点击事件.click(function () {
  fv.setBtnAction(action);
});


fv.js

let window;
let btnAction = function () {};
function 是否有悬浮窗权限2() {
  return floaty.checkPermission();
}
function 申请悬浮窗权限2() {
  log("申请悬浮窗权限2");
  var intent = new Intent();
  intent.setAction("android.settings.action.MANAGE_OVERLAY_PERMISSION");
  activity.startActivityForResult(intent, 8000);
}
function show() {
  if (!是否有悬浮窗权限2()) {
    toastLog("请开启悬浮窗权限");
    申请悬浮窗权限2();
    return;
  } else {
    window = floaty.rawWindow(
      <vertical>
        <button id="btn" padding="10">
          点我
        </button>
        <button id="move" padding="10">
          移动
        </button>
      </vertical>
    );
    setSuspendedWindowMoveWithFinger(window, "move");
    window.btn.click(function () {
      btnAction();
    });
  }
}
function hide() {}
function getBtnAction() {
  return btnAction;
}
function setBtnAction(action) {
  btnAction = action;
}
let fv = {
  window: window,
  show: show,
  hide: hide,
  setBtnAction: setBtnAction,
  getBtnAction: getBtnAction,
};
module.exports = fv;
function setSuspendedWindowMoveWithFinger(suspendedWindow, viewId) {
  //记录按键被按下时的触摸坐标
  var x = 0,
    y = 0;
  //记录按键被按下时的悬浮窗位置
  var windowX, windowY;
  //记录按键被按下的时间以便判断长按等动作
  var downTime;
  suspendedWindow[viewId].setOnTouchListener(function (view, event) {
    switch (event.getAction()) {
      case event.ACTION_DOWN:
        x = event.getRawX();
        y = event.getRawY();
        windowX = suspendedWindow.getX();
        windowY = suspendedWindow.getY();
        downTime = new Date().getTime();
        return true;
      case event.ACTION_MOVE:
        //移动手指时调整悬浮窗位置
        suspendedWindow.setPosition(windowX + (event.getRawX() - x), windowY + (event.getRawY() - y));
        moving = true;
        //如果按下的时间超过1.5秒判断为长按,退出脚本
        return true;
      case event.ACTION_UP:
        moving = false;
        //手指弹起时如果偏移很小则判断为点击
        if (Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5) {
          if (new Date().getTime() - downTime > 2000) {
            hideSuspendedWindow();
          }
        }
        return true;
    }
    return true;
  });
}


环境


手机: Mi 11 Pro


Android版本: 12


Autojs版本: 9.1.6



名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

相关文章
autojs普通版控制台美化
autojs普通版控制台美化
1287 0
|
测试技术 Android开发
autojs横屏截图的正确姿势
牙叔教程 简单易懂
3447 0
|
测试技术 Android开发
autojs动态修改图片src
牙叔教程 简单易懂
1253 0
|
人工智能 前端开发 Java
autojs非常见函数1
牙叔教程 简单易懂
2541 0
|
5月前
|
安全 数据安全/隐私保护
屏幕自动点击器, 手机自动点击器, 自动连点器屏幕【autojs】
完整UI界面:包含悬浮窗控制面板,支持拖动位置调整 核心功能:单点/连续点击、位置记录、任务执行与停止
|
监控 JavaScript 前端开发
autojs,监控屏幕以及获取所有应用
autojs,监控屏幕以及获取所有应用
visual studio code 在雷电模拟器上链接Autojs
visual studio code 在雷电模拟器上链接Autojs
556 0
|
存储 JavaScript Android开发
AutoJs4.1.0实战教程---终极福利Apk
AutoJs4.1.0实战教程---终极福利Apk
656 0
autojs之悬浮窗, 给我待在屏幕里面
使用场景: 令悬浮窗始终在屏幕之内
1921 0
autojs之悬浮窗, 给我待在屏幕里面
autojs之彩色按钮
作者: 牙叔 使用场景: 展示彩虹色的按钮
1054 0
autojs之彩色按钮