autojs之图片控制台

大神们在线问一下,autojs之图片控制台
最新回答
戏柚画西楼

2026-10-23 00:16:07

在AutoJS中实现图片控制台,可以通过自定义控制台的RecyclerView适配器来实现添加图标、小红点、图片背景等效果。以下是详细的实现步骤和代码示例:

  1. 导入必要的类:

    importClass(Packages.androidx.recyclerview.widget.RecyclerView);importClass(Packages.androidx.recyclerview.widget.LinearLayoutManager);importClass(android.graphics.drawable.BitmapDrawable);importClass(Packages.androidx.recyclerview.widget.DividerItemDecoration);importClass(android.graphics.BitmapFactory);importClass(android.graphics.Paint);importClass(android.graphics.Color);
  2. 显示控制台:

    console.show();
  3. 获取控制台实体:

    let mConsoleView = getConsoleWindow();function getConsoleWindow() { var mConsole = runtime.console; let field = mConsole.class.superclass.getDeclaredField("mConsoleFloaty"); field.setAccessible(true); mConsoleFloaty = field.get(mConsole); mConsoleView = mConsoleFloaty.getExpandedView(); return mConsoleView;}
  4. 隐藏按钮和输入框:

    let parent = mConsoleView.parent;var inputView = parent.findViewById(context.getResources().getIdentifier("input", "id", context.getPackageName()));var buttonView = parent.findViewById(context.getResources().getIdentifier("submit", "id", context.getPackageName()));ui.run(function () { inputView.setVisibility(8); buttonView.setVisibility(8);});
  5. 遍历控制台所有视图:

    let r = filterView(mConsoleView);function filterView(view, arr) { arr = arr || []; if (view instanceof android.view.ViewGroup) { arr.push(view); let childCount = view.childCount; for (var i = 0; i < childCount; i++) { let chileView = view.getChildAt(i); filterView(chileView, arr); } } else { arr.push(view); } return arr;}
  6. 设置控制台标题:

    r[3].setText("自定义控制台");
  7. 修改RecyclerView的适配器:

    recycleview.setAdapter(newAdapter);// onCreateViewHolderholder.itemView.setBackgroundDrawable(new BitmapDrawable(bgBmp)); // 设置背景图片holder.textView.setTextSize(25); // 设置字体大小// onBindViewHolder// 每隔三行改变字体颜色if (i % 3 === 0) { vh.textView.setTextColor(colors.parseColor("#2ed573"));} else { vh.textView.setTextColor(colors.parseColor("#332ed573"));}
  8. 添加RecyclerView的装饰物:

    onDraw: function (c, parent, state) // 添加左侧的图标 c.drawBitmap(mBmp, 6, child.getTop(), mPaint);onDrawOver: function (c, parent, state) // 添加右侧的小红点 c.drawCircle(cx, cy, radius, mPaint);getItemOffsets: function (outRect, view, parent, state) outRect.left = mBmpWidth + 12; // 左侧装饰物的宽度 outRect.bottom = 2; // 分割线高度
  9. 修改控制台坐标和大小:

    let consoleWidth = parseInt((device.width / 5) * 4);let consoleHeight = parseInt((device.height / 5) * 4);console.setSize(consoleWidth, consoleHeight);console.setPosition((device.width - consoleWidth) / 2, (device.height - consoleHeight) / 2);

通过以上步骤,你可以实现一个自定义的图片控制台,添加图标、小红点、图片背景等效果。以下是效果展示: