wms
文章平均质量分 80
千里马学框架
安卓架构师,安卓技术专家,android framework
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
wms开发常用调试开发技巧之WMShell的实用命令
这里有几个WMShell下面还有若干个子命令compatui,protolog,splitscreen等,可以使用这些子命令进行更加精确的控制WMShell相关的一些给你,当然如果没有输入任何子命令情况下,那就是默认输入所有WMShell的内部dump输出。在wms窗口开发工程师日常工作中,经常需要和WMShell打交道,比如分屏,自由窗口,startingwindow等都移入到了WMShell中。我们比较熟悉的SplitScreen相关,Pip相关,单手模式等都有相关的dump信息输出。原创 2025-11-30 21:21:01 · 689 阅读 · 0 评论 -
分屏SplitScreen干货技能:如何监听分屏Task进入退出及上下分屏位置
***//***//***/aidl接口主要有两个接口:onStagePositionChanged --代表分屏的stage位置有变化的时候回调,正常都是main side stage 值一般为0,1onTaskStageChanged --代表分屏task的有变化时候回调,比如退出分屏,进入分屏和2个参数stage,visible。stage代表当前taskId处于main还是side stage的位置,值一般为0,1上下分屏,如果-1就是退出分屏。原创 2025-11-13 11:48:06 · 919 阅读 · 0 评论 -
AMS干货技能:如何监听Task前后台切换事件之TaskStackListener原理剖析
上面就是经典的监听系统task相关的情况的TaskStackListener,task变化的相关回调方法很多,它实际上是一个binder的实现端 ITaskStackListener.Stub,它的客户调用端,那当然是ATMS端。下面来展示一下上面的TaskStackListener监听的效果,这块我们就直接使用Launcher代码中TopTaskTracker类来进行实战测试,通过log打印既可以看出Task相关变化。什么时候Activity退出了?当前分屏的显示的是哪个Task,分屏是不是退出了?原创 2025-11-12 12:18:53 · 993 阅读 · 0 评论 -
google官方文档教你使用 Winscope 捕获跟踪记录
您可在本地运行 Winscope 或通过 Web 服务器访问它。您可以使用 Winscope 捕获跟踪记录以进行本地开发和调试。Winscope 使用 adb,后者支持通过 USB 或 Wi-Fi 连接设备。启动 Winscope 后,系统会显示 Collect Traces 界面。原创 2025-11-03 09:42:04 · 1175 阅读 · 0 评论 -
windows系统上aosp15上winscope离线html如何使用?
文章中也说明在aosp15如果直接使用编译好的离线html是有问题的,无法正常显示抓取的Winscope文件。针对这样一个问题对于有些同学来说还是很不友好,因为很可能他们不想搭建node相关的环境,那么针对 aosp15上Winscope离线的html是否真的不可以使用呢?所以核心就是要安装http-server,它的安装有多种方式这里主要介绍npm安装方式。原创 2025-10-31 23:46:18 · 983 阅读 · 0 评论 -
学员投稿:wms优化改进dumpsys层级结构树显示具体层级数字
因为这里的Leaf:3:12本身属于一个范围节点,而且本身这个节点下面就一个子节点,也就是说3-12层都是最后都是只装了一个窗口,没有再细分其他层级窗口节点,所以你可以认为这个3-12是一个整体上的一层既可以。原创 2025-10-26 10:46:28 · 866 阅读 · 0 评论 -
干货分享:aosp13锁屏壁纸部分原理剖析
这里主要就是到DataSystem目录获取对应的目录/data/system/users/0,加上锁屏壁纸对应的文件名字wallpaper_lock_orig,wallpaper_lock,构造出对应的File文件对象。到此服务端返回了fd后就业务完成,下面就是跨进程传递fd客户端,客户端拿到了fd后进行数据写入,这块回到最开头的WallpaperManager.java的setStream方法既可以。这里在设置的壁纸中就有壁纸设置的入口,选择正确壁纸图片,然后可以选着设置锁屏还是桌面壁纸。原创 2025-10-21 12:10:47 · 714 阅读 · 0 评论 -
手把手分析no focused window疑难ANR详细视频+笔记-千里马实战wms专题课程
验证确实发现ANR的Activity窗口的flag是fl=NOT_FOCUSABLE ,所以这个anr可以确诊为属于app自身设置了NOT_FOCUSABLE的flag。可以看到都为false,自然就不会有上面的Focus request,那么为啥这里的canReceive=false,日志也有打印reason。先有新窗口Focus request,再有上一个窗口的Focus leaving,最后有新窗口的Focus entering。所以am_anr日志看到的时间点正确是anr真实发生时间。原创 2025-09-28 11:00:04 · 1040 阅读 · 0 评论 -
安卓闪黑工具:aosp16版本Winscope之搜索功能剖析
在aosp16的Winscope体验时候发现多了数据的搜索功能,也体验了一下,这个新功能本身Winscope也自带了很多指导提示,主要是用来解决Winscope有时候寻找某个数据,某个layer时候的不便,本文来详细介绍一下这块搜索如何使用的内容。例如,在重复字段 visible_region.rect 的两个实例中,top 字段分别由 visible_region.rect[0].top 和 visible_region.rect[1].top 表示。使用左侧面板时,系统会开始搜索跟踪记录。原创 2025-08-27 12:00:29 · 1125 阅读 · 0 评论 -
aosp15/16版本Winscope新特性ViewCapture实战支持
此方法通过避免为每个窗口使用单独的环形缓冲区来避免过度消耗内存,但无法解决针对每个帧在 Perfetto 中存储每个状态的整个视图层次结构的问题。屏幕录制可以直观呈现视图在特定时间的状态,并显示其变化情况,但它们需要大量的 CPU 资源,并且可能会影响性能。此外,ViewCapture 会在视图级别逐帧显示可视化图表,与屏幕录制相比,可更轻松地检查特定时刻的视图状态。ViewCapture 会捕获窗口内各种视图及其属性的相关信息,以便您了解特定时刻的用户体验状态,并跟踪随时间的变化。原创 2025-08-25 01:03:08 · 1142 阅读 · 0 评论 -
必读干货:aosp/安卓16版本winscope编译踩坑过程及相关新特性介绍
Winscope这个开发工具其实每个安卓版本都在更新,而且每个版本的编译方法都有所不同,一般新版本Winscope和设备安卓版本还要进行匹配,不然可能会存在一定的兼容性问题。在以前14,15初期rc版本,其实不会有这个网络问题,那时候不会去Fetch,那么现在这个问题怎么办呢?那只能考虑楼梯啦,具体方法大家自己考虑哈,反正要解决你的terminal可以访问google既可以。今天受vip学员的求助,我们来探索aosp16版本Winscope编译全过程及相关的新特性体验。原创 2025-08-24 00:28:25 · 1579 阅读 · 0 评论 -
安卓闪黑黑屏分析工具:aosp14/15版本Winscope之时间轴部分使用剖析
点击展开图标后,Winscope 会显示一个更大的时间轴,其中包含所有跟踪记录。与迷你时间轴类似,展开式时间轴还提供缩放功能并支持快捷导航,从而增强用户与时间轴互动时的控制和精确度。如果你在某项特定跟踪记录的最后一个时间戳之后点击,Winscope 会加载该跟踪记录的最后一个时间戳。如果您放大过度,可以随时点击放大和缩小按钮旁边的刷新按钮 (时间轴重置按钮),将缩放级别重置为与第一个查看器标签页对应的轨迹长度。注意:箭头导航可在所选时间轴行(如果您点击了时间轴)或打开的跟踪记录标签页的状态之间跳转。原创 2025-08-20 11:04:28 · 836 阅读 · 0 评论 -
干货:aosp14/15版本Winscope各个功能使用详细说明(一)
Show diff 功能会以红色突出显示已移除的元素,以蓝色突出显示已修改的元素,并以绿色突出显示已创建的新元素。一个适用于 Winscope 视图(例如 WindowManager、SurfaceFlinger 和 ViewCapture)的 LAYERS 面板,包含来自跟踪记录的矩形元素,可直观地呈现其在 Z 轴上的位置和顺序。在 SurfaceFlinger 视图中,当在具有多个显示屏的设备上录制数据时,系统会显示一个菜单,其中包含可用的屏幕,以便您仅选择感兴趣的显示屏。原创 2025-08-19 09:02:10 · 1184 阅读 · 0 评论 -
重学WMS层级结构单手OneHanded Feature作用-源码分析
2、单手设置本质就是对上面所有FEATURE_ONE_HANDED的WindowContainer进行位置Y方向的偏移。1、收集所有的Feature为FEATURE_ONE_HANDED的WindowContainer,进行保存到集合。这里OneHandedTransitionAnimator又是由ofYOffset方法导致的构造。那么这里的mDisplayAreaTokenMap又是哪里设置的呢?那么看看这里的leash是哪里传递过来的。那么这里的mLeash又是哪来的呢?原创 2025-07-30 17:24:49 · 678 阅读 · 0 评论 -
重学wms的Feature之FEATURE_WINDOWED_MAGNIFICATION剖析
3、对系统的display的图层会进行Mirror,创建出一个新的MirroRoot图层,下面挂载了系统层级结构的Mirror图层,名字一般会在后面加上“(Mirror)”字样,内容和源图层一样。而且这些图层是有本质上是Mirror了现有的图层,比如桌面和壁纸都显示在放大镜的区域,而且只有放大镜的区域桌面和壁纸是放大的,其他非放大镜区域就是正常显示,那么是如何实现这样呢?但是大家是否有一个很大疑问?2、放大镜功能开启后,会创建对应的Windowless窗口,而且这个窗口有对应的SurfaceView。原创 2025-07-30 16:06:29 · 615 阅读 · 0 评论 -
深入再学wms:系统辅助放大镜功能原理剖析--学员作业
窗口放大功能Android 12 中引入的局部屏幕放大功能为弱视用户提供了经过改进的视图选项。弱视用户可能佩戴有一定度数的眼镜,或者由于环境条件或疾病而暂时难以看清屏幕。暂时性困难可能由过度照明或用户极度疲劳等原因导致。Android 12 中的局部屏幕放大功能让用户能够在整个屏幕放大和局部屏幕放大之间切换。使用局部屏幕放大功能,用户可以在屏幕上拖动放大的局部屏幕来查看不同区域。放大功能启用时,系统会显示一个可让用户切换到整个屏幕放大功能的切换按钮。原创 2025-07-29 12:54:42 · 403 阅读 · 0 评论 -
重学wms:你知道什么是AdjacentTask吗?分屏模式的判断方法
但是大家注意哈,正常情况下确实一般分屏模式的两个task是mode为multi-window,但是大家注意mutilwindow却不一定为分屏模式哈,比如以前的车载桌面那个Activity嵌入显示的模式,也是multiwindow但不是分屏模式。这里的AdjacentTask属于熟悉而又陌生的方法,熟悉在于你经常见到它在framework代码中,陌生在于你可能没有本质理解它什么意思,想不到它的实际场景。简单说就是Task1和Task2分别设置对方成为自己的AdjacentTask,形成如下图的依赖模式。原创 2025-05-20 08:30:00 · 1168 阅读 · 0 评论 -
安卓陌生知识点:IntentFirewall组件启动“防火墙”实战方式
源码位置:组件IntentFirewall的作用IntentFirewall是Android框架中的一个组件,它可以根据XML文件中定义的规则来控制Intent的发送和接收。Intent是Android中用于组件间通信和启动的一种消息对象,它可以携带动作、数据、类别等信息。IntentFirewall可以根据Intent的属性和调用者的信息,决定是否允许或拒绝Intent的传递,从而增强系统的安全性和灵活性。原创 2025-05-02 01:14:38 · 1014 阅读 · 0 评论 -
android如何不修改系统代码拦截Activity启动禁止打开某些应用在车机行车过程?-学员答疑总结
这个学员大概思路就是,可以在桌面applist图标点击进行屏蔽,这个明显不行哈,首先不说改了Launcher代码,最重要是只是applist点击进行屏蔽根本无法覆盖,你能保证你的app启动都是通过桌面点击么,完全有可能其他场景,比如后台service启动,或者其他Activity拉起。注释明显看出IActivityController实际上是监测AMS一些实际的发生接口,一般用于一些测试来监测系统的Activity的一些状态,这个不针对普通第三方app,属于一个隐藏api,不过对于系统app肯定是可见的。原创 2025-04-02 12:32:14 · 990 阅读 · 0 评论 -
你知道桌面和壁纸Wallpaper都接收触摸事件原理吗?--第二篇
更多framework实战干货,请关注下面“千里马学框架”原创 2025-03-27 12:57:09 · 940 阅读 · 0 评论 -
聊一聊安卓WallpaperService壁纸窗口触摸事件接收原理-第一篇
1、壁纸窗口本身在创建时候就已经有创建好对应的InputChannel,而且也会和正常窗口一样会有InputWindow在InputDispatcher,而且位置一般处于最底层2、要让壁纸可以接收事件,需要调用 setTouchEventsEnabled(true),主要是把Window不进行设置NOT_TOUCHABLE的flag。原创 2025-03-26 11:32:43 · 1503 阅读 · 0 评论 -
aosp15上winscope离线html如何使用?
文章中也说明在aosp15如果直接使用编译好的离线html是有问题的,无法正常显示抓取的Winscope文件。针对这样一个问题对于有些同学来说还是很不友好,因为很可能他们不想搭建node相关的环境,那么针对 aosp15上Winscope离线的html是否真的不可以使用呢?不过我们可能不关心原因,因为这块毕竟属于前端的知识,我们更关心应该怎么解决。原创 2024-12-10 23:14:23 · 1828 阅读 · 1 评论 -
Winscope中抓取window相关数据的原理剖析
因为Winscope是一个动态的过程,属于数据是不断变化的而上面只是开始抓取时候有往mBuffer中添加,那么是什么地方可以触发这个WindowTracing源源不断的打入log,即添加到mBuffer中?可以看出来这里会有一个很重要的 mRoot.dumpDebug,mRoot就是RootWindowContainer,它会迭代dump出来整个wms层级结构的所有数据的详细信息,这样也是浏览器上可以绘制层级结构详细信息的关键。然后主要看看WindowManagerShellCommand的相关的方法。原创 2024-11-30 12:02:34 · 1214 阅读 · 0 评论 -
Winscope重要干货知识点RelativeLayer相关的查看方式
实际查看明显发现SurfaceView位于Activity图层下面,和上面winscope的看着是有冲突的,那么这个到底是winscope不准确有问题,还是我们有啥知识点遗漏呢?这个部分就是相当于图层顺序的核心哈,其实winscope就已经有针对这个相对图层有明显的标识。这里winscope明显可以看到SurfaceView图层上相比其他图层还有一写标识上的差异,多了一些RelZ,和RelZParent这样的标识。Background for SurfaceView其实是位于Activity图层的下面。原创 2024-11-17 12:11:36 · 944 阅读 · 0 评论 -
安卓aosp15手机上如何离线获取winscope文件
哈哈当然不是哈,只是aosp15新版本的手机上离线抓取已经一起整合到了perfectto部分了,不和原来一样抓取方式,所以自然原来按钮就去除了,接下来就重点给大家讲解aosp15上如何离线抓取winscope。这篇文章搭建的winscope的方式同样适用于aosp15版本,只需要使用最新的aosp15相关的源码环境的winscope依赖既可以完成编译。然后点击上面的Record trace按钮可以开始抓取了,点击结束抓取后可以看到如下路径data/local/traces已经有相关的文件。原创 2024-11-15 09:30:00 · 883 阅读 · 0 评论 -
安卓手机/平板等设备添加左右两边侧边栏需求项目-学员作业布置
近期有学员朋友求助一个给安卓设备的左右两边要加入侧边栏的需求,这个需求其实还和平时的系统自带的Navigationbar,或者StatusBar等窗口不一样。因为无论是Navigationbar,或者StatusBar都是属于和手机屏幕画面是一起的,而这个左右侧边栏的需求是想把主屏幕画面和侧边栏画面是独立的,二者互不干扰的情况。3、侧边栏的画面不会因为正常手机画面的页面跳转而被覆盖,侧边栏点击相关按钮可以让正常手机画面有页面跳转等操作交互。1、input相关的触摸知识部分。2、wms相关的知识。原创 2024-11-11 09:25:49 · 525 阅读 · 0 评论 -
aosp15系统窗口闪屏原生bug-dim图层相关-你会修改吗?
3、点击跳转复现问题 复现非常简单,MainActivity点击弹出DialogActivity后,再点击DialogActivity弹出第二个DialogActivity,再返回就必现。近期各个大厂已经开始准备aosp15的系统rom适配工作了,应该是想2025年初开发发布相关的新机型,所以慢慢的我们也要开始适应aosp15版本的相关问题的修改和研究哈。刚好千里马的学员朋友们非常期望有这样的一些窗口疑难类的bug,也刚好可以作为。后的一些实战扩展项目给大家进行企业级别的实战哈。原创 2024-11-08 23:32:01 · 1007 阅读 · 0 评论 -
aosp安卓15新特性dump的wms窗口层级树优化的更加美观
明显可以看出以前的wms层级结构树看着不像一颗树,靠的序号和空格在区分,但是层级一多,而且相差不多时候,如果只相差一层空格就不明显了,经常可能需要对半天才对的清楚。近来在体验调试aosp15时候,使用了dumpsys activity containers时候,发现wms层级结构树有一个巨大的变化。更多framework实战干货内容资料,请关注下面“千里马学框架”原创 2024-11-05 11:46:13 · 805 阅读 · 0 评论 -
安卓窗口wms/input小知识NO_INPUT_CHANNEL剖析
NO_INPUT_CHANNEL主要给一些窗口完全不需要消费任何输入事件的情况,经典使用该flag窗口有SnapshotStatingWindow,ActivityRecordInputSink等。原创 2024-10-19 01:02:17 · 997 阅读 · 0 评论 -
android12/13/14版本wms最新面试题:dumpsys window和sf一定会一致么?
针对这个问题,其实就是说window结构树顺序依赖关系和sf的Layer结构树依赖关系居然不同,大家也知道正常情况下肯定要一模一样,因为Layer虽然可以新加入,但是不能说原来的window对应的Layer结构树顺序都乱了,这样可能会造成显示类的bug。基于上面这个2个面试题,其实本质上是对wms还有surfaceflinger相关知识的深入考察,而且问题属于难度等级层次分明,慢慢变大的情况,所以要完全可以拿捏对这问题,基本上wms部分的知识考察就可以得到面试官的高度认可打高分。原创 2024-09-29 00:22:53 · 1504 阅读 · 0 评论 -
安卓framework单屏幕Display秒双/多屏互动相关需求改进-fw窗口多屏sf实战开发
一些vip学员朋友也纷纷求助马哥的实现patch代码,想用于公司的实战项目实现。但是在公司需求实现要求和马哥这边的实现还是会有一些需求上的变更和设备环境差异,所以使用过程中学员朋友们也提出了一些额外的问题。这个问题其实在马哥自己设备上从来没有发现过,但是有的vip学员朋友和我反馈有这种黑屏不显示情况,针对这个问题第一时间进行了分析,主要通过提供的dumpsys SurfaceFlinger来查看。2、因为上下结构已经实现,如果左右结构,针对触摸部分,如果左右结构需要更改触摸区域的宽度变宽。原创 2024-09-08 09:00:00 · 1436 阅读 · 0 评论 -
安卓aosp14上自由窗口划线边框Freeform Caption实战开发-千里马framework实战
因为Caption是属于单独的图层,和Activity的图层都不在一个,而且Caption图层是显示在Activity图层的顶部,而DecorView等明显是Activity图层的一个View,边框红线自然就被Caption栏给遮挡了。即新建一个划线图层处于Caption图层的上面,这样划线图层就可以在自由窗口最顶部进行显示,不会被遮盖,具体实现其实就可以同样参考Caption实现 ,搞一个Windowless的窗口进行绘制。即自由窗口在被触摸放大缩小时候,边框要被画成红色的线条,表示选中。原创 2024-09-05 16:04:49 · 1384 阅读 · 0 评论 -
android 14版本的winscope编译使用-手把手教你编译成功不报错
可以看到报出很多Module not found: Error: Can’t resolve ‘flicker’,Module not found: Can’t resolve 'fs’或者是Module not found: Can’t resolve 'path’等错误,各自缺少库啥的错误,这类问题就是将所以粉丝们卡住的关键啦,这类靠百度一个个改基本不可能哈,还有我们做android的对这块npm报错其实不是那么擅长,修改确实只靠百度。,黑屏等分析时候,有详细讲解winscope使用方法。原创 2024-08-29 17:47:54 · 2930 阅读 · 2 评论 -
如何解决错误Given calling package android does not match caller‘s uid-学员提问
可以看到这里的uid明显是通过 Binder.getCallingUid(),即谁发起的跨进程调用获取的就是谁的uid,所以这个uid明显就是我们app包名为com.example.injectmotion的uid,但是这里的callingPackage明显是android即我们的systemserver,因为这个获取Provider明显是在systemserver进程发起的,不是在app端发起的。更多framework假威风耗:androidframework007。先看看这个源码是怎么写的。原创 2024-08-26 16:27:34 · 1409 阅读 · 0 评论 -
安卓窗口window无法移除屏幕外超过屏幕边界?-wms源码层面深入剖析
这里看看是不是应用层面还是哪里限制了,可以通过wms的Relayout的Attribute属性看看,明显看到有负数坐标,即app层面已经把移除屏幕的x坐标传递到了wms,但是最后wms并没有让这个传递来的坐标生效。已经尽力把窗口想要拖到屏幕外面,但是一直拖到不生效,只能在屏幕内部进行移动,这个到其实很奇怪,因为对于LayoutParam的x,y坐标是有进行设置的,为啥设置了就不生效呢?这里再查阅代码发现有个二fitToDisplay,即这里看着有个适配屏幕操作,也会改变这个坐标,这里也加入一下打印。原创 2024-08-23 11:57:01 · 1116 阅读 · 0 评论 -
安卓WMS层面分析窗口的位置变化-安卓framework实战开发
在悬浮窗口开发过程中,窗口往往都不是铺满整个屏幕,一般都是一个小窗口,这个时候往往会加上一个自由拖动的功能,例如如下图所示:毫秒表就可以上下自由移动,那么大家有没有想过这个自由移动功能是如何实现的呢?原理到底是啥呢?首先针窗口想过位置移动,最先想到应该是通过dumpsys window windows和dumps SurfaceFlinger来查看dumpsys window windows可以看到这里的mAttrs的Y值都变大的。dumpsys SurfaceFlinger来看看情况可以看到s原创 2024-08-22 17:13:23 · 1441 阅读 · 0 评论 -
android framework Display屏幕相关实战作业探讨
这个比较常见一些,比如在一些背景大屏幕上,其实厂家一般没办法直接做出一个巨大屏幕的背景,主要原因还是因为面板尺寸太大,成本太高,而且也不是很常用,只是在很小一部分景使用。这个需求其实嵌入式相关很多有现成的方案,我们这里实现方式就不是说嵌入式层面方案,而是让大家考虑一下在framework层面,应该如何实现?近来学员vip群里讨论屏幕相关的需求比较多,有2个需求属于粉丝朋友都比较感兴趣一起讨论的,这里刚好做一个记录,方便其他粉丝朋友看看。2、车载多屏互动相关知识。3、input相关知识。原创 2024-08-16 14:39:00 · 842 阅读 · 0 评论 -
导航手势导航键在input部分的差别
简单说就是在多屏互动过程中,需要把Activity从这个屏幕移动到另一个屏幕,必然就导致原来屏幕的Activity相关会有移除,体现在input端就是相关的InputWindow会被remove,这个时候input派发事件发现根本没有可以用的window了,所以自然就无法派发事件了,因为不知道派发给谁。这个其实就需要对相关的InputDispatch代码进行详细的分析了。只能拖到一小段,然后在接收事件的部分就收到了一个CANCEL事件,但是在导航手势模式下却没有该问题。原创 2024-08-05 16:31:51 · 585 阅读 · 0 评论 -
安卓车载多屏互动副屏底部有黑线条NavigationBar分析
在学习了马哥的wms和多屏互动课程后,大家普遍都可以跟着做出如下图效果的多屏互动原创 2024-08-02 16:35:08 · 1108 阅读 · 0 评论 -
视频逐帧播放查看神器-android闪黑闪白等分析辅助工具
这类问题要分析的话就不得不需要对设备录屏,然后对录屏进行逐帧播放查看现象,看看到底是怎么回事,比如闪黑,闪白看肯定就是中间有一帧黑了,或者白了,导致前后帧的视觉差异太大,但是这个又是一瞬间的现象,导致给人就是闪黑,闪白现象。所以就不得不先拿录制的视频来进行分析,分析就需要对视频进行逐帧进行播放,那么下面马哥就给大家推荐几个工作中可以逐帧播放的视频播放器。这个是个完全命令行的播放器,不可以鼠标操作,具体逐帧播放其实是有按键可以控制的,这个按键就是“s”这个按键。点击 “工具”进入“自定义界面”原创 2024-07-29 22:06:44 · 4495 阅读 · 0 评论
分享