- 在 QPMFloatViewType 中新定义一种类型:TYPE_FLOAT_VIEW_NEW_TYPE,并添加到 @StringDef 中
- 在 QPMFloatViewManager 的 构造方法中,注册 TYPE_FLOAT_VIEW_NEW_TYPE
- 参数1:新建的类型
- 参数2:开关页面显示的名字
- 参数3:开关页面显示的二级提示字符串,可为null
- 参数4:开关是否默认打开
- 参数5:开关的默认排序,也对应了在悬浮窗上的展示顺序,注意不要和已有功能排序相同,不然可能会出现无法预知的问题
typeBeans.add(new QPMFloatViewBean(QPMFloatViewType.TYPE_FLOAT_VIEW_NEW_TYPE, "开关显示名", "开关二级提示,可为null", false, 18));
- 在 QPMRAnalysisResult 中新建对应的数据实体类型
- 在 analysis 包下新建一个 Analysis,用于将数据设置在 QPMRAnalysisResult 中
- 在 floatview/renderer 包下新建一个 Renderer,继承 BaseRenderer 或实现 IFloatViewRenderer,完成布局与数据的绑定操作。可参考同类 Renderer 的实现方式
- 在 executor 包下新建一个 Executor,实现 IExecutor 接口,在 exec 方法中完成数据的获取。可参考同类 Executor 的实现方式
- 在 QPMDaemonComponent 类的构造方法中,添加刚才新建的执行器
executors.add(new QPMNewTypeExecutor());
- 新增的 Executor 如果放在 QPMDaemonComponent 中,则默认是在子线程中执行的
- 如果需要单独开一个线程,不要直接 new Thread,要用 QPMThreadManager 进行新建线程操作,否则会影响悬浮窗上线程数的精确度
- 如果默认的 QPMDaemonComponent 不能满足需求,则在 service 包下新建 Component 类,继承 QPMBaseService,然后在 QPMFloatViewManager 类中完成这个 Component 的开启与关闭操作
- 如果新建的选项在开关页面展示上有特殊处理,比如 API > xx 才展示,则在 FloatViewSwitchFunction 的 initData 方法中特殊处理
- 如果开启或关闭开关后有特殊的触发事件,可以在 FloatViewSwitchFunction 的 initData 方法中添加回调,也可以在 QPMFloatViewManager 的 refreshFloatViewAndComponent 中批量处理