AutoJs6 icon indicating copy to clipboard operation
AutoJs6 copied to clipboard

控制台悬浮窗如何设置点击穿透?

Open photkey opened this issue 2 years ago • 6 comments

w.setTouchable(false); 控制台悬浮窗 是不是没有这个属性可以设置,还是我没有找到正确的设置方法?

如果是没有的话,希望可以增加这个设置,这个显示日志用起来更方便一些,要不然还要单独写一个悬浮窗 太麻烦。

photkey avatar Aug 09 '23 11:08 photkey

或者是给一个 FloatyRawWindow 悬浮窗 实时显示工作台日志的例子,这个不会写,网上找的autojs的代码运行不起来。

photkey avatar Aug 10 '23 06:08 photkey

同样遇到问题了,我遇到的问题是再安卓13的miui上面跑不起来,再12可以,再虚拟机可以,感觉是安卓13改了什么东西导致setTouchable函数失效了

lin12058 avatar Aug 15 '23 21:08 lin12058

把日志文件写入本地,关键提示用toast,完美解决(迫真)

sucutey avatar Sep 05 '23 04:09 sucutey

把日志文件写入本地,关键提示用toast,完美解决(迫真)

不完美啊,不能一直盯着toast看,而且即使盯着看,连续toast 实时只能看到最后一条toast

photkey avatar Sep 05 '23 11:09 photkey

可以隐藏啊,你写的什么脚本,非要一直监听日志输出

sucutey avatar Sep 05 '23 12:09 sucutey

//自己改改吧
var 显示几行日志=6
var 已经存在的日志长度限制=100
_log=log;
var window=floaty.rawWindow(
  <relative id='main' layout_width="match_parent" layout_height="wrap_content" >
    <linear layout_width="match_parent" layout_height="wrap_content" background='#ff000000'  >
      <button id="计时" background='#ffff0000' layout_width="0pt" layout_height="match_parent"  layout_weight='1' gravity="center" textSize="13dp" textColor="white" style="Widget/AppCompat.Button.Borderless" text='第一块'
      />
      <button id="记录app"  background='#ff00ff00' layout_width="0pt" layout_height="match_parent"  layout_weight='1' gravity="center" textSize="13dp" textColor="white" style="Widget/AppCompat.Button.Borderless" text='第二块'
      />
      <text id="日志"  background='#ff0000ff' layout_width="0pt" layout_height="wrap_content"  layout_weight='4' gravity="center" size="13dp" color="white" text='第三块'
      />
    </linear>
  </relative>
);




w=Math.floor(device.width)
h=Math.floor(device.height/5)
window.setSize(w,h)
window.setPosition(0,device.height/2)








var 计时函数=function (){
  var count=0
  return function (){
    ui.run(
      ()=>{window.计时.text(s_to_hs(count)+'')}
    )
    return count++;
  }
}()

//计时
var id=setInterval(计时函数,1000)
var 二十分钟=20*60*1000
setTimeout(function(){
  clearInterval(id);
}, 二十分钟);

//移动窗口
window.main.setOnTouchListener(
  function (view,event){
    switch (event.getAction()){
      case event.ACTION_DOWN:
        x=event.getRawX()
        y=event.getRawY()
        windowX=window.getX()
        windowY=window.getY()
        return true
      case event.ACTION_MOVE:
      //移动手指调整悬浮窗位置
       window.setPosition(windowX+(event.getRawX()-x),windowY+(event.getRawY()-y))
    }
    return true
  }
)

//记录app
window.记录app.on(
  'click',()=>{alert('点击了记录app')}
)

//日志
for(let i=0;i<10;i++){
  log(i)
  sleep(1000)
}

function 已经存在的日志strLength(已经存在的日志arr){
  var 已经存在的日志str=已经存在的日志arr.join('\n')
  return 已经存在的日志str.length
}
function 已经存在的日志长度超过标准了吗(已经存在的日志arr){
  var result1=已经存在的日志strLength(已经存在的日志arr)>已经存在的日志长度限制 ? true:false
  var result2=已经存在的日志arr.length > 显示几行日志 ? true:false
  return result1 || result2
}
function 已经存在的日志arrToStr(已经存在的日志arr){
  var result=已经存在的日志arr.join('\n')
  return result
}
function log(){
  var s=''
  for(let i=0;i<arguments.length;i++){
    s+=''+arguments[i]+' '
  }
  if(已经存在的日志长度超过标准了吗(已经存在的日志arr)){
    已经存在的日志arr.shift()
  }
  已经存在的日志arr.push(s)
  var 要打印的内容=已经存在的日志arrToStr(已经存在的日志arr)
  // alert(要打印的内容)
  ui.run(()=>{
    window.日志.text(要打印的内容);
  })
}



function s_to_hs(s){
  //计算分钟
  //算法:将秒数除以60,然后下舍入,既得到分钟数
  var h;
  h  =   Math.floor(s/60);
  //计算秒
  //算法:取得秒%60的余数,既得到秒数
  s  =   s%60;
  //将变量转换为字符串
  h    +=    '';
  s    +=    '';
  //如果只有一位数,前面增加一个0
  h  =   (h.length==1)?'0'+h:h;
  s  =   (s.length==1)?'0'+s:s;
  return h+':'+s;
}


sucutey avatar Sep 05 '23 12:09 sucutey

yolo8,用来标记输出的,必须要显示在屏幕上面

lin12058 avatar Sep 05 '23 12:09 lin12058

下一版本将加入 console.setTouchable(touchable: boolean): void

SuperMonster003 avatar Nov 02 '23 08:11 SuperMonster003