网页窗口
from ascript.android.ui import WebWindow
制作用户交互界面
此网页窗口, 使用 WebView 展示 Html页面
,需要开发者掌握一定 html知识.
开启窗口后,使用 JavaScript 可以和Python语言交互与通信.
方法
创建Web窗口
创建一个WebUI交互窗口,窗口依赖Html
- 函数
WebWindow(self,html:str,tunnel=None)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
html | str | 是 | html布局路径,请使用 ‘R.res’ 引用资源,也可以传入一个http地址 |
tunnel | fun | 否 | html 向 python 传递参数的通道,该函数需存在两个形式参数 key,value,html会传递键值对参数过来 |
- 返回值
WebWindow 窗口对象
- 示例
#展示一个简单的Html页面
from ascript.android.ui import WebWindow
from ascript.android.system import R
def tunnel(k,v):
print(k)
print(v)
# 构建一个WebWindow 显示‘/res/ui/a.html’ 通信通道为tunnel 函数
w = WebWindow(R.ui('a.html'),tunnel)
w.show()
窗口模式
可以改变窗口的模式
- 函数
WebWindow(...).mode(mode:int=0)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
mode | str | 是 | 窗口的模式 m=0 默认,窗口内和窗口外都可以获取点击触摸事件,但窗口外不可以调出键盘 m=1 只有窗口内的点击触摸事件有效 m=2 窗口内的所有点击触摸事件无效,并透传到窗口下 m=3窗口内外都可以点击触摸,但窗口内不可以调起键盘 m = -1 窗口载入进activity中.窗口内长按事件触发为系统原生方式 |
- 返回值
WebWindow 窗口对象
- 示例
# 显示一个 不可触摸的悬浮窗
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.mode(2)
w.show()
消息通道
设置消息通道,可以接收到js中传递的消息
- 函数
WebWindow(...).tunner(pyfun)
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
pyfun | function | 必填 | 必须包含两个形式参数 k,v |
- 示例
# 设置和html交互的消息通道
from ascript.android.ui import WebWindow
from ascript.android.system import R
def tunner(k,v):
print(k,v)
w = WebWindow(R.ui("loger.html"))
w.tunner(tunner) # 在这里设置消息通道
w.show()
尺寸
设置窗口 宽 或 高
- 函数
WebWindow(...).size(self,width=None,height=None)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
width | number 或 string | 必填 | 当值为number类型时 width=300 设置窗口宽度为300px 当值为string类型时 .width="80vw" 设置宽度为屏幕宽度的 80% width ="80vh" 设置宽度为屏幕高度的 80% |
height | number 或 string | 必填 | 当值为number类型时 height =300 设置窗口高度为300px 当值为string类型时 height="80vw" 设置高度为屏幕宽度的 80% width ="80vh" 设置高度为屏 幕高度的 80% |
- 示例
# 根据像素值 设置窗口宽高
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.size(500,300)
w.show()
# 根据百分比 设置窗口宽高
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.size('50vw','50vh')
w.show()
背景
设置UI背景色,默认为白色
- 函数
WebWindow(...).background(color:str)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
color | string | 必填 | argb 颜色值 透明:#00000000 白色:#FFFFFF 黑色:#000000 |
- 示例
# 设置背景色透明
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.background("#00000000")
w.show()
拖拽
UI窗口是否可被用户拖拽,默认为False
- 函数
WebWindow(...).drag(is_drag:bool=False)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
is_drag | boolean | 必填 | 系统默认为False 设置为True 后,在UI顶部出现拖动条,和改变尺寸的按钮 |
- 示例
# 让窗口可以拖动
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.drag(True)
w.show()
遮罩
设置窗口遮罩层透明度,默认为0.5
- 函数
WebWindow(...).dim_amount(dim:float=0.5)
- 参数
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
fol | float | 必填 | 数值在 0-1之间 0 :完全没有遮罩,1:完全黑的遮罩,0.5:半透明遮罩,默认为0.5 |
- 示例
# 取消窗口遮罩
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.dim_amount(0)
w.show()
# 窗口遮罩 为80%黑度
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.dim_amount(0.8)
w.show()
引力与位置
可更改 窗口的引力方向,随着引力方向的改变. 窗口的位置 属性也会随着引力点改变.
- 函数
WebWindow(...).gravity(gravity:int=None,offset_x:int=None,offset_y:int=None)
- 引力方向: 窗口靠左,窗口靠右,还是窗口居中 等.
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
gravity | number | 否 | 此值需传入 android.view.Gravity 中的常量值 |
offset_x | number | 否 | 距离 引力点 x轴 偏移位置 |
offset_y | number | 否 | 距离 引力点 y轴 偏移位置 |
- 示例
# 窗口布局至左上角
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.gravity(3|48)
w.show()
# 窗口布局至左上角,偏移左上角 x:100px,y:200px
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.gravity(3|48,100,200)
w.show()
引力方向
android.view.Gravity 的常用常量 | 数值 | 备注 |
---|---|---|
LEFT | 3 | 窗口居左 |
TOP | 48 | 窗口居上 |
RIGHT | 5 | 窗口居右 |
BOTTOM | 80 | 窗口居底 |
CENTER_HORIZONTAL | 1 | 水平居中 |
CENTER_VERTICAL | 16 | 垂直居中 |
CENTER | 17 | 屏幕居中 |
Android 类的常量使用
可以 通过python 引入使用 from android.view import Gravity
也可以 直接填入常量数值使用
- 窗口的组合引力 应该使用 ‘|’ 连接多个引力值
# 引力的组合写法
# 右上角
WebWindow(...).gravity(48|5)
# 右下角
WebWindow(...).gravity(80|5)
#左上角
WebWindow(...).gravity(48|3)
#左下角
WebWindow(...).gravity(80|3)
#左垂直居中
WebWindow(...).gravity(3|16)
#右垂直居中
WebWindow(...).gravity(5|16)
#上横向居中
WebWindow(...).gravity(48|1)
#下横向居中
WebWindow(...).gravity(80|1)
- 示例
显示
展现UI,启动一个窗口展示html
- 函数
WebWindow(...).show()
- 示例
# 显示一个窗口
from ascript.android.ui import WebWindow
from ascript.android.system import R
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.show()
关闭
关闭当前WebWindow
- 函数
WebWindow(...).close()
- 示例
# 显示一个窗口,2秒后关闭
from ascript.android.ui import WebWindow
from ascript.android.system import R
import time
# 构建一个WebWindow 显示‘/ui/a.html’
w = WebWindow(R.ui('a.html'))
w.show()
time.sleep(2)
w.close()
Python与Html交互
Python 调用 JavaScript 方法
请确定,在html 加载 javascript 代码中 存在将被调用的函数# 导包
from airscript.ui import WebWindow
#构建与展示UI
w = WebWindow(R(__file__).res('/ui/a.html'))
w.show()
# 调用 javascript 中的 函数 fun1 ,并传入参数 "自在老师",2
w.call('fun1("自在老师",2)')
JavaScript 向 Python 传递数据
在html中,使用javascript 方法调用内置jairscript对象<script>
//这里的 key,value 用户填入自定义的值 ,在 python 的WebWindow 构造参数 tunnel 中会回调
window.airscript.call('key',"value")
</script>
JavaScript 中的快捷方法
方法 | 备注 |
---|---|
airscript.close() | 关闭当前窗口 |
airscript.get("key") | 获取 Python 中Kv 存储的数据,仅支持string数据 |
airscript.save("key","value") | 快速存储数据到本地,和Python Kv函数数据互通,仅支持string数据 |
<script>
//在JS 中直接关闭当前窗口
window.airscript.close()
</script>
<script>
//在JS 中获取 Python代码中 Kv 存储的值
var value = window.airscript.get("key")
</script>
<script>
//在JS 调用 save 将数据存储在本地 只支持存储string 类型的值.
window.airscript.save("key","value")
</script>