牙叔教程 简单易懂
autojs软件自带的脚本商店有很多脚本 一个一个手动下载太麻烦给了, 我们写个脚本批量下载一下
效果
这样模拟手动下载就快多了, 也不用去分析协议之类的, 难度极低
脚本流程
while (1) { let listParentView = getListParentView(); var len = listParentView.childCount(); for (var i = 0; i < len; i++) { let itemView = listParentView.child(i); let downloadButton = itemView.child(0).child(1); downloadButton.click(); } slideFromBottomToTop(listParentView); }
- 获取商店脚本列表控件
- 遍历列表
- 下载条目
- 当前页面下载完成后, 滚动列表
处理几个小问题
- 找到控件后, 可视化控件, 也就是说在屏幕上, 显示找到的控件区域
显示控件区域方法:
显示一个全屏悬浮窗, 添加一个文本控件, 把文本控件的背景设置为一个框,
该框的区域和要显示的控件区域数据一致
var w = floaty.rawWindow( <frame> <text id="content" gravity="center"> 牙叔教程 </text> </frame> ); ui.run(function () { w.setSize(-1, -1); w.setTouchable(false); }); ui.run(function () { contentView.attr("w", width + "px"); contentView.attr("h", height + "px"); contentView.attr("x", left); contentView.attr("y", top - status_bar_height); setBackgroundRoundedRectangle(contentView); });
- 怎么判断当前列表控件采集完了?
下载的时候, 记录下载的文件的标题, 如果都记录过了, 那就说明采集完了
- 怎么判断滚动到底了?
滚动之前记录列表最后一个项目的名字,
滚动之后记录列表最后一个项目的名字,
如果滚动前后二者一样, 就说明滚动到底了
- 需要考虑状态栏高度吗?
看手机, 有的手机悬浮窗可以覆盖状态栏, 有的手机不行, 以实际测试为准
获取状态栏高度:
const resources = context.getResources(); const status_bar_height = resources.getDimensionPixelSize( resources.getIdentifier("status_bar_height", "dimen", "android") );
- 滚动控件用那个api
view.scrollForward();
- 获取控件高度
view.bounds().height();
下载完成
测试环境
手机: Mi 11 Pro
Android版本: 12
Autojs版本: 9.1.11
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程
声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途