autojs


Floaty - 悬浮窗

<p>[TOC]</p> <h1>Floaty</h1> <p>floaty模块提供了悬浮窗的相关函数,可以在屏幕上显示自定义悬浮窗,控制悬浮窗大小、位置等。</p> <p>悬浮窗在脚本停止运行时会自动关闭,因此,要保持悬浮窗不被关闭,可以用一个空的setInterval来实现,例如:</p> <pre><code>setInterval(()=&gt;{}, 1000);</code></pre> <h2>floaty.window(layout)</h2> <ul> <li><code>layout</code> {xml} | {View} 悬浮窗界面的XML或者View</li> </ul> <p>指定悬浮窗的布局,创建并<strong>显示</strong>一个悬浮窗,返回一个<code>FloatyWindow</code>对象。</p> <p>该悬浮窗自带关闭、调整大小、调整位置按键,可根据需要调用<code>setAdjustEnabled()</code>函数来显示或隐藏。</p> <p>其中layout参数可以是xml布局或者一个View,更多信息参见ui模块的说明。</p> <p>例子:</p> <pre><code>var w = floaty.window( &lt;frame gravity="center"&gt; &lt;text id="text"&gt;悬浮文字&lt;/text&gt; &lt;/frame&gt; ); setTimeout(()=&gt;{ w.close(); }, 2000);</code></pre> <p>这段代码运行后将会在屏幕上显示悬浮文字,并在两秒后消失。</p> <p>另外,因为脚本运行的线程不是UI线程,而所有对控件的修改操作需要在UI线程执行,此时需要用<code>ui.run</code>,例如:</p> <pre><code>ui.run(function(){ w.text.setText("文本"); });</code></pre> <p>有关返回的<code>FloatyWindow</code>对象的说明,参见下面的<code>FloatyWindow</code>章节。</p> <h2>floaty.rawWindow(layout)</h2> <ul> <li><code>layout</code> {xml} | {View} 悬浮窗界面的XML或者View</li> </ul> <p>指定悬浮窗的布局,创建并<strong>显示</strong>一个原始悬浮窗,返回一个<code>FloatyRawWindow</code>对象。</p> <p>与<code>floaty.window()</code>函数不同的是,该悬浮窗不会增加任何额外设施(例如调整大小、位置按钮),您可以根据自己需要编写任何布局。</p> <p>而且,该悬浮窗支持完全全屏,可以覆盖状态栏,因此可以做护眼模式之类的应用。</p> <pre><code>var w = floaty.rawWindow( &lt;frame gravity="center"&gt; &lt;text id="text"&gt;悬浮文字&lt;/text&gt; &lt;/frame&gt; ); w.setPosition(500, 500); setTimeout(()=&gt;{ w.close(); }, 2000);</code></pre> <p>这段代码运行后将会在屏幕上显示悬浮文字,并在两秒后消失。</p> <p>有关返回的<code>FloatyRawWindow</code>对象的说明,参见下面的<code>FloatyRawWindow</code>章节。</p> <h2>floaty.closeAll()</h2> <p>关闭所有本脚本的悬浮窗。</p> <h1>FloatyWindow</h1> <p>悬浮窗对象,可通过<code>FloatyWindow.{id}</code>获取悬浮窗界面上的元素。例如, 悬浮窗window上一个控件的id为aaa, 那么<code>window.aaa</code>即可获取到该控件,类似于ui。</p> <h2>window.setAdjustEnabled(enabled)</h2> <ul> <li><code>enabled</code> {boolean} 是否启用悬浮窗调整(大小、位置)</li> </ul> <p>如果enabled为true,则在悬浮窗左上角、右上角显示可供位置、大小调整的标示,就像控制台一样; 如果enabled为false,则隐藏上述标示。</p> <h2>window.setPosition(x, y)</h2> <ul> <li><code>x</code> {number} x</li> <li><code>x</code> {number} y</li> </ul> <p>设置悬浮窗位置。</p> <h2>window.getX()</h2> <p>返回悬浮窗位置的X坐标。</p> <h2>window.getY()</h2> <p>返回悬浮窗位置的Y坐标。</p> <h2>window.setSize(width, height)</h2> <ul> <li><code>width</code> {number} 宽度</li> <li><code>height</code> {number} 高度</li> </ul> <p>设置悬浮窗宽高。</p> <h2>window.getWidht()</h2> <p>返回悬浮窗宽度。</p> <h2>window.getHeight()</h2> <p>返回悬浮窗高度。</p> <h2>window.close()</h2> <p>关闭悬浮窗。如果悬浮窗已经是关闭状态,则此函数将不执行任何操作。</p> <p>被关闭后的悬浮窗不能再显示。</p> <h2>window.exitOnClose()</h2> <p>使悬浮窗被关闭时自动结束脚本运行。</p> <h1>FloatyRawWindow</h1> <p>原始悬浮窗对象,可通过<code>window.{id}</code>获取悬浮窗界面上的元素。例如, 悬浮窗window上一个控件的id为aaa, 那么<code>window.aaa</code>即可获取到该控件,类似于ui。</p> <h2>window.setTouchable(touchable)</h2> <ul> <li><code>touchable</code> {Boolean} 是否可触摸</li> </ul> <p>设置悬浮窗是否可触摸,如果为true, 则悬浮窗将接收到触摸、点击等事件并且无法继续传递到悬浮窗下面;如果为false, 悬浮窗上的触摸、点击等事件将被直接传递到悬浮窗下面。处于安全考虑,被悬浮窗接收的触摸事情无法再继续传递到下层。</p> <p>可以用此特性来制作护眼模式脚本。</p> <pre><code>var w = floaty.rawWindow( &lt;frame gravity="center" bg="#44ffcc00"/&gt; ); w.setSize(-1, -1); w.setTouchable(false); setTimeout(()=&gt;{ w.close(); }, 4000); </code></pre> <h2>window.setPosition(x, y)</h2> <ul> <li><code>x</code> {number} x</li> <li><code>x</code> {number} y</li> </ul> <p>设置悬浮窗位置。</p> <h2>window.getX()</h2> <p>返回悬浮窗位置的X坐标。</p> <h2>window.getY()</h2> <p>返回悬浮窗位置的Y坐标。</p> <h2>window.setSize(width, height)</h2> <ul> <li><code>width</code> {number} 宽度</li> <li><code>height</code> {number} 高度</li> </ul> <p>设置悬浮窗宽高。</p> <p>特别地,如果设置为-1,则为占满全屏;设置为-2则为根据悬浮窗内容大小而定。例如:</p> <pre><code>var w = floaty.rawWindow( &lt;frame gravity="center" bg="#77ff0000"&gt; &lt;text id="text"&gt;悬浮文字&lt;/text&gt; &lt;/frame&gt; ); w.setSize(-1, -1); setTimeout(()=&gt;{ w.close(); }, 2000); </code></pre> <h2>window.getWidht()</h2> <p>返回悬浮窗宽度。</p> <h2>window.getHeight()</h2> <p>返回悬浮窗高度。</p> <h2>window.close()</h2> <p>关闭悬浮窗。如果悬浮窗已经是关闭状态,则此函数将不执行任何操作。</p> <p>被关闭后的悬浮窗不能再显示。</p> <h2>window.exitOnClose()</h2> <p>使悬浮窗被关闭时自动结束脚本运行。</p> <h2>floaty.window(layout)</h2> <ul> <li><code>layout</code> {xml} | {View} 悬浮窗界面的XML或者View</li> </ul> <p>指定悬浮窗的布局,创建并<strong>显示</strong>一个悬浮窗,返回一个<code>FloatyWindow</code>对象。</p> <p>该悬浮窗自带关闭、调整大小、调整位置按键,可根据需要调用<code>setAdjustEnabled()</code>函数来显示或隐藏。</p> <p>其中layout参数可以是xml布局或者一个View,更多信息参见ui模块的说明。</p> <p>例子:</p> <pre><code>var w = floaty.window( &lt;frame gravity="center"&gt; &lt;text id="text"&gt;悬浮文字&lt;/text&gt; &lt;/frame&gt; ); setTimeout(()=&gt;{ w.close(); }, 2000);</code></pre> <p>这段代码运行后将会在屏幕上显示悬浮文字,并在两秒后消失。</p> <p>另外,因为脚本运行的线程不是UI线程,而所有对控件的修改操作需要在UI线程执行,此时需要用<code>ui.run</code>,例如:</p> <pre><code>ui.run(function(){ w.text.setText("文本"); });</code></pre> <p>有关返回的<code>FloatyWindow</code>对象的说明,参见下面的<code>FloatyWindow</code>章节。</p> <h2>floaty.rawWindow(layout)</h2> <ul> <li><code>layout</code> {xml} | {View} 悬浮窗界面的XML或者View</li> </ul> <p>指定悬浮窗的布局,创建并<strong>显示</strong>一个原始悬浮窗,返回一个<code>FloatyRawWindow</code>对象。</p> <p>与<code>floaty.window()</code>函数不同的是,该悬浮窗不会增加任何额外设施(例如调整大小、位置按钮),您可以根据自己需要编写任何布局。</p> <p>而且,该悬浮窗支持完全全屏,可以覆盖状态栏,因此可以做护眼模式之类的应用。</p> <pre><code>var w = floaty.rawWindow( &lt;frame gravity="center"&gt; &lt;text id="text"&gt;悬浮文字&lt;/text&gt; &lt;/frame&gt; ); w.setPosition(500, 500); setTimeout(()=&gt;{ w.close(); }, 2000);</code></pre> <p>这段代码运行后将会在屏幕上显示悬浮文字,并在两秒后消失。</p> <p>有关返回的<code>FloatyRawWindow</code>对象的说明,参见下面的<code>FloatyRawWindow</code>章节。</p> <h2>floaty.closeAll()</h2> <p>关闭所有本脚本的悬浮窗。</p> <h1>FloatyWindow</h1> <p>悬浮窗对象,可通过<code>FloatyWindow.{id}</code>获取悬浮窗界面上的元素。例如, 悬浮窗window上一个控件的id为aaa, 那么<code>window.aaa</code>即可获取到该控件,类似于ui。</p> <h2>window.setAdjustEnabled(enabled)</h2> <ul> <li><code>enabled</code> {boolean} 是否启用悬浮窗调整(大小、位置)</li> </ul> <p>如果enabled为true,则在悬浮窗左上角、右上角显示可供位置、大小调整的标示,就像控制台一样; 如果enabled为false,则隐藏上述标示。</p> <h2>window.setPosition(x, y)</h2> <ul> <li><code>x</code> {number} x</li> <li><code>x</code> {number} y</li> </ul> <p>设置悬浮窗位置。</p> <h2>window.getX()</h2> <p>返回悬浮窗位置的X坐标。</p> <h2>window.getY()</h2> <p>返回悬浮窗位置的Y坐标。</p> <h2>window.setSize(width, height)</h2> <ul> <li><code>width</code> {number} 宽度</li> <li><code>height</code> {number} 高度</li> </ul> <p>设置悬浮窗宽高。</p> <h2>window.getWidht()</h2> <p>返回悬浮窗宽度。</p> <h2>window.getHeight()</h2> <p>返回悬浮窗高度。</p> <h2>window.close()</h2> <p>关闭悬浮窗。如果悬浮窗已经是关闭状态,则此函数将不执行任何操作。</p> <p>被关闭后的悬浮窗不能再显示。</p> <h2>window.exitOnClose()</h2> <p>使悬浮窗被关闭时自动结束脚本运行。</p> <h1>FloatyRawWindow</h1> <p>原始悬浮窗对象,可通过<code>window.{id}</code>获取悬浮窗界面上的元素。例如, 悬浮窗window上一个控件的id为aaa, 那么<code>window.aaa</code>即可获取到该控件,类似于ui。</p> <h2>window.setTouchable(touchable)</h2> <ul> <li><code>touchable</code> {Boolean} 是否可触摸</li> </ul> <p>设置悬浮窗是否可触摸,如果为true, 则悬浮窗将接收到触摸、点击等事件并且无法继续传递到悬浮窗下面;如果为false, 悬浮窗上的触摸、点击等事件将被直接传递到悬浮窗下面。处于安全考虑,被悬浮窗接收的触摸事情无法再继续传递到下层。</p> <p>可以用此特性来制作护眼模式脚本。</p> <pre><code>var w = floaty.rawWindow( &lt;frame gravity="center" bg="#44ffcc00"/&gt; ); w.setSize(-1, -1); w.setTouchable(false); setTimeout(()=&gt;{ w.close(); }, 4000); </code></pre> <h2>window.setPosition(x, y)</h2> <ul> <li><code>x</code> {number} x</li> <li><code>x</code> {number} y</li> </ul> <p>设置悬浮窗位置。</p> <h2>window.getX()</h2> <p>返回悬浮窗位置的X坐标。</p> <h2>window.getY()</h2> <p>返回悬浮窗位置的Y坐标。</p> <h2>window.setSize(width, height)</h2> <ul> <li><code>width</code> {number} 宽度</li> <li><code>height</code> {number} 高度</li> </ul> <p>设置悬浮窗宽高。</p> <p>特别地,如果设置为-1,则为占满全屏;设置为-2则为根据悬浮窗内容大小而定。例如:</p> <pre><code>var w = floaty.rawWindow( &lt;frame gravity="center" bg="#77ff0000"&gt; &lt;text id="text"&gt;悬浮文字&lt;/text&gt; &lt;/frame&gt; ); w.setSize(-1, -1); setTimeout(()=&gt;{ w.close(); }, 2000); </code></pre> <h2>window.getWidht()</h2> <p>返回悬浮窗宽度。</p> <h2>window.getHeight()</h2> <p>返回悬浮窗高度。</p> <h2>window.close()</h2> <p>关闭悬浮窗。如果悬浮窗已经是关闭状态,则此函数将不执行任何操作。</p> <p>被关闭后的悬浮窗不能再显示。</p> <h2>window.exitOnClose()</h2> <p>使悬浮窗被关闭时自动结束脚本运行。</p>

页面列表

ITEM_HTML