我们在开发Autojs脚本时,需要使用到悬浮窗功能来控制脚本。那么到底要如何来做呢?今天给大家分享一些,先来看看效果:
调整移动和贴边。
防止滑出屏幕
附上完整代码
var storage = storages. create ( "日赚3万_短视频合集" ) ;
var img_url = "file://res/2.jpg"
悬浮窗 ( ) ;
function 悬浮窗 ( ) {
window = floaty. rawWindow (
< horizontal gravity= "center_vertical" >
< img id= "图标" src= "https://www.runoob.com/try/demo_source/smiley-2.gif" w= "60" h= "60" alpha= "0.8" circle= "true" borderWidth= "1dp" borderColor= "black" / >
< horizontal id= "抽屉" >
< vertical>
< button id= "ui_运行" textColor= "#FFFFFF" text= "开始" bg= "#4F4F4F" padding= "0" h= "40" w= "60" / >
< text text= "" h= "1" / >
< button id= "ui_关闭" textColor= "#FFFFFF" text= "结束" bg= "#4F4F4F" padding= "0" h= "40" w= "60" / >
< / vertical>
< / horizontal>
< / horizontal>
) ;
window. setPosition ( 50 , device. height / 3 ) ;
window. exitOnClose ( ) ;
setInterval ( ( ) => { } , 1000 ) ;
window. 抽屉. visibility = 8 ;
状态 = false ;
var execution = null ;
var x = 0 ,
y = 0 ;
var windowX, windowY;
var downTime;
console. log ( "w=" + device. width) ;
console. log ( "h=" + device. height) ;
window. 图标. setOnTouchListener ( function ( view, event ) {
switch ( event. getAction ( ) ) {
case event. ACTION_DOWN :
x = event. getRawX ( ) ;
y = event. getRawY ( ) ;
windowX = window. getX ( ) ;
windowY = window. getY ( ) ;
downTime = new Date ( ) . getTime ( ) ;
return true ;
case event. ACTION_MOVE :
let movexx = windowX + ( event. getRawX ( ) - x) ;
let moveyy = windowY + ( event. getRawY ( ) - y) ;
if ( movexx < 0 || movexx > device. width) {
movexx = 0 ;
}
if ( moveyy < 0 || moveyy > device. height) {
moveyy = 0 ;
}
window. setPosition ( movexx, moveyy) ;
console. log ( "event y=" + event. getRawY ( ) ) ;
console. log ( "event x=" + event. getRawX ( ) ) ;
return true ;
case event. ACTION_UP :
if ( Math. abs ( event. getRawY ( ) - y) < 5 && Math. abs ( event. getRawX ( ) - x) < 5 ) {
抽屉状态 ( ) ;
}
return true ;
}
return true ;
} ) ;
function 抽屉状态 ( ) {
if ( window. 抽屉. visibility == 8 ) {
window. 抽屉. visibility = 0 ;
} else {
window. 抽屉. visibility = 8 ;
}
}
window. ui_关闭. setOnTouchListener ( function ( view, event ) {
if ( event. getAction ( ) == event. ACTION_UP ) {
toastLog ( "关闭脚本..." ) ;
window. close ( ) ;
exit ( ) ;
}
return true ;
} ) ;
window. ui_运行. setOnTouchListener ( function ( view, event ) {
if ( event. getAction ( ) == event. ACTION_UP ) {
window. setPosition ( 50 , device. height / 3 ) ;
window. disableFocus ( ) ;
if ( window. ui_运行. text ( ) == "开始" ) {
window. ui_运行. text ( "暂停" ) ;
console. log ( "开始运行悬浮窗" ) ;
var main = threads. start ( function ( ) {
device. keepScreenOn ( )
douyinTask. runDouYinTask ( ) ;
} )
setTimeout ( function ( ) {
if ( window. ui_运行. text ( ) == "暂停" ) {
抽屉状态 ( )
}
} , 3000 )
var 监控状态 = setInterval ( function ( ) {
if ( window. ui_运行. text ( ) == "开始" ) {
main. interrupt ( )
toastLog ( "暂停了" )
clearInterval ( 监控状态)
}
} , 100 )
} else {
状态 = false ;
window. ui_运行. text ( "开始" ) ;
toastLog ( "开始暂停..." ) ;
}
}
return true ;
} ) ;
}