autojs之控制台

2024-01-14 13:48
文章标签 控制台 autojs

本文主要是介绍autojs之控制台,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用场景

 

自定义控制台

 

效果展示

 

完美自定义控制台.png

控制台全部控件.png

autojs版本号

 

autojs版本号.png

原理

 

  1. 获取控制台实体
  2. 遍历控制台窗口
  3. 设置背景为红色

 

代码讲解

 

  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 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. 设置背景为红色
let num = 15;
ui.run(function () {r[num].setBackgroundColor(colors.parseColor("#ff0000"));
});
  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. 设置字体大小和颜色
let num = 10;
ui.run(function () {let recycleview = r[num];let adapter = recycleview.getAdapter();function createAdapter() {let result = new JavaAdapter(Packages[adapter.getClass().getName()],{onBindViewHolder: function (vh, i) {adapter.onBindViewHolder(vh, i);vh.textView.setTextSize(30);vh.textView.setTextColor(colors.parseColor("#2ed573"));},},recycleview.parent.parent,null);return result;}let newAdapter = createAdapter();recycleview.setAdapter(newAdapter);
});
  1. 打印日志
console.log("AutoJsPro教程  \n牙叔");

 

完整代码

 

importClass(Packages.androidx.recyclerview.widget.RecyclerView);
console.show();console.setPosition(210, 330);let mConsoleView = getConsoleWindow();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);
});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;
}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;
}let num = 10;
ui.run(function () {let recycleview = r[num];let adapter = recycleview.getAdapter();// r[num].setBackgroundColor(colors.parseColor("#2ed573"));function createAdapter() {let result = new JavaAdapter(Packages[adapter.getClass().getName()],{onBindViewHolder: function (vh, i) {adapter.onBindViewHolder(vh, i);vh.textView.setTextSize(30);vh.textView.setTextColor(colors.parseColor("#2ed573"));},},recycleview.parent.parent,null);return result;}let newAdapter = createAdapter();recycleview.setAdapter(newAdapter);
});console.log("AutoJsPro教程  \n牙叔");let arr = ["android.widget.RelativeLayout{9308131 V.E...... ......I. 0,0-0,0}", // 整个控制台的父view"android.widget.LinearLayout{73d1bee V.E...... ......ID 36,36-924,1683}","android.widget.LinearLayout{2d85df2 V.E...... ......ID 0,0-888,120}","android.widget.TextView{e4232c0 V.ED..... ......ID 48,0-528,120 #7f0902e7 app:id/title}","android.widget.LinearLayout{e264bf9 V.E...... ......ID 528,0-888,120}","android.widget.ImageView{d0a673e VFED..C.. ......ID 0,0-120,120 #7f0901dc app:id/minimize}","android.widget.ImageView{d7099f VFED..C.. ......ID 120,0-240,120 #7f0901e9 app:id/move_or_resize}","android.widget.ImageView{77baec VFED..C.. ......ID 240,0-360,120 #7f0900de app:id/close}","com.stardust.autojs.core.console.ConsoleView{debec43 V.E...... ......ID 0,120-888,1647 #7f0900e9 app:id/console}","android.widget.LinearLayout{b952908 V.E...... ......ID 0,0-888,1527}","androidx.recyclerview.widget.RecyclerView{c76aeb5 VFED..... .F...... 0,0-648,328 #7f0901a5 app:id/logList}","android.widget.LinearLayout{cc1b94a VFE...C.. ........ 24,328-648,448 #7f090185 app:id/inputContainer}","android.widget.EditText{e2ca0bb VFED..CL. ......I. 0,13-360,133 #7f090184 app:id/input}","android.widget.Button{d9b99d8 VFED..C.. ......I. 360,0-624,120 #7f0902bb app:id/submit}","android.widget.ImageView{a10b84d G.ED..... ......I. 0,0-0,0 #7f090247 app:id/resizer}","android.widget.ImageView{9c80250 G.ED..... ......I. 0,0-0,0 #7f0901e8 app:id/move_cursor}",
];

感谢

沐泠 的 adapter demo

icesValley 提供 adapter 示例

微信公众号 AutoJsPro教程

 

officialaccount.jpg

QQ群

 

747748653

 

给我个面子小图.jpg

这篇关于autojs之控制台的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605359

相关文章

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

IDEA运行spring项目时,控制台未出现的解决方案

《IDEA运行spring项目时,控制台未出现的解决方案》文章总结了在使用IDEA运行代码时,控制台未出现的问题和解决方案,问题可能是由于点击图标或重启IDEA后控制台仍未显示,解决方案提供了解决方法... 目录问题分析解决方案总结问题js使用IDEA,点击运行按钮,运行结束,但控制台未出现http://

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

C++实现俄罗斯方块(Windows控制台版)

C++实现俄罗斯方块(Windows控制台版) 在油管上看到一个使用C++控制台编写的俄罗斯方块小游戏,源代码200多行,B站上也有相关的讲解视频,非常不错,值得学习。 B站讲解视频地址为:【百万好评】国外技术大神C++游戏编程实战教程,油管580W收藏,新手10小时入门,并快速达到游戏开发能力(中英字幕) B站 CSDN博主千帐灯无此声还为此写了一篇博客:C++实现俄罗斯方块(源码+详解),讲

控制台和MFC中内存泄露工具vld的使用

最近想检测下项目中内存泄露的情况,选中了vld这款。在查找使用方法的时候,大都是控制台下的示例,添加到main函数所在的源文件上。换成MFC就纠结了,不知道添加到哪里去。本文记录控制台和MFC中的使用vld过程。    vld资源:    1)、大家可以移步下边的网址下载:     http://vld.codeplex.com/releases/view/82311    2

centos7 安装rocketmq4.7.0以及RocketMQ-Console-Ng控制台

一、前置工作 1.1安装jdk8 https://blog.csdn.net/pang_ping/article/details/80570011 1.2安装maven https://www.cnblogs.com/116970u/p/11211963.html 1.3安装git https://blog.csdn.net/xwj1992930/article/details/964

彻底解决win10系统Tomcat10控制台输出中文乱码

彻底解决Tomcat10控制台输出中文乱码 首先乱码问题的原因通俗的讲就是读的编码格式和写的解码格式不一致,比如最常见的两种中文编码UTF-8和GBK,UTF-8一个汉字占三个字节,GBK一个汉字占两个字节,所以当编码与解码格式不一致时,输出端当然无法识别这是啥,所以只能以乱码代替。 值得一提的是GBK不是国家标准编码,常用的国标有两,一个是GB2312,一个是GB18030 GB1

如何使用Selenium捕获控制台日志

Selenium是一个流行的开源工具,用于自动化Web浏览器。其中一个关键功能是能够与浏览器的开发者控制台交互。本文将向您展示如何在Selenium中使用Java获取控制台日志。这些日志对于调试和解决Selenium脚本的问题非常有用。 如何查看任何网页的控制台日志 首先,打开浏览器的开发者控制台。在大多数浏览器中,您可以通过右键点击页面并选择“检查”来做到这一点。我们将在我们的测试网站——h

SAP学习笔记 - 开发02 - BTP实操流程(账号注册,BTP控制台,BTP集成开发环境搭建)

上一章讲了 BAPI的概念,以及如何调用SAP里面的既存BAPI。 SAP学习笔记 - 开发01 - BAPI是什么?通过界面和ABAP代码来调用BAPI-CSDN博客 本章继续讲开发相关的内容,主要就是BTP的实际操作流程,比如账号注册,登录,BTP集成开发环境的搭建这方面。 目录 1,账号注册 2,BTP登录URL 3,如何在BTP上进行开发? 以下是详细内容。 1,账

Tomcat控制台乱码问题已解决(2024/9/7

步骤很详细,直接上教程 问题复现: 情景一 情景二 原因简述 这是由于编码不一致引起的,Tomcat启动后默认编码UTF-8,而Windows的默认编码是GBK。因此你想让其不乱码,只需配置conf\logging.properties的编码格式即可 解决方法演示🟢 然后重新启动Tomcat即可 效果演示