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文档, 最后才是群里问问
--- 牙叔教程


声明


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

相关文章
Autojs4.1.0实战教程---抖音极速版自动评论
Autojs4.1.0实战教程---抖音极速版自动评论
632 1
|
7月前
|
安全 数据安全/隐私保护
屏幕自动点击器, 手机自动点击器, 自动连点器屏幕【autojs】
完整UI界面:包含悬浮窗控制面板,支持拖动位置调整 核心功能:单点/连续点击、位置记录、任务执行与停止
autojs普通版控制台美化
autojs普通版控制台美化
1316 0
autojs之停用音量上停止脚本
autojs 8.7.1自带示例中提供了某些开关
2454 0
|
监控 JavaScript 前端开发
autojs,监控屏幕以及获取所有应用
autojs,监控屏幕以及获取所有应用
|
JavaScript 前端开发
autox.js如何打印日志?
autox.js如何打印日志?
|
存储 JavaScript Android开发
AutoJs4.1.0实战教程---终极福利Apk
AutoJs4.1.0实战教程---终极福利Apk
808 0
|
Android开发
autojs控制台美化
牙叔教程 简单易学 使用场景 自定义控制台
1037 0
|
前端开发
autojs优秀UI-自定义控件
牙叔教程 简单易懂
1248 0
autojs之悬浮窗, 给我待在屏幕里面
使用场景: 令悬浮窗始终在屏幕之内
1952 0
autojs之悬浮窗, 给我待在屏幕里面

热门文章

最新文章