autojs之图片控制台

简介: 使用情景自定义控制台, 添加图标, 小红点, 图片背景等效果

使用情景


自定义控制台,  添加图标, 小红点, 图片背景等效果


效果展示

微信图片_20220624130601.jpg


autojs版本号

微信图片_20220624174106.png


原理


  1. 日志是一个recycleview
  2. 重写日志的adapter


知识点


  1. 获取控制台实体
  2. 理解recycleview的复用
  3. 遍历控制台
  4. 理解onCreateViewHolder的作用
  5. 理解onBindViewHolder的作用
  6. 调用父类的方法
  7. canvas画图片, 画圆
  8. 计算recycleview装饰物(图片和小红点)的坐标
  9. recycleview添加装饰物


代码讲解


  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);


  1. 显示控制台, 否则无法得到控制台实体
console.show();


  1. 获取控制台实体
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;
}


  1. 隐藏按钮和输入框
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);
});


  1. 遍历控制台所有view
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;
}


  1. 设置控制台标题
r[3].setText("牙叔");


  1. 修改recycleviewadapter
recycleview.setAdapter(newAdapter);
// onCreateViewHolder
holder.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"));
}


  1. 添加recycleview的装饰物
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; // 分割线高度


  1. 修改控制台坐标和大小
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);






相关文章
autojs普通版控制台美化
autojs普通版控制台美化
882 0
|
5月前
|
Web App开发 JavaScript 前端开发
使用 JS 实现在浏览器控制台打印图片 console.image()
在前端开发过程中,调试的时候,我们会使用 console.log 等方式查看数据。但对于图片来说,仅靠展示的数据与结构,是无法想象出图片最终呈现的样子的。 虽然我们可以把图片数据通过 img 标签展示到页面上,或将图片下载下来进行预览。但这样的调试过程实在是复杂,何不实现一个 console.image() 呢?
123 1
使用 JS 实现在浏览器控制台打印图片 console.image()
|
JavaScript 前端开发 Windows
VScode的注释和标题,标签,img的src属性(如何网页上插入图片)(Mac如何开启js控制台)(如何免费复制网页中的文字)
VScode的注释和标题,标签,img的src属性(如何网页上插入图片)(Mac如何开启js控制台)(如何免费复制网页中的文字)
控制台图片路径错误,显示[object Module],解决办法
控制台图片路径错误,显示[object Module],解决办法
132 0
console.log控制台里怎么输出图片
console.log控制台里怎么输出图片
160 0
console.log控制台里怎么输出图片
Pycharm的相关配置:改字体样式和大小、更改图片背景、更改控制台输出的字体颜色
Pycharm的相关配置:改字体样式和大小、更改图片背景、更改控制台输出的字体颜色
Pycharm的相关配置:改字体样式和大小、更改图片背景、更改控制台输出的字体颜色
|
Android开发
autojs控制台美化
牙叔教程 简单易学 使用场景 自定义控制台
764 0
|
Android开发
autojs之控制台
使用场景 自定义控制台
590 0
autojs之控制台