Android——GT库-日志工具

news2025/1/23 17:53:13

GT库在创造出来初期,里面的日志工具就一直存在的,经历了很久的迭代变更,当目前的最新版本,日志工具已经创造出更高级的调试日志方式了,接下来咋们来看看GT库中的日志工具具体使用方法吧。

  使用GT库里的,当然需要先依赖好GT库啦:

GitHub - 1079374315/GTContribute to 1079374315/GT development by creating an account on GitHub.https://github.com/1079374315/GT

普通日志:

GT.log("普通日志1号");

效果图:

这样的日志是不是很平淡也很普通,然后我们加入日志过滤 GT_i 试试后的效果图如下:

日志标题:

GT.log("日志标题", "普通日志2号");

效果图:

索引日志:

GT.logt("索引日志3号");

效果图:

 这就是 索引日志 我们可以看到新增了一个 蓝色的索引 ,我们只需要单击这个蓝色的索引就会自动跳转到这行日志的代码上,效果如下:

 这样的日志可以让咋们轻易的找到这个日志是出自那里的,极大的方便了我们调试

详细日志:

GT.logs("详细日志4号");

效果图:

 这个日志可以将这条日志所在的与所在的方法以及所在行数都显示出来,日志已经够详细了

全部日志:

GT.logAll("全部日志");

 效果图:

 这种日志是专门显示 网络请求下来的json格式数据的。

这种 全部日志 也是支持日志标题的

GT.logAll("请求下来的json","请求下来的json数据");

错误日志:

GT.err("错误日志1号");
GT.err("日志标题", "错误日志2号");
GT.errt("错误日志3号");
GT.errs("错误日志4号");
GT.errAll("全部日志");
GT.errAll("请求下来的json","请求下来的json数据");

效果图:

 这种错误日志,唯一改变的就是 日志颜色 与 日志过滤标识 GT_e

当然,日志过滤标识 可以直接改为 GT_  这样的话,普通日志 与 错误日志 都能看到了

效果图:

上面的日志中,其中最常用使用的日志类型是索引日志:

GT.logt("索引日志3号");

因为这种日志能显示 出自那个类 是类的多少行 且带有索引功能 ,这样的日志也非常简洁。

接下来,将来介绍GT库中 悬浮日志 功能的介绍了。

悬浮调试工具:

我们先看看效果图:

这是GT库中的 悬浮日志,形状是仿照了 手机 来制作的,

目前支持的基本功能有:

1.搜索应用

2.隐藏缩小

3.扩大放大

4.关闭悬浮日志

5.下拉状态栏

6.设置 悬浮日志 透明度

7.修改 悬浮日志 宽高

8.横屏旋转

9.开启全屏,隐藏下面的操作菜单

10.重置  悬浮日志 

悬浮日志 桌面上显示的功能都是安卓 app 图标来显示的,目前默认提供的功能有:

1.日志图标      日志动态查看

2.数据库图标   数据库可视化

3.Fragment栈  栈内页面可视化(如果是使用了 GT库 Fragment封装那就可以用这个查看)

其他的 图标均为手机其他安装的app

上面是显示日志的效果图,悬浮日志使用的场景有很多,非常适合打包后去机顶盒上调试,但其他使用场景,还得看每个人具体的想法,看起来很华丽的 悬浮日志 ,那实现代码是咋样的呢?

实现代码:

第一步:先添加悬浮窗权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

第二步:核心代码

public class MainActivity extends AppCompatActivity {

    private TextView tv;
    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = findViewById(R.id.tv);
        btn = findViewById(R.id.btn);

        tv.setOnClickListener(view -> {
            GT_Floating.setType_screenType(-1);//设置悬浮窗显示类型
            GT.startFloatingWindow(MainActivity.this, GT_Floating.class);//启动悬浮窗
        });

        btn.setOnClickListener(view -> {
            GT.log("索引日志:" + GT.GT_Date.getDateTime_CH() + "\n");//普通日志
        });
    }

}

当启动悬浮窗后,GT库所有的日志均可以直接在悬浮窗中显示。

当然,悬浮日志 里的图标是可以由我们自定义的,并且包括里面具体的图标功能,我们甚至也能自定义一个王者图标,然后里点击我们的王者图标后快速的切换复活装备。

自定义图标 效果图:

 我给这个图标设置了单击事件与长按事件,核心实现代码如下:

public class MainActivity extends AppCompatActivity {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = findViewById(R.id.tv);
        tv.setOnClickListener(view -> {
            //图标支持 本地资源也支持网络资源 网络图片资源:https://img2.baidu.com/it/u=2143833621,3783097164&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500
            GT_Floating.addApp(new AppBean("王者换装", com.gsls.gt.R.mipmap.gt_logo,"wzhz","longWzhz", "", new GT.OnListener<Object>() {
                @Override
                public void onListener(Object... obj) {
                    //单击或长按后触发的逻辑
                    if (obj != null && obj.length > 0) {
                        switch (String.valueOf(obj[0])) {
                            case "wzhz":
                                GT.toast(MainActivity.this, "切换复活甲");
                                break;
                            case "longWzhz":
                                GT.toast(MainActivity.this, "切换名刀");
                                break;
                        }
                    }
                }
            }));
            GT_Floating.setType_screenType(-1);//设置悬浮窗显示类型
            GT.startFloatingWindow(MainActivity.this, GT_Floating.class);//启动悬浮窗
        });
    }
}

实现起来代码甚少,逻辑也很简单吧。

当然还有另一种触发事件的方式如下:

public class MainActivity extends AppCompatActivity {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        GT.EventBus.registers(this);//注册订阅者
        tv = findViewById(R.id.tv);
        tv.setOnClickListener(view -> {
            //图标支持 本地资源也支持网络资源 网络图片资源:https://img2.baidu.com/it/u=2143833621,3783097164&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500
            GT_Floating.addApp(new AppBean("王者换装", com.gsls.gt.R.mipmap.gt_logo, "wzhz", "longWzhz", ""));
            GT_Floating.setType_screenType(-1);//设置悬浮窗显示类型
            GT.startFloatingWindow(MainActivity.this, GT_Floating.class);//启动悬浮窗
        });
    }

    @GT.EventBus.Subscribe
    public void wzhz() {
        GT.toast(MainActivity.this, "切换复活甲");
    }

    @GT.EventBus.Subscribe
    public void longWzhz() {
        GT.toast(MainActivity.this, "切换名刀");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        GT.EventBus.unregisters(this);//取消订阅者
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web表单设计器的优点体现在哪?

在数字化管理越来越规范的当下&#xff0c;拥有一款优质高效的低代码开发平台&#xff0c;确实能给企业提质增效带来更大的帮助。很多客户朋友会问道&#xff1a;web表单设计器都有哪些特点&#xff1f;为什么能在企业的现代化办公管理中起到巨大的作用&#xff1f;今天&#x…

Linux终端远程工具xshell,xftp,mobasterm

目录 软件介绍 1.xshell 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 第四步&#xff1a; 第5步&#xff1a; 2.xftp 第一步&#xff1a; 第二部&#xff1a; 第三步&#xff1a; 3.mobasterm 全能终端神器——MobaXterm 第一步&#xff1a; 第二步&a…

C1083无法打开包括文件: “atlbase.h”: No such file or directory

在打开别人的项目的过程中遇到了“atlbase.h”无法打开的问题&#xff0c;在此记录一下。1.下载ATL生成工具与缓解只下载ATL生成工具后面还会报错&#xff0c;直接下载下载ATL生成工具与缓解一步到位。下载的入口在&#xff1a;工具--->获取工具与功能。需要注意的是&#x…

Guitar Pro2023Win/Mac中文吉他/贝斯打谱识谱软件

Guitar Pro 是一款曲谱阅读器。以 GTP 结尾的曲谱文件都必须用 Guitar Pro 才能打开。Guitar Pro 凭借着其便利的制谱和读曲谱环境&#xff0c;在各大谱库论坛里都占据着一席之地&#xff0c;喜欢吉他的朋友一定略有耳闻。早几年该作者将它移植到了移动平台&#xff0c;现在你也…

7-2国王游戏

题目&#xff1a; 恰逢 H 国国庆&#xff0c;国王邀请 n 位大臣来玩一个有奖游戏。 首先&#xff0c;他让每个大臣在左、右手上面分别写下一个整数&#xff0c;国王自己也在左、右手上各写一个整数。 然后&#xff0c;让这 n 位大臣排成一排&#xff0c;国王站在队伍的最前面。…

应用层——Web和HTTP

目录 1. HTTP概况 1.1 Web页面简介 1.2 URL-统一资源定位器 1.3 HTTP协议 2. HTTP连接的两种类型 2.1 HTTP非持久性连接(Non-persistent HTTP) 2.2 HTTP持久性连接(Persistent HTTP) 2.2.1 无流水(pipelining)的持久性连接 2.2.2 带有流水机制的持久性连接 3. HT…

一站式开发平台赋能办公全场景

近几年&#xff0c;数字化办公迎来了新的机遇&#xff0c;根据亿欧智库《2022中国数字化办公市场研究报告》推算&#xff0c;数字化办公2021年的市场规模达到973.89亿元&#xff0c;至2025年将达到1768.16亿元&#xff0c;整体增速保持平稳&#xff0c;2018-2025年的CAGR为15.8…

Mybatis 框架搭建封装JDBC,实现sql语句

目录 1、maven新建一个工程​编辑 2、添加POM.XML配置文件 3、创建实例包 4、创建一个环境资源根目录 5、配置环境文件 6、创建接口&#xff0c;添加方法 7、编写sql语句 8、创建测试类 8.1 、定义工厂模式 8.2 、定义会话 8.3、定义对象 8.5、获取Builder建造工厂 …

LAB3 EIGRP1实验

1 实验拓扑&#xff1a; 2 实验要求&#xff1a; 1>.R1-R3环回口0:192.168.100.x/32。 2>.R1上采用手动汇总的命令&#xff0c;汇总4条环回口成一条。 3>.R1上下发一条默认路由。 4>.实现R1到R2的环回口路由非等价负载。 5>.as 90都使用eigrp认证。 6>…

css动画效果之transition

transition-property规定设置过渡效果的 CSS 属性的名称。属性名属性值none没有属性会获得过渡效果。all所有属性都将获得过渡效果。property定义应用过渡效果的 CSS 属性名称列表&#xff0c;列表以逗号分隔。使用方式transition-property: width,background;/* 多个效果可用逗…

设计模式之装饰模式

1.前言 装饰模式&#xff1a;动态的给一个类添加一些额外职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更加灵活。 装饰模式属于结构型模式&#xff0c;它是作为现有的 类的⼀个包装&#xff0c;允许向⼀个现有的对象添加新的功能&#xff0c; 同时⼜不改变其…

Spring创建和使用 (存储和读取) -- 1

Spring创建和使用 存储和读取 -- 1一、创建 Spring 项目1.1 创建⼀个 Maven 项目1.2 添加 Spring 框架支持1.3 添加启动类二、存储 Bean 对象2.1 创建 Bean2.2 将 Bean 注册到容器三、获取并使用 Bean 对象3.1 创建 Spring 上下文3.2 获取指定的 Bean 对象3.3 使用 Bean四、总结…

数据结构-第六期——并查集(Python)

目录 认识并查集 经典应用: 应用场景 并查集的操作 初始化 代码实现 合并 代码实现 查找 代码实现 查找代码【图解】 有多少个集&#xff08;帮派&#xff09;? 复杂度 查询的优化:路径压缩 【代码】用递归实现 并查集:初始化、查找、合并代码 蓝桥杯…

ES6之Promise

Promise是异步操作的一种解决方案 // 1.认识Promisedocument.addEventListener(click,()>{console.log(这里是异步的);});console.log(这里是同步的); Promise一般用来解决层层嵌套的回调函数&#xff08;回调地狱&#xff09;的问题 <!DOCTYPE html> <html lan…

JVM垃圾回收机制、JVM垃圾回收算法、JVM CMS与G1垃圾收集,JVM内存模型

C C 需要自己回收垃圾 重复回收&#xff1a; 回收掉别人的东西 忘记回收&#xff1a; 内存泄漏 Java虚拟机做自动化回收 垃圾回收器 Root Searching&#xff08;根可达&#xff09; GC Algorithms(垃圾回收算法) Mark-Sweep(标记清除) 缺点&#xff1a;碎片化&#xff0c;一…

Lua C接口编程(一)

引言 skynet 和 openresty 都是深度使用lua的典范&#xff0c;学习lua不经要学会基本语法&#xff0c;还要学会C语言与Lua交互。lua的一大优点就是能和c/c无缝连接&#xff0c;而且可以在不需要重复编译c/c的情况下可以修改lua文件并且起作用&#xff0c;当我们的项目文件很大…

【面试题】做了一份前端面试复习计划,保熟~

大厂面试题分享 面试题库前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面试题库前言以前我看到面试贴就直接刷掉的&#xff0c;从不会多看一眼&#xff0c;直到去年 9 月份我开始准备面试时&#xff0c;才发现很多面试经验贴…

Kubernetes(k8s) 笔记总结(二)

提示&#xff1a;针对kubernetes的工作均衡学习。 文章目录1. Kubernetes 创建资源方式2. Kubernetes 操作NameSpace3. Kubernetes的 Pod应用3.1 Pod的 解释3.2 通过命令行来创建一个pod3.3 配置文件方式创建一个Pod3.4 dashboard 可视化操作Pod3.5 针对Pod的一些细节操作3.6 P…

如何评估PMO (项目管理办公室)的实施效果?

使用有效的组织战略、方法和技术&#xff0c;可以成功启动并制度化企业范围的PMO (项目管理办公室)。 一个企业范围内的PMO可以使用成熟的技术启动。 但你应该开发和使用适当的评估工具&#xff0c;以确定你的PMO实施的项目管理过程的有效性。这些工具可以包括正式的管理评估…

黑马学ElasticSearch(四)

目录&#xff1a; &#xff08;1&#xff09;RestClient操作文档-新建文档 &#xff08;2&#xff09;RestClient操作文档-查询文档 &#xff08;3&#xff09;RestClient操作文档-更新文档 &#xff08;4&#xff09;RestClient操作文档-删除文档 &#xff08;5&#xff…