Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Fresco-未调用ControllerListener中的onIntermediateImageSet_Android_Imageview_Listener_Lazy Loading_Fresco - Fatal编程技术网

Android Fresco-未调用ControllerListener中的onIntermediateImageSet

Android Fresco-未调用ControllerListener中的onIntermediateImageSet,android,imageview,listener,lazy-loading,fresco,Android,Imageview,Listener,Lazy Loading,Fresco,我正在尝试加载一个大尺寸的JPG。我看到了使用湿壁画,这正是我想要的:一个模糊的延迟加载效果。我从回购协议中获取了他们的代码,看起来是这样的: ImageFormatProgressiveJpegFragment.java private void setImageUri(Uri uri) { mDebugOutput.setText(""); ImageRequest request = ImageRequestBuilder.newBuilderWithSource(ur

我正在尝试加载一个大尺寸的JPG。我看到了使用湿壁画,这正是我想要的:一个模糊的延迟加载效果。我从回购协议中获取了他们的代码,看起来是这样的:

ImageFormatProgressiveJpegFragment.java

  private void setImageUri(Uri uri) {
    mDebugOutput.setText("");
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
        .setProgressiveRenderingEnabled(mProgressiveRenderingEnabled)
        .build();
    DraweeController controller =
        Fresco.newDraweeControllerBuilder()
            .setImageRequest(request)
            .setRetainImageOnFailure(true)
            .setPerfDataListener(mImagePerfDataListener)
            .setControllerListener(
                new BaseControllerListener<ImageInfo>() {
                  @Override
                  public void onFinalImageSet(
                      String id,
                      @javax.annotation.Nullable ImageInfo imageInfo,
                      @javax.annotation.Nullable Animatable animatable) {
                    if (imageInfo != null) {
                      QualityInfo qualityInfo = imageInfo.getQualityInfo();
                      logScan(qualityInfo, true);
                    }
                  }

                  @Override
                  public void onIntermediateImageSet(
                      String id, @javax.annotation.Nullable ImageInfo imageInfo) {
                    if (imageInfo != null) {
                      QualityInfo qualityInfo = imageInfo.getQualityInfo();
                      logScan(qualityInfo, false);
                    }
                  }

                  @Override
                  public void onIntermediateImageFailed(String id, Throwable throwable) {
                    mDebugOutput.append(
                        String.format(
                            Locale.getDefault(),
                            "onIntermediateImageFailed, %s\n",
                            throwable.getMessage()));
                  }
                })
            .build();
    mSimpleDraweeView.setController(controller);
  }

  private void logScan(QualityInfo qualityInfo, boolean isFinalImage) {
    mDebugOutput.append(
        String.format(
            Locale.getDefault(),
            "%s: %s, goodEnough=%b, fullQuality=%b, quality=%d\n\n",
            mDateFormat.format(new Date(System.currentTimeMillis())),
            isFinalImage ? "final" : "intermediate",
            qualityInfo.isOfGoodEnoughQuality(),
            qualityInfo.isOfFullQuality(),
            qualityInfo.getQuality()));
  }


private String IMAGE_URL = "https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73726/world.topo.bathy.200406.3x5400x2700.png";

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(IMAGE_URL))
                .setProgressiveRenderingEnabled(true)
                .build();

        DraweeController controller =
                Fresco.newDraweeControllerBuilder()
                        .setImageRequest(request)
                        .setRetainImageOnFailure(true)
                        .setPerfDataListener(this)
                        .setControllerListener(
                                new BaseControllerListener<ImageInfo>() {
                                    @Override
                                    public void onFinalImageSet(
                                            String id,
                                            @Nullable ImageInfo imageInfo,
                                            @Nullable Animatable animatable) {
                                        if (imageInfo != null) {
                                            QualityInfo qualityInfo = imageInfo.getQualityInfo();
                                            logScan(qualityInfo, true);
                                        }
                                    }

                                    @Override
                                    public void onIntermediateImageSet(
                                            String id, @Nullable ImageInfo imageInfo) {
                                        if (imageInfo != null) {
                                            QualityInfo qualityInfo = imageInfo.getQualityInfo();
                                            logScan(qualityInfo, false);
                                        }
                                    }

                                    @Override
                                    public void onIntermediateImageFailed(String id, Throwable throwable) {
                                        Log.i("DraweeUpdate",
                                                String.format(
                                                        Locale.getDefault(),
                                                        "onIntermediateImageFailed, %s\n",
                                                        throwable.getMessage()));
                                    }
                                })
                        .build();
        simpleDraweeView.setController(controller);
    }

    private void logScan(QualityInfo qualityInfo, boolean isFinalImage) {
        Log.i("DraweeUpdate", String.format(
                Locale.getDefault(),
                "%s: %s, goodEnough=%b, fullQuality=%b, quality=%d\n\n",
                "",
                isFinalImage ? "final" : "intermediate",
                qualityInfo.isOfGoodEnoughQuality(),
                qualityInfo.isOfFullQuality(),
                qualityInfo.getQuality()));
    }
private void setImageUri(Uri){
mDebugOutput.setText(“”);
ImageRequest请求=ImageRequestBuilder.newBuilderWithSource(uri)
.SetProgressiveEnderingEnabled(MPProgressiveEnderingEnabled)
.build();
抽屉控制器=
Fresco.NewDraineControllerBuilder()
.setImageRequest(请求)
.setRetainImageOnFailure(真)
.setPerfDataListener(mImagePerfDataListener)
.setControllerListener(
新BaseControllerListener(){
@凌驾
最终图像集上的公共无效(
字符串id,
@javax.annotation.Nullable ImageInfo ImageInfo,
@javax.annotation.Nullable可设置动画){
如果(imageInfo!=null){
QualityInfo QualityInfo=imageInfo.getQualityInfo();
日志扫描(qualityInfo,true);
}
}
@凌驾
IntermediateImageSet上的公共无效(
字符串id,@javax.annotation.Nullable ImageInfo){
如果(imageInfo!=null){
QualityInfo QualityInfo=imageInfo.getQualityInfo();
日志扫描(qualityInfo,false);
}
}
@凌驾
IntermediateImageFailed上的公共void(字符串id,Throwable Throwable){
mDebugOutput.append(
字符串格式(
Locale.getDefault(),
“onIntermediateImageFailed,%s\n”,
throwable.getMessage());
}
})
.build();
mSimpleDraweeView.setController(控制器);
}
专用void日志扫描(QualityInfo QualityInfo,布尔值isFinalImage){
mDebugOutput.append(
字符串格式(
Locale.getDefault(),
%s:%s,goodEnough=%b,fullQuality=%b,quality=%d\n\n,
mDateFormat.format(新日期(System.currentTimeMillis()),
isFinalImage?“最终版”:“中级版”,
qualityInfo.isOfGoodEnoughQuality(),
qualityInfo.isOfFullQuality(),
qualityInfo.getQuality());
}
是加载图像信息时的输出

除了部分替换日志之外,我的代码看起来是一样的:

MyFrescoActivity.java

  private void setImageUri(Uri uri) {
    mDebugOutput.setText("");
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
        .setProgressiveRenderingEnabled(mProgressiveRenderingEnabled)
        .build();
    DraweeController controller =
        Fresco.newDraweeControllerBuilder()
            .setImageRequest(request)
            .setRetainImageOnFailure(true)
            .setPerfDataListener(mImagePerfDataListener)
            .setControllerListener(
                new BaseControllerListener<ImageInfo>() {
                  @Override
                  public void onFinalImageSet(
                      String id,
                      @javax.annotation.Nullable ImageInfo imageInfo,
                      @javax.annotation.Nullable Animatable animatable) {
                    if (imageInfo != null) {
                      QualityInfo qualityInfo = imageInfo.getQualityInfo();
                      logScan(qualityInfo, true);
                    }
                  }

                  @Override
                  public void onIntermediateImageSet(
                      String id, @javax.annotation.Nullable ImageInfo imageInfo) {
                    if (imageInfo != null) {
                      QualityInfo qualityInfo = imageInfo.getQualityInfo();
                      logScan(qualityInfo, false);
                    }
                  }

                  @Override
                  public void onIntermediateImageFailed(String id, Throwable throwable) {
                    mDebugOutput.append(
                        String.format(
                            Locale.getDefault(),
                            "onIntermediateImageFailed, %s\n",
                            throwable.getMessage()));
                  }
                })
            .build();
    mSimpleDraweeView.setController(controller);
  }

  private void logScan(QualityInfo qualityInfo, boolean isFinalImage) {
    mDebugOutput.append(
        String.format(
            Locale.getDefault(),
            "%s: %s, goodEnough=%b, fullQuality=%b, quality=%d\n\n",
            mDateFormat.format(new Date(System.currentTimeMillis())),
            isFinalImage ? "final" : "intermediate",
            qualityInfo.isOfGoodEnoughQuality(),
            qualityInfo.isOfFullQuality(),
            qualityInfo.getQuality()));
  }


private String IMAGE_URL = "https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73726/world.topo.bathy.200406.3x5400x2700.png";

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(IMAGE_URL))
                .setProgressiveRenderingEnabled(true)
                .build();

        DraweeController controller =
                Fresco.newDraweeControllerBuilder()
                        .setImageRequest(request)
                        .setRetainImageOnFailure(true)
                        .setPerfDataListener(this)
                        .setControllerListener(
                                new BaseControllerListener<ImageInfo>() {
                                    @Override
                                    public void onFinalImageSet(
                                            String id,
                                            @Nullable ImageInfo imageInfo,
                                            @Nullable Animatable animatable) {
                                        if (imageInfo != null) {
                                            QualityInfo qualityInfo = imageInfo.getQualityInfo();
                                            logScan(qualityInfo, true);
                                        }
                                    }

                                    @Override
                                    public void onIntermediateImageSet(
                                            String id, @Nullable ImageInfo imageInfo) {
                                        if (imageInfo != null) {
                                            QualityInfo qualityInfo = imageInfo.getQualityInfo();
                                            logScan(qualityInfo, false);
                                        }
                                    }

                                    @Override
                                    public void onIntermediateImageFailed(String id, Throwable throwable) {
                                        Log.i("DraweeUpdate",
                                                String.format(
                                                        Locale.getDefault(),
                                                        "onIntermediateImageFailed, %s\n",
                                                        throwable.getMessage()));
                                    }
                                })
                        .build();
        simpleDraweeView.setController(controller);
    }

    private void logScan(QualityInfo qualityInfo, boolean isFinalImage) {
        Log.i("DraweeUpdate", String.format(
                Locale.getDefault(),
                "%s: %s, goodEnough=%b, fullQuality=%b, quality=%d\n\n",
                "",
                isFinalImage ? "final" : "intermediate",
                qualityInfo.isOfGoodEnoughQuality(),
                qualityInfo.isOfFullQuality(),
                qualityInfo.getQuality()));
    }

私有字符串图像\u URL=”https://eoimages.gsfc.nasa.gov/images/imagerecords/73000/73726/world.topo.bathy.200406.3x5400x2700.png";
ImageRequestRequest=ImageRequestBuilder.newBuilderWithSource(Uri.parse(IMAGE\uURL))
.SetProgressiveEnderingEnabled(真)
.build();
抽屉控制器=
Fresco.NewDraineControllerBuilder()
.setImageRequest(请求)
.setRetainImageOnFailure(真)
.setPerfDataListener(此)
.setControllerListener(
新BaseControllerListener(){
@凌驾
最终图像集上的公共无效(
字符串id,
@可为空的ImageInfo ImageInfo,
@可为空(可设置动画){
如果(imageInfo!=null){
QualityInfo QualityInfo=imageInfo.getQualityInfo();
日志扫描(qualityInfo,true);
}
}
@凌驾
IntermediateImageSet上的公共无效(
字符串id,@Nullable ImageInfo(图像信息){
如果(imageInfo!=null){
QualityInfo QualityInfo=imageInfo.getQualityInfo();
日志扫描(qualityInfo,false);
}
}
@凌驾
IntermediateImageFailed上的公共void(字符串id,Throwable Throwable){
Log.i(“付款人更新”,
字符串格式(
Locale.getDefault(),
“onIntermediateImageFailed,%s\n”,
throwable.getMessage());
}
})
.build();
SimpleDraweView.setController(控制器);
}
专用void日志扫描(QualityInfo QualityInfo,布尔值isFinalImage){
Log.i(“抽屉更新”,String.format(
Locale.getDefault(),
%s:%s,goodEnough=%b,fullQuality=%b,quality=%d\n\n,
"",
isFinalImage?“最终版”:“中级版”,
qualityInfo.isOfGoodEnoughQuality(),
qualityInfo.isOfFullQuality(),
qualityInfo.getQuality());
}
不过,我在IntermediateImageSet上没有得到响应。在此侦听器上调用的唯一内容是
onFinalImageSet
whe