平平无奇猪猪侠 2023-11-30 18:37 采纳率: 0%
浏览 1

glide-webp链接库加载异常

我的项目在执行System.loadLibrary("glide-webp")时遇到如下错误:
这个so库文件是最新glide-webpdecoder 生成的

img


这个原因一直没解决,有谁知道如何解决,困扰一周了,要崩溃了

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-30 21:25
    关注

    【相关推荐】



    • 这篇博客: Glide系列-Webp如何被解析使用中的 如何驱动webp播放 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

      通过前面的步骤,目前ImageView已经可以渲染第一帧的画面了,那如何让wepb内容动起来呢?答案在WebpDrawable,在WebpDrawable变得可见和动画播放方法被回调时,会调用startRunning方法,而后会根据frameloader去加载下一帧数据:

      private void startRunning() {
              if(state.frameLoader.getFrameCount() == 1) {
                  invalidateSelf();
              } else if(!isRunning) {
                  isRunning = true;
                  state.frameLoader.subscribe(this);
                  invalidateSelf();
              }
      
          }
          private void start() {
              if (!isRunning) {
                  isRunning = true;
                  isCleared = false;
                  loadNextFrame();
              }
          }
           private void loadNextFrame() {
              if (isRunning && !isLoadPending) {
                  if (startFromFirstFrame) {
                      gifDecoder.resetFrameIndex();
                      startFromFirstFrame = false;
                  }
      
                  isLoadPending = true;
                  int delay = gifDecoder.getNextDelay();
                  long targetTime = SystemClock.uptimeMillis() + (long) delay;
                  gifDecoder.advance();
                  next = new DelayTarget(handler, gifDecoder.getCurrentFrameIndex(), targetTime);
                  requestBuilder.clone().apply(RequestOptions.signatureOf(new FrameSignature())).load(gifDecoder).into(next);
              }
          }
      
      

      可以看出这里将加载下一帧的数据给了delayTarget对象

      static class DelayTarget extends SimpleTarget<Bitmap> {
              .....
              public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                  this.resource = resource;
                  //解析到下一帧资源后,发送消息给handler
                  Message msg = handler.obtainMessage(1, this);
                  handler.sendMessageAtTime(msg, targetTime);
              }
          }
      private class FrameLoaderCallback implements Handler.Callback {
              public boolean handleMessage(Message msg) {
                  DelayTarget target;
                  if (msg.what == 1) {
                      target = (DelayTarget) msg.obj;
                      //handler中回调onFrameReady方法
                      WebpFrameLoader.this.onFrameReady(target);
                      return true;
                  } 
              }
          }
      
      
      void onFrameReady(DelayTarget delayTarget) {
              if (isCleared) {
                  handler.obtainMessage(2, delayTarget).sendToTarget();
              } else {
                  //..省略了通知渲染的步骤
                  //开始加载下一帧了,动起来了
                  loadNextFrame();
              }
          }
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月30日

悬赏问题

  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥15 关于超局变量获取查询的问题
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集
  • ¥15 在启动roslaunch时出现如下问题
  • ¥15 汇编语言实现加减法计算器的功能