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


声明


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

相关文章
|
25天前
|
Java Maven Android开发
Android弹出dialog提示框演示
Android弹出dialog提示框演示
16 1
|
4月前
|
Java Android开发
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
185 0
|
11月前
|
Android开发 数据安全/隐私保护 开发者
ApeForms | C#WinForm弹出简易的消息提示框 (仿Android Toast消息提示)
在使用手机的时候经常会见到屏幕的中下方会弹出消息提示框,它就是Toast。 ApeForms中也实现了非常简洁易用Toast,与Android的Toast不同的是,ApeForms允许开发者设置不同的弹出模式。此外还针对PC端有鼠标的情况进行了改进,当鼠标悬停于消息弹出框之上时弹出框不会消失。
301 0
ApeForms | C#WinForm弹出简易的消息提示框 (仿Android Toast消息提示)
|
监控 Android开发 iOS开发
Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮
104 0
|
Java Android开发 Kotlin
Android 自定义加载动画Dialog弹窗
Android 自定义加载动画Dialog弹窗
290 0
Android 自定义加载动画Dialog弹窗
|
XML JSON Java
Android RecyclerVIew 列表实现 编辑、单选、全选、删除、动画效果(附源码)
Android RecyclerVIew 列表实现 编辑、单选、全选、删除、动画效果(附源码)
453 0
Android RecyclerVIew 列表实现 编辑、单选、全选、删除、动画效果(附源码)
|
Android开发
autojs-dialog对话框倒计时
牙叔教程 简单易懂
816 0
autojs之悬浮窗, 给我待在屏幕里面
使用场景: 令悬浮窗始终在屏幕之内
1285 0
autojs之悬浮窗, 给我待在屏幕里面
|
Android开发
3种方法实现Android按钮的点击事件,建议收藏!
3种方法实现Android按钮的点击事件,建议收藏!
545 0
3种方法实现Android按钮的点击事件,建议收藏!