Skip to main content

网页窗口

from ascript.android.ui import WebWindow

制作用户交互界面

此网页窗口, 使用 WebView 展示 Html页面 ,需要开发者掌握一定 html知识.

开启窗口后,使用 JavaScript 可以和Python语言交互与通信.

方法

创建Web窗口

创建一个WebUI交互窗口,窗口依赖Html

  • 函数
WebWindow(self,html:str,tunnel=None)
  • 参数
参数类型是否必填说明
htmlstrhtml布局路径,请使用 ‘R.res’ 引用资源,也可以传入一个http地址
tunnelfunhtml 向 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)
  • 参数
参数类型是否必填说明
modestr窗口的模式
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)
参数类型必须备注
pyfunfunction必填必须包含两个形式参数 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)
  • 参数
参数类型必须备注
widthnumber 或 string必填当值为number类型时
width=300 设置窗口宽度为300px
当值为string类型时
.width="80vw" 设置宽度为屏幕宽度的 80%
width ="80vh" 设置宽度为屏幕高度的 80%
heightnumber 或 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)
  • 参数
参数类型必须备注
colorstring必填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_dragboolean必填系统默认为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)
  • 参数
参数类型必须备注
folfloat必填数值在 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)
  • 引力方向: 窗口靠左,窗口靠右,还是窗口居中 等.
参数类型必须备注
gravitynumber此值需传入 android.view.Gravity 中的常量值
offset_xnumber距离 引力点 x轴 偏移位置
offset_ynumber距离 引力点 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 的常用常量数值备注
LEFT3窗口居左
TOP48窗口居上
RIGHT5窗口居右
BOTTOM80窗口居底
CENTER_HORIZONTAL1水平居中
CENTER_VERTICAL16垂直居中
CENTER17屏幕居中
 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>