You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端PESDK自定义FilterToolPanel点击事件并关联编辑器问题

Android端关联自定义FilterToolPanel到图片编辑器Activity的解决方案

要把你重写的CustomFilterToolPanel关联到图片编辑器Activity,核心是在启动编辑器时通过配置Builder替换默认的ToolPanel实现,具体步骤如下:

  1. 调整自定义FilterToolPanel的构造函数(可选但推荐)
    避免构造函数参数不匹配的问题,利用库内置的contextProvider获取上下文,无需手动传入:
class CustomFilterToolPanel(stateHandler: StateHandler) : FilterToolPanel(stateHandler) {
    private val context: Context
        get() = contextProvider.context

    override fun onItemClick(item: AbstractIdItem?) {
        // 捕获选中的滤镜ID,执行自定义逻辑
        val filterId = item?.id ?: return
        context.toast("选中滤镜:$filterId")
        
        // 保留原有的滤镜应用逻辑
        super.onItemClick(item)
    }
}
  1. 在启动图片编辑器时指定自定义ToolPanel
    在调用图片编辑器的代码中,通过PhotoEditorBuilder的setToolPanelClass方法,将默认的FilterToolPanel替换为你的自定义类:
// 定义请求码(根据项目需求设置)
private const val EDITOR_REQUEST_CODE = 1001

// 启动图片编辑器的方法
fun startImageEditor(imageUri: Uri) {
    val config = Configuration.Builder(this)
        // 添加你的其他配置(如权限、可用工具等)
        .build()

    PhotoEditorBuilder(this)
        .setImage(imageUri)
        .setConfiguration(config)
        // 关键:替换为自定义的FilterToolPanel
        .setToolPanelClass(CustomFilterToolPanel::class.java)
        .startForResult(this, EDITOR_REQUEST_CODE)
}
  1. 处理编辑器返回结果(可选)
    如果需要在滤镜选择后做后续业务逻辑,也可以在Activity的onActivityResult(或新版的registerForActivityResult)中补充处理,但上述onItemClick方法已经能直接捕获滤镜选中事件。

内容的提问来源于stack exchange,提问作者Deepak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 07:06:11