dreamqu 发表于 2022-4-20 15:33:44

求助!喷灯插件窗口问题(已解决 附解决方案)

本帖最后由 dreamqu 于 2022-4-27 01:19 AM 编辑

喷灯fullme插件
喷灯BlowTorch之SurfBox插件 Fullme图片显示!

框架:
trigger获得fullme url (已解决)
测试利用.fmt (key)指令
      ↓
利用java get下载图片(已解决)
      ↓
获得图片地址加载为bitmap(已解决)
      ↓
(已解决)渲染到窗口:
问题:1.findviewbyid(6666)获得主output页面 添加ImageView或者ImageButton(备用)
2.绘制新window放在右侧 再添加Relativelayout布局或者线性 再加ImagwView或者直接setbackground

现在我根据作者提供的chatwindow创建了window
但是奇怪的是 根本不报错 不知道为什么
开发者文档中写的chatwindow分为window和server两个部分
chat_window.xml – This file contains the hard data for the configuration of the plugin, the triggers, windows, options and scripts. It contains some stub scripts that call doFile() to run the scripts that are included as individual files.

chat_server.lua – Contains the code relevant to bootstrapping, options handling and data processing. This is the script that is executed in the “background” and can not do anything “UI related” mostly all this script does is manage the buffers that are used to keep track of the chat data.
根据他的描述,server中不能做任何关于UI的操作
但根据我实践 window中也不能做Note (大问题,我个人认为根本没加载上window.lua)
并且API的WindowXCallS和PluginXCallS同样无效

问题2: getContext()时 view 为nil
作者写的也是直接用view拿context
翻来覆去也没看见他在哪里定义了view

解决方法:
在我之前写的代码中,并未在xml里声明windowscript,所以不会有view作为window窗口
view实际上是绘制的window,类型为相对布局,全局变量
在作者的chatwindow中有较详细的调用,但是很混乱

在这里解析一下:view获取为chatoutputview 在后面用replacementView叠加了一层view作为真正可以操控的view,param与view同步
我顺着作者的思路也同样制作了replacementView

但我发现更棒的是,可以通过view获得父控件 也就是我所需要的findViewById(6666)主输出布局
随后我就通过view:getParentView()拿到了根布局(我命名为rootnewView)
在根布局中addView(replacementView)则可以直接把window扔在主页上 正好符合我们的意愿:浮动fullme

关于bug修复:由于使用了多线程去获取图片,线程与父线程无法交流
这就会产生一个问题 图片还没有加载,findfullme的window就先显示了,即使加载 也是上一次的fmt.jpg
另外 多次删除加载view和赋值id会导致内核崩溃
所以我将removeView全部重写成了view.GONE和view.VISIBLE的形式
框架:ffm获取图片 → 图片uri给window渲染 →ffm结束→展示window
既避免了同时加载的交错,也解决了重复刷新的多线程问题

其他反馈和你的想法请联系dream.qu@qq.com

xiaobaichi 发表于 2022-4-20 16:13:31

大神级人物,我看着就是天书,膜拜
页: [1]
查看完整版本: 求助!喷灯插件窗口问题(已解决 附解决方案)