@@ -113,7 +113,7 @@ Assists.getAllNodes().forEach { it.logNode() }
113113## 基础
114114| 类| 描述|
115115| -| -|
116- | [ AssistsService] ( # ) | AccessibilityService服务类|
116+ | [ AssistsService] ( #assistsservice ) | AccessibilityService服务类|
117117| [ AssistsCore] ( #assistscore ) | 基础类,对AccessibilityService API进行一系列的包装便于调用|
118118| [ AssistsWindowManager] ( # ) | 浮窗管理,管理浮窗添加、删除、触控手势切换、隐藏、浮窗toast|
119119| [ AssistsWindowWrapper] ( # ) | 浮窗包装,对浮窗移动、缩放做统一包装|
@@ -129,7 +129,24 @@ Assists.getAllNodes().forEach { it.logNode() }
129129| [ StepImpl] ( # ) | 步骤实现类,用于实现自动化脚本时继承此类|
130130
131131### AssistsService
132+ 无障碍服务核心类,负责处理无障碍服务的生命周期和事件分发,提供全局服务实例访问和监听器管理功能。
132133
134+ #### 重要属性
135+
136+ | 属性| 描述|
137+ | -| -|
138+ | ` instance ` | 全局服务实例。用于在应用中获取无障碍服务实例,当服务未启动或被销毁时为null|
139+ | ` listeners ` | 服务监听器列表。使用线程安全的集合存储所有监听器,用于分发服务生命周期和无障碍事件|
140+
141+ #### 生命周期方法
142+
143+ | 方法| 描述|
144+ | -| -|
145+ | ` onCreate() ` | 服务创建时调用,初始化全局服务实例|
146+ | ` onServiceConnected() ` | 服务连接成功时调用,初始化服务实例和窗口管理器,通知所有监听器服务已连接|
147+ | ` onAccessibilityEvent(event: AccessibilityEvent) ` | 接收无障碍事件,更新服务实例并分发事件给所有监听器|
148+ | ` onUnbind(intent: Intent?) ` | 服务解绑时调用,清除服务实例并通知所有监听器|
149+ | ` onInterrupt() ` | 服务中断时调用,通知所有监听器服务已中断|
133150
134151### AssistsCore
135152> * 通过Assists对界面进行操作和获取信息,需要先查看界面有哪些元素、元素的结构、元素信息,有了这些才能通过Assists去获取元素并操作。如何查看可参考[ 这里] ( https://blog.csdn.net/weixin_37496178/article/details/138328871?spm=1001.2014.3001.5502 ) *
@@ -539,4 +556,117 @@ AccessibilityNodeInfo.nodeGestureClick(
539556参数:
540557- ` tag ` :日志标签,默认为LOG_TAG("assists_log")
541558
542- ---
559+ ---
560+
561+ ### AssistsWindowManager
562+ 浮窗管理器,提供全局浮窗的添加、删除、显示、隐藏等管理功能。
563+
564+ #### 重要属性
565+
566+ | 属性| 描述|
567+ | -| -|
568+ | ` windowManager ` | 系统窗口管理器|
569+ | ` mDisplayMetrics ` | 显示度量信息|
570+ | ` viewList ` | 浮窗视图列表,使用线程安全的集合|
571+
572+ #### 核心方法
573+
574+ | 方法| 描述|
575+ | -| -|
576+ | ` init(accessibilityService: AccessibilityService) ` | 初始化窗口管理器|
577+ | ` getWindowManager() ` | 获取系统窗口管理器实例|
578+ | ` createLayoutParams() ` | 创建默认的浮窗布局参数|
579+ | ` hideAll(isTouchable: Boolean = true) ` | 隐藏所有浮窗|
580+ | ` hideTop(isTouchable: Boolean = true) ` | 隐藏最顶层浮窗|
581+ | ` showTop(isTouchable: Boolean = true) ` | 显示最顶层浮窗|
582+ | ` showAll(isTouchable: Boolean = true) ` | 显示所有浮窗|
583+ | ` add(windowWrapper: AssistsWindowWrapper?, isStack: Boolean = true, isTouchable: Boolean = true) ` | 添加浮窗包装器|
584+ | ` add(view: View?, layoutParams: WindowManager.LayoutParams, isStack: Boolean = true, isTouchable: Boolean = true) ` | 添加浮窗视图|
585+ | ` push(view: View?, params: WindowManager.LayoutParams) ` | 添加浮窗并隐藏之前的浮窗|
586+ | ` pop(showTop: Boolean = true) ` | 移除最顶层浮窗并显示下一个浮窗|
587+ | ` removeView(view: View?) ` | 移除指定浮窗|
588+ | ` contains(view: View?) ` | 检查指定视图是否已添加为浮窗|
589+ | ` contains(wrapper: AssistsWindowWrapper?) ` | 检查指定浮窗包装器是否已添加|
590+ | ` isVisible(view: View) ` | 检查指定浮窗是否可见|
591+ | ` updateViewLayout(view: View, params: ViewGroup.LayoutParams) ` | 更新浮窗布局|
592+ | ` touchableByAll() ` | 设置所有浮窗为可触摸状态|
593+ | ` nonTouchableByAll() ` | 设置所有浮窗为不可触摸状态|
594+
595+ #### 扩展方法
596+
597+ | 方法| 描述|
598+ | -| -|
599+ | ` WindowManager.LayoutParams.touchableByLayoutParams() ` | 设置布局参数为可触摸状态|
600+ | ` WindowManager.LayoutParams.nonTouchableByLayoutParams() ` | 设置布局参数为不可触摸状态|
601+ | ` ViewWrapper.touchableByWrapper() ` | 设置浮窗包装器为可触摸状态|
602+ | ` ViewWrapper.nonTouchableByWrapper() ` | 设置浮窗包装器为不可触摸状态|
603+ | ` String.overlayToast(delay: Long = 2000) ` | 显示一个临时的Toast样式浮窗|
604+
605+ #### ViewWrapper类
606+ 浮窗视图包装类,用于管理浮窗视图及其布局参数
607+
608+ | 属性| 描述|
609+ | -| -|
610+ | ` view ` | 浮窗视图|
611+ | ` layoutParams ` | 布局参数|
612+
613+ ### AssistsWindowWrapper
614+ 浮窗包装类,为浮窗提供统一的外观和交互行为,包括:
615+ 1 . 可拖动移动位置
616+ 2 . 可缩放大小
617+ 3 . 可关闭
618+ 4 . 支持自定义初始位置和大小限制
619+
620+ #### 构造参数
621+
622+ | 参数| 描述|
623+ | -| -|
624+ | ` view ` | 要包装的视图|
625+ | ` wmLayoutParams ` | 窗口布局参数,可选|
626+ | ` onClose ` | 关闭回调函数,可选|
627+
628+ #### 属性配置
629+
630+ | 属性| 描述| 默认值|
631+ | -| -| -|
632+ | ` minHeight ` | 最小高度限制| -1(无限制)|
633+ | ` minWidth ` | 最小宽度限制| -1(无限制)|
634+ | ` maxHeight ` | 最大高度限制| -1(无限制)|
635+ | ` maxWidth ` | 最大宽度限制| -1(无限制)|
636+ | ` initialX ` | 初始X坐标| 0|
637+ | ` initialY ` | 初始Y坐标| 0|
638+ | ` initialXOffset ` | X轴偏移量| 0|
639+ | ` initialYOffset ` | Y轴偏移量| 0|
640+ | ` initialCenter ` | 是否初始居中显示| false|
641+ | ` showOption ` | 是否显示操作按钮(移动、缩放、关闭)| true|
642+ | ` showBackground ` | 是否显示背景| true|
643+ | ` wmlp ` | 窗口布局参数| 默认布局参数|
644+
645+ #### 核心方法
646+
647+ | 方法| 描述|
648+ | -| -|
649+ | ` ignoreTouch() ` | 设置浮窗为不可触摸状态,此状态下浮窗将忽略所有触摸事件|
650+ | ` consumeTouch() ` | 设置浮窗为可触摸状态,此状态下浮窗可以响应触摸事件|
651+ | ` getView() ` | 获取浮窗的根视图|
652+
653+ #### 内部实现
654+
655+ ##### 触摸事件监听器
656+
657+ 1 . 缩放触摸事件监听器(onTouchScaleListener)
658+ - 处理浮窗的缩放操作
659+ - 记录初始触摸位置和布局尺寸
660+ - 根据触摸移动计算新的宽高
661+ - 应用尺寸限制条件
662+
663+ 2 . 移动触摸事件监听器(onTouchMoveListener)
664+ - 处理浮窗的拖动移动操作
665+ - 根据触摸位置更新浮窗坐标
666+ - 考虑状态栏高度的偏移
667+
668+ ##### 视图绑定(viewBinding)
669+ - 初始化浮窗的布局和行为
670+ - 处理初始位置和显示
671+ - 设置移动、缩放和关闭按钮的事件监听
672+ - 根据配置显示或隐藏操作按钮和背景
0 commit comments