牙叔教程 简单易懂
以画板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文档, 最后才是群里问问 --- 牙叔教程
声明
部分内容来自网络 本教程仅用于学习, 禁止用于其他用途\
微信公众号 牙叔教程