Fresco не показывает изображение

Я пытаюсь показать изображение в RecyclerView с помощью Fresco. У меня есть изображение в моей файловой системе, и я хочу отобразить его в формате SimpleDraweeView по расположению изображения в формате String. Но в этом представлении у меня пустое изображение. Лог ошибок не показывает. Может кто-нибудь мне помочь? Вот мой код, где я пытаюсь установить изображение:

    imageView.setVisibility(View.VISIBLE);
    if (new File(imageData.getLocation()).exists()){
        Uri fileLocationUri = Uri.parse("file:/" + imageData.getLocation());
        ImageRequest request = ImageRequest.fromUri(fileLocationUri);
        DraweeController controller = Fresco.newDraweeControllerBuilder()
                .setImageRequest(request)
                .setOldController(imageView.getController())
                .setAutoPlayAnimations(true)
                .build();
        imageView.setController(controller);
    }

Расположение изображения — это строка, начинающаяся с /, поэтому синтаксический анализатор Uri возвращает правильный результат. XML-файл:

<com.facebook.drawee.view.SimpleDraweeView
        a:id = "@+id/outgoing_photo_view"
        a:layout_width="300dp"
        a:layout_height="300dp"
        a:adjustViewBounds="true"
        a:visibility="gone"
        fresco:actualImageScaleType="focusCrop"
        fresco:placeholderImageScaleType="fitCenter"
        fresco:failureImageScaleType="centerInside"
        fresco:retryImageScaleType="centerCrop"
        fresco:roundAsCircle="false"
        fresco:roundedCornerRadius="1dp"
        fresco:roundTopLeft="true"
        fresco:roundTopRight="false"
        fresco:roundBottomLeft="false"
        fresco:roundBottomRight="true"
        fresco:roundingBorderWidth="2dp"/>

person Vanya Sakharovskiy    schedule 22.06.2016    source источник
comment
Может быть, это связано с тем, что у вас отключена видимость в SimpleDraweeView?   -  person Vishnu M.    schedule 22.06.2016
comment
@ВишнуМ. в коде я устанавливаю видимость видимой. У меня есть пустой квадрат, но он у меня есть.   -  person Vanya Sakharovskiy    schedule 22.06.2016


Ответы (1)


Я предполагаю, что ваш URI файла недействителен.

Это должно работать с чем-то вроде этого:

File file = ... // your file
Uri uri = Uri.fromFile(file); // to get a valid file:// URI
DraweeController controller = Fresco.newDraweeControllerBuilder()
        .setUri(uri)
        .build();
person Alexander Oprisnik    schedule 30.06.2016
comment
Это работает, но у меня очень сильные зависания при прокрутке изображений. Профилировщик говорит, что Uri.fromFile() требует так много ресурсов - person Vanya Sakharovskiy; 30.06.2016
comment
В идеале вы должны заранее подготовить URI и контроллер. Взгляните на этот пример адаптера для получения списка локальных изображений: LocalResourceSimpleAdapter Он имеет 2 варианта для отложенной загрузки или предварительного создания URI — см. mLazy. - person Alexander Oprisnik; 30.06.2016