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

相关文章

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即可 效果演示

一个C++程序运行,从点击运行到控制台打印文本,电脑硬件的资源是如何调动的

当点击运行一个 C++ 程序并看到控制台输出文本时,计算机硬件和操作系统之间协同工作,完成了多个步骤。这些步骤涉及 CPU、内存、存储设备、操作系统和输入输出设备的共同作用。下面是一个详细的过程描述: 1. 程序加载 启动:当你点击运行一个可执行文件时,操作系统(通常是 Windows、Linux 或 macOS)的文件系统管理器识别请求,并启动加载程序。读取可执行文件:加载程序将可执行文件从

控制台、win32 、mfc 、QT区别

控制台程序主要用于早期dos(disk operate system)编程。win32 在windows95系统以前,c++还未流行起来,面向c语言(面向过程)的窗口编程,c语言直接使用API进行开发,大多数API都需带入windows句柄作为参数。mfc基于win32添加了c++特性,基于面向对象编程,实际是对windows 大多API的封装库,但内容复杂混乱。包涵一个应用程序的框架,为减少

logging输出日志在文件、控制台的格式设置

formatter = logging.Formatter(fmt=“%(asctime)s%(message)s”,datefmt=‘%Y-%m-%d %H:%M:%S’)fh.setFormatter(formatter)efh.setFormatter(formatter)stdout.setFormatter(formatter)stderr.setFormatter(format