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


声明


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

相关文章
Xcode12在storyboard添加组件和事件,添加新页面及跳转
Xcode12界面有所改变,导致一些按钮位置变动。比如为storyboard添加组件的按钮移至如下位置:
2099 0
|
6月前
4.Electron之自定义菜单(绑定快捷键、点击事件)
4.Electron之自定义菜单(绑定快捷键、点击事件)
641 1
|
Android开发 数据安全/隐私保护 开发者
ApeForms | C#WinForm弹出简易的消息提示框 (仿Android Toast消息提示)
在使用手机的时候经常会见到屏幕的中下方会弹出消息提示框,它就是Toast。 ApeForms中也实现了非常简洁易用Toast,与Android的Toast不同的是,ApeForms允许开发者设置不同的弹出模式。此外还针对PC端有鼠标的情况进行了改进,当鼠标悬停于消息弹出框之上时弹出框不会消失。
443 0
|
监控 Android开发 iOS开发
Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
152 0
|
容器
PopupWindow(悬浮框)的基本使用
后一个用于显示信息的UI控件——PopupWindow(悬浮框),如果你想知道他长什么样子,你可以打开你手机的QQ,长按列表中的某项,这个时候后弹出一个黑色的小对话框,这种就是PopupWindow了,和AlertDialog对话框不同的是,他的位置可以是随意的; 另外AlertDialog是非堵塞线程的,而PopupWindow则是堵塞线程的!而官方有这样一句话来介绍PopupWindow: A popup window that can be used to display an arbitrary view. The popup window is a floating conta
172 0
|
iOS开发
iOS开发 - 解析tabbar中的凸起按钮
iOS开发 - 解析tabbar中的凸起按钮
422 0
iOS开发 - 解析tabbar中的凸起按钮
|
Android开发
autojs-dialog对话框倒计时
牙叔教程 简单易懂
1020 1
|
iOS开发
iOS开发 --重写UISearchBar的时候,点击取消searchbar会变深色,一闪而过
iOS开发 --重写UISearchBar的时候,点击取消searchbar会变深色,一闪而过
131 0
autojs之悬浮窗, 给我待在屏幕里面
使用场景: 令悬浮窗始终在屏幕之内
1607 0
autojs之悬浮窗, 给我待在屏幕里面
|
XML API 数据格式
侧滑按钮
导入闭包 将以下语句倒入目录下build.gradle文件内
181 0
侧滑按钮