exagear吧 关注:186,352贴子:543,467
  • 11回复贴,共1

没什么用的功能之ex鼠标光标可切换显示或隐藏

只看楼主收藏回复

视频来自:百度贴吧


IP属地:辽宁1楼2023-01-04 20:20回复
    在看光标绘制的时候,偶然发现cp10设置光标显示:调用了viewofxserver的config对象,然后config有个setShowCursor方法。(ed原版提供了这个api,但是没有地方调用到,这也导致操作模式cp10进入容器,退出后切换到默认模式再进容器,光标也会显示,因为默认模式没设置false。或许是还没写完吧,毕竟显示出来就有两个光标分离的问题)
    而且由于ed提供了静态api,你甚至可以在任意位置修改这个属性:
    ((EnvironmentAware)Globals.getApplicationState()).getXServerViewConfiguration().setShowCursor(true/false);
    前提是viewofxserver已经创建了。所以我还是选择在容器内添加按钮切换,这个起码能保证不会获取到null。


    IP属地:辽宁2楼2023-01-04 20:31
    回复
      如果不想通过操作模式的两侧按钮切换,其实也可以添加到容器设置那里,像自定义分辨率那样,添加一个开关。
      但是要自己写布局,而且还要判断当前位置是否能获取到配置实例,所以大概思路就是容器设置那里选好之后先写入preference,然后进入容器的时候再读取preference设置显示或隐藏


      IP属地:辽宁3楼2023-01-04 20:35
      回复
        大佬厉害,这个怎么做到的,求apk。


        IP属地:北京4楼2023-01-05 12:26
        收起回复
          顺便一提,今天看cp10的手势逻辑,它的相对位置移动貌似是自己写的类RelativeToCurrentPositionMouseMoveAdapterAccelerate,这个会根据手指移动的快慢,来决定鼠标移动的灵敏度,还挺有意思的,以前从来没注意过。不过这段jadx反编译的有问题,调用适配器那段重复了两遍,实际上只会执行一遍。
          大致原理应该就是比较两次移动的距离,如果很远(说明手指移动速度很快),就设置一个较大的浮点数值作为权重,否则设置一个较小的值。
          所以如果在这个地方给权重固定很大或者很小,应该就可以实现修改鼠标灵敏度了。只是理论上,因为在此之前我尝试修改了TouchScreenControlsInputWidget会报错move a lot,超过限制。修改OffsetMouseMoveAdapter,手指按下时鼠标位置会乱跑,所以也许改adapter也会出现一些问题。


          IP属地:辽宁5楼2023-01-05 14:02
          回复

            测试了一下,动态修改鼠标灵敏度没什么问题


            IP属地:辽宁6楼2023-01-05 21:55
            回复
              思路:设置监听器,修改seekbar的值的时候修改静态成员变量,然后鼠标移动速度的权重就读取这个静态变量


              IP属地:辽宁7楼2023-01-05 21:56
              回复
                允许两侧按键覆盖到主画面上方:
                xxxInterfaceOverlay里面,一般是用线性布局添加的左侧栏,主画面,右侧栏。水平的线性布局添加子布局时会把子布局自动放到上一个子布局的右侧,保证二者不重叠。
                将线性布局改为相对布局。相对布局中的子布局需要根据另外一个视图来确定自己的位置,可以是其他的子布局,可以是父布局(外层的相对布局)。所以将三者都以父布局为基准,主视图居中,左侧栏与父布局左侧对齐,右侧栏与父布局右侧对齐


                IP属地:辽宁8楼2023-01-30 16:33
                回复
                  兄弟你还有汪洋大盗的电影资源吗,以前你给我的我弄丢了


                  IP属地:山东来自Android客户端9楼2023-02-25 12:45
                  回复
                    好不容易把摇杆也加上了,结果发现一个基础性的大问题:没法处理多指操作。。。因为我把ontouchevent写到每个按钮内部了,而如果一个按钮消耗了这个触摸事件的按下事件,从此往后一直到所有手指松开都不会再有其他按钮接收到这个事件序列。。。(所以说上面那个相对布局将按钮直接放到图形界面上是错的)
                    在思考了半天之后,终于下定决心在父布局处理触摸事件,然后一看ex实际上就是这么做的。。绝大部分都已经写好了。在触摸事件里把事件转化为便于理解的手指数组并向下传递,一个toucharea实例负责一块触摸区域,甚至还写好了将按钮视图贴到屏幕上的代码。。。只是为什么从来没用过?
                    于是顺水推舟就借用了,重写了几个类,大概搞定了
                    现在是手指触屏操作对应全屏toucharea,然后每个按钮有一个toucharea,范围是自己宽高。如果手指按下时没在任何按钮范围内,则走到触屏操作(就是原先的那些鼠标移动啊,调出弹窗菜单啊),否则只走按钮操作。


                    IP属地:辽宁10楼2023-02-28 11:30
                    回复
                      在重写手势状态机的时候终于理解了,为什么默认操作模式要用测时而不是测速,因为有的人没法做到松手前完全不移动手指。。。导致三指触屏,四指触屏这样的操作非常难触发
                      所以,多指触屏事件的路径,能用测时尽量不用测速,如果用测速尽量保证手指移动了也能通过新手指按下事件走向下一个手指的检测


                      IP属地:辽宁11楼2023-03-15 21:11
                      回复