牙叔教程 简单易懂
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文档, 最后才是群里问问 — 牙叔教程
声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途
微信公众号 牙叔教程
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END