autojs操作列表-下载脚本商店代码

牙叔教程 简单易懂

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);
}
复制代码
  1. 获取商店脚本列表控件
  2. 遍历列表
  3. 下载条目
  4. 当前页面下载完成后, 滚动列表

处理几个小问题

  1. 找到控件后, 可视化控件, 也就是说在屏幕上, 显示找到的控件区域

显示控件区域方法:

显示一个全屏悬浮窗, 添加一个文本控件, 把文本控件的背景设置为一个框,

该框的区域和要显示的控件区域数据一致

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);
  });
复制代码
  1. 怎么判断当前列表控件采集完了?

下载的时候, 记录下载的文件的标题, 如果都记录过了, 那就说明采集完了

  1. 怎么判断滚动到底了?

滚动之前记录列表最后一个项目的名字,

滚动之后记录列表最后一个项目的名字,

如果滚动前后二者一样, 就说明滚动到底了

  1. 需要考虑状态栏高度吗?

看手机, 有的手机悬浮窗可以覆盖状态栏, 有的手机不行, 以实际测试为准

获取状态栏高度:

const resources = context.getResources();
const status_bar_height = resources.getDimensionPixelSize(
  resources.getIdentifier("status_bar_height", "dimen", "android")
);
复制代码
  1. 滚动控件用那个api
view.scrollForward();
复制代码
  1. 获取控件高度
view.bounds().height();
复制代码

下载完成

测试环境


手机: Mi 11 Pro
Android版本: 12
Autojs版本: 9.1.11


名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程

声明

部分内容来自网络 本教程仅用于学习, 禁止用于其他用途

微信公众号 牙叔教程

猜你喜欢

转载自juejin.im/post/7079699102707122206