autojs设置方法的参数类型

507 阅读2分钟

牙叔教程 简单易懂

以画板canvas为例, 我们画一个红色的矩形

"ui";
ui.layout(
  <vertical bg="#ff00ff">
    <canvas id="board"></canvas>
  </vertical>
);
let left = 300;
let top = 300;
let right = 900;
let bottom = 900;

let paint = new Paint();
// 画笔设置 红色
paint.setColor(colors.parseColor("#ff0000"));
// 设置画笔粗细
paint.setStrokeWidth(30);
ui.board.on("draw", function (canvas) {
  canvas.drawColor(android.graphics.Color.TRANSPARENT, android.graphics.PorterDuff.Mode.CLEAR);
  canvas.drawRect(left, top, right, bottom, paint);
});

在autojs4.1.1上的效果

\

预期是红色的矩形, 现在他却是白色的, 我们在设置画笔颜色的时候, 把参数类型指定一下

paint.setColor(colors.parseColor("#ff0000"));

改为

paint['setColor(int)'](colors.parseColor("#ff0000"));

这样颜色就正常了

\

怎么知道方法的参数有哪些类型呢?

如果你电脑上有android studio的话, 直接看类文件即可;

如果你不会android, 那么就用log

let paint = new Paint();
log(paint.setColor.toString());

方法签名就会打印出来

function setColor() {/*void setColor(int)void setColor(long)*/}

这个setColor有两个参数类型, 一个int, 一个long,

我们试试long能不能画出红色的矩形

paint['setColor(long)'](colors.parseColor("#ff0000"));

不行, 是白色的,

查安卓文档, 用pack试试

"ui";
ui.layout(
  <vertical bg="#ff00ff">
    <canvas id="board"></canvas>
  </vertical>
);
let left = 300;
let top = 300;
let right = 900;
let bottom = 900;

let paint = new Paint();
// 画笔设置 绿色
let green = android.graphics.Color.pack(colors.parseColor("#00ff00"));
paint["setColor(long)"](green);
// 设置画笔粗细
paint.setStrokeWidth(30);
ui.board.on("draw", function (canvas) {
  canvas.drawColor(android.graphics.Color.TRANSPARENT, android.graphics.PorterDuff.Mode.CLEAR);
  canvas.drawRect(left, top, right, bottom, paint);
});

没问题, long类型参数也可以设置颜色

以上代码的重点是颜色值换成long类型, 要用pack;

简单的colors.parseColor是不行的

// 画笔设置 绿色
let green = android.graphics.Color.pack(colors.parseColor("#00ff00"));
paint["setColor(long)"](green);

除了paint设置颜色要指定参数类型,

闹钟也要设置参数类型

importClass(android.provider.AlarmClock);
let i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "公众号: 牙叔教程");
i.putExtra(AlarmClock.EXTRA_HOUR, 12);
i["putExtra(java.lang.String,int)"](AlarmClock.EXTRA_HOUR, 8);
i["putExtra(java.lang.String,int)"](AlarmClock.EXTRA_MINUTES, 15);
i.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
app.startActivity(i);

重点是这句

i["putExtra(java.lang.String,int)"](AlarmClock.EXTRA_HOUR, 8);
i["putExtra(java.lang.String,int)"](AlarmClock.EXTRA_MINUTES, 15);

不指定参数类型的话, 你定的闹钟永远是24小时以后;

指定了参数类型, 闹钟的时间就设置正确了

测试环境


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

名人名言

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

声明

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

微信公众号 牙叔教程