0

I am using this code to display an image:

SimpleDraweeView imageview = (SimpleDraweeView) findViewById(R.id.imageview);
String fileInternalPath = "....";
Uri bmpImageUri = Uri.parse(fileInternalPath);
imageview.setImageURI(bmpImageUri);

I need to know when the image is loaded so I can hide the progressbar.

Any ideas?

stavros.3p
  • 2,244
  • 6
  • 20
  • 37

3 Answers3

6

You can add controller listener to drawee view. Something like this:

 imageView.setController(Fresco.newDraweeControllerBuilder()
                    .setControllerListener(new ControllerListener<ImageInfo>() {
                        @Override
                        public void onSubmit(String id, Object callerContext) {

                        }

                        @Override
                        public void onFinalImageSet(String id, ImageInfo imageInfo, Animatable animatable) {

                        }

                        @Override
                        public void onIntermediateImageSet(String id, ImageInfo imageInfo) {

                        }

                        @Override
                        public void onIntermediateImageFailed(String id, Throwable throwable) {

                        }

                        @Override
                        public void onFailure(String id, Throwable throwable) {

                        }

                        @Override
                        public void onRelease(String id) {

                        }
                    }).build());
Andrew Stromme
  • 2,120
  • 23
  • 30
Surabhi Singh
  • 803
  • 8
  • 14
1

@Surabhi Singh there is a simpler way (hope that Kotlin is not a problem):

val controllerBuilder = Fresco.newDraweeControllerBuilder()
controllerBuilder.setUri(url)
controllerBuilder.oldController = drawee.controller
controllerBuilder.controllerListener = object : BaseControllerListener<ImageInfo>() {
     override fun onFinalImageSet(id: String?, imageInfo: ImageInfo?, animatable: Animatable?) {
         super.onFinalImageSet(id, imageInfo, animatable)
                //image is loaded
     }
}
drawee.controller = controllerBuilder.build()
Alexander Krol
  • 1,418
  • 15
  • 15
0

SimpleDraweeView provides facility to add progress bar in the XML file itself. So no need to hide and show manually. It will take care of the progress bar by its own.

Go through below code for the reference.

 <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/iv_sample"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:placeholderImage="@drawable/common_placeholder"
        app:placeholderImageScaleType="fitXY"
        android:scaleType="fitCenter"
        app:roundAsCircle="false"
        app:progressBarAutoRotateInterval="1000"
        app:progressBarImageScaleType="centerInside"
        fresco:actualImageScaleType="centerCrop"
        app:progressBarImage="@drawable/custom_app_progressbar"/>
Priyanka Alachiya
  • 1,707
  • 2
  • 20
  • 31