牙叔教程 简单易学
使用场景
记忆数字
世界记忆大师数字项目的训练分三个步骤:出图、联结和记忆。
每个编码都在脑子里呈现出清晰、完整、立体、生动、有感觉的图像,还可以是动态的。
不仅要看到它的样子,还要听到它的声音、闻到它的味道、感受它的触觉,用各种感官去理解编码、感受编码。
在记忆的时候,一定要做到以下几点:清晰,奇特,动态,连贯!
如果你的图象不清晰,在你记忆的过程中就像是看屏幕不清晰的电视,当你回忆这段情景的时候,因为屏幕的不清晰,很多细节都被你忽略了,所以容易忘记。越是离奇的事物越容易加深人们的印象。
效果展示
autojs版本
8.7.7-0
代码简介
- 脚本提供了一个数据库, 里面有图片, 1-100
- 界面有一个输入框, 用来输入数字
- 输入数字后, 会自动显示数字对应的图片
- 两个数字为一组, 比如12为一张图片, 34位一张图片, 会自动以2位为一组, 切割数字
代码讲解
1. 停止其他脚本
engines.all().map((ScriptEngine) => {
if (engines.myEngine().toString() !== ScriptEngine.toString()) {
ScriptEngine.forceStop();
}
});
2. 导入类
importClass(Packages.androidx.recyclerview.widget.RecyclerView);
importClass(Packages.androidx.recyclerview.widget.LinearLayoutManager);
importClass(android.graphics.drawable.BitmapDrawable);
3. 界面布局
ui.layout(
<vertical margin="9">
<horizontal>
<text text="手机号"></text>
<input id="mobile" hint="只能输入数字" w="*" digit="1234567890"></input>
</horizontal>
<androidx.recyclerview.widget.RecyclerView id="dataList" h="*" w="*" />
</vertical>
);
4. recycleView布局
let boxXml = (
<vertical w="*" padding="8" marginTop="6">
<img id="img"></img>
<horizontal margin="20">
<text id="name" w="*" gravity="center" textSize="25sp" textStyle="bold">
名字
</text>
</horizontal>
</vertical>
);
5. 设置recycleView的布局管理器
layoutManager = new LinearLayoutManager(context);
recyclerView.setLayoutManager(layoutManager);
6. 设置recycleView的adapter
let recycleAdapter = createGiftBoxAdapter(dataList);
recyclerView.setAdapter(recycleAdapter);
7. 设置输入框监听
ui.mobile.addTextChangedListener(
new android.text.TextWatcher({
afterTextChanged: function (content) {
根据输入框中的内容修改dataList(content);
},
})
);
8. 退出时释放资源, 关闭数据库
events.on("exit", function () {
db && db.close();
});
##### 9. 打开数据库
```js
const TableName = "IMGDATA";
// 表名: IMGDATA
// 字段1 id 整数 主键 自增
// 字段2 name 字符串 不可为空
// 字段3 img BLOB bytes
let db = sqlite.open(
"/sdcard/脚本/memoryData.db",
{ version: 1 },
{
onOpen: function (db) {
db.execSQL(
"CREATE TABLE IF NOT EXISTS " +
TableName +
"(" +
"`id` INTEGER PRIMARY KEY AUTOINCREMENT, " +
"`name` TEXT NOT NULL UNIQUE, " +
"`img` BLOB" +
")"
);
},
}
);
10. 查找数字对应的图片信息
function 查找数字对应的图片信息(num) {
let dataList = getAllDataName();
var len = dataList.length;
for (var i = 0; i < len; i++) {
let item = dataList[i];
if (item.name.indexOf(num) === 0 && item.name.replace(/\D/g, "").length === num.length) {
let data = db.rawQuery("SELECT * FROM " + TableName + " WHERE id = ?", [item.id]).single();
return data;
}
}
db.close();
db = null;
throw new Error("没有找到图片");
}
11. 根据输入框中的内容修改dataList
function 根据输入框中的内容修改dataList(content) {
if (!content) {
return false;
}
content = content.toString();
let num = 2;
let arr = reSetData(content, num);
dataList.splice(0, dataList.length);
var len = arr.length;
for (var i = 0; i < len; i++) {
let item = arr[i];
dataList.push(formatData(item));
}
recycleAdapter.notifyDataSetChanged();
ui.dataList.post(function () {
ui.dataList.smoothScrollToPosition(dataList.length);
});
}
12. 根据输入框中的内容修改dataList
function createGiftBoxAdapter(dataList) {
return RecyclerView.Adapter({
onCreateViewHolder: function (parent, viewType) {
// 视图创建
let view;
let holder;
view = ui.inflate(boxXml, parent, false);
holder = JavaAdapter(RecyclerView.ViewHolder, {}, view);
return holder;
},
onBindViewHolder: function (holder, position) {
// 数据绑定
let data = dataList[position];
// holder.itemView.img.attr("src", "file://" + data.img);
let img = images.fromBytes(data.img);
let drawable = new BitmapDrawable(img.bitmap);
holder.itemView.img.setImageDrawable(drawable);
holder.itemView.name.setText(data.name);
},
getItemCount: function () {
return dataList.length;
},
});
}
声明
部分内容来自网络
bilibili
微信公众号 牙叔教程
QQ群
747748653