如何在Autojs中优雅的使用webView

[本文适用于autojs pro 9.x版本]
对于需要写ui的脚本来说,使用安卓的xml方式去写一个好看的ui出来,在autojs中就显得过于艰难,虽说autojs在很早之前就支持了安卓原生的方式写ui,但对于只会js的我来说还是太难了...
但不知道从哪个版本起,autojs中封装了一个jsbridge...,这样就能直接在webview的html文件中直接和autojs进行交互, 相比xml,autojs的用户中我感觉更多的用户是偏向于web前端的, 习惯了 html+css+js的开发, 那么今天就使用一个简单的示例来描述一下怎么在autojspro版本中使用html来写ui界面
首先我们先创建一个v9的项目,简单规划一下目录结构:
main.js文件内容如下:
ui;$ui.layout( );const jsbridge = $ui.web.jsbridge;const webroot = $files.join( $files.cwd(), html );//在webview中加载本地的html文件$ui.web.loadurl( `file://${webroot}/index.html` );//在autojs的控制台输出webview控制台的消息$ui.web.events.on( console_message, ( event, msg ) => { console.log( msg.message() );} );//在webview中调用autojs的方法jsbridge.handle( 'show-log', () => { $app.startactivity( console );} ).handle( main, () => { main();} ).handle( setstatusbarcolor, ( event, color ) => { //根据web页面的背景色来设置安卓任务栏背景色 $ui.statusbarcolor( color );} )function main() { //这里写自动化脚本逻辑 console.show(); console.log( 这里执行了autojs的自动化脚本逻辑 ); sleep( 1000 ); console.info( 这里执行了autojs的自动化脚本逻辑 ); sleep( 1000 ); console.error( 这里执行了autojs的自动化脚本逻辑 ); sleep( 1000 ); console.log( 脚本执行结束 ); sleep( 2000 ); console.hide();}使用jsbridge的handle来定义一个方法供html调用
在html目录下的index.html中即可使用html代码来构建一个漂亮的ui界面了,和在浏览器中开发并没有什么不同,但是如果你需要使用jquery的话,需要注意符号需要变更一下,因为在autojs中也是用了符号(并且不能修改),所以只能修改一下jq的$符号
使用jquery的示例:
html> document body {background:#ffffff;color:#333;margin:0 auto;padding:0;} div{margin:0 auto;padding:0} .main button {width: 120px;height: 50px;} .bottom {width:100%;} .bottom .start {position:fixed;bottom:0px;width:100%;height:56px;display:block;} 打开日志界面 运行脚本 //注意这里需要转换一下jq的$符号 var $jq = jquery.noconflict(); $jq( function() { //点击页面的button会打开autojs的控制台显示日志 $jq( .main button ).click( function() { $autojs.invoke( show-log ); } ) //根据页面body的背景色来设置安卓任务栏的颜色 // var bgcolor = $jq( body ).css( background-color ) // console.log( bgcolor ); $autojs.invoke( setstatusbarcolor, #ffffff ); //点击开始按钮,运行脚本逻辑 $jq( .start ).click( function() { $autojs.invoke( main ); } ); } );如此在html中, 你即可与autojs进行交互了, 上面的例子中,使用jq,当然你也可以使用vue来开发页面, 亦或者使用vue-cli框架开发,具体的请参考app中的示例部分,这里不做演示, 赶紧copy代码自己试一试吧.
必须注意的是: 在html中的head部分必须引入一个内部的js文件

三星计划下个月在推出Note 10的同时推出这款手表
医学生利用VR模拟学习基础外科手术
iphone8什么时候上市?最新消息:iphone 8手机全面曝光,也就是十周年纪念款!黑科技满满,准备好钱了吗?
设计工程师五步实现FlexRay稳健网络拓朴
在这个消费降级的手机寒冬中,中国手机厂商究竟该如何才能自救?
如何在Autojs中优雅的使用webView
四维图新提出车路云一体化发展方向
百度将与广州共同打造人工智能应用新高地
高速PCB设计释疑
深耕散热风扇30余载,台湾三巨电机坚持“以质取胜”
AD108构成的可输入非对称方波的倍频器
GPS卫星定位系统发展现状及构成部分介绍
智能网联汽车是我国实现从汽车大国走向汽车强国的重要路径
传感器影响我们的日常生活
Materialise和HP合作,以加强3D打印过程管理
商汤利用AI技术研发SenseCare智慧诊疗平台
高通扩增实境技术将球票转化成3D游戏
2023第十八届“中国芯”名单出炉:拓尔微TMI8150B荣获芯火新锐产品奖
贴膜人员要下岗 贴膜机器人已上线4分钟精准贴膜
三星note7爆炸含恨落幕!来看看Galaxy S8的配置能否拯救三星手机?