Изображение Fresco с шириной и высотой - match_parent не отображается

У меня есть приложение, которое загружает изображение с помощью библиотеки фрески. У меня 2 проблемы. 1. Если я использую вот такую ​​фреску

<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/feedImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />

он не будет отображать ничего, кроме тонкой цветной линии там, где должно быть изображение.

Однако если я сделаю что-то вроде

<com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/feedImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        fresco:viewAspectRatio="1.33"
        android:scaleType="fitXY"
        />

все работает нормально (но я не вижу полного изображения).

Я хочу добиться того же вида, что и facebook (изображения в полную ширину и высоту).

  1. Загружаю изображения списком в ресайклере. Изображения загружаются в кеш (я это проверил), но если я полностью спущусь вниз, а затем сделаю резервную копию, я смогу увидеть загружаемые изображения (у facebook этой проблемы нет, и они используют ту же библиотеку). Если я прокручиваю очень медленно, проблем нет. Я недавно перешел с залпа, и раньше у меня не было этой проблемы (так что это не переработчик). Как я могу это решить?

Изменить: И еще кое-что, что я заметил, это то, что если я отключу кеш диска и убью приложение, кеш не будет удален, как говорится в документации. Я знаю, что если я позвоню ImagePipeline imagePipeline = Fresco.getImagePipeline(); Uri uri; imagePipeline.evictFromMemoryCache(uri);, кеш будет удален, но разве это не должно происходить автоматически?


person Bogdan Daniel    schedule 11.11.2015    source источник
comment
Я не очень хорошо понял, что вы имеете в виду под полной шириной и высотой изображений, но вы можете попробовать android:adjustViewBounds="true".   -  person natario    schedule 13.11.2015
comment
Я имею в виду, как будто вы их видите на фейсбуке. Я сделаю это   -  person Bogdan Daniel    schedule 13.11.2015
comment
эй, я столкнулся с той же проблемой .. ты нашел решение? пожалуйста, помогите мне   -  person piyush poriya    schedule 28.12.2015


Ответы (1)


Итак, что касается проблемы №2, я не совсем уверен, что правильно понимаю проблему, это вообще не проблема. Изображение вполне может находиться в кеше памяти, однако изображение, хранящееся в кеше, все еще необходимо декодировать, прежде чем его можно будет отобразить на экране, что, вероятно, является той проблемой загрузки, о которой вы говорите. Причина, по которой вы видите это только при быстрой прокрутке, заключается в том, что RecyclerAdapter, который вы используете, догоняет позицию прокрутки (это обоснованное предположение, ни в коем случае не следует считать это правильным). Когда вы двигаетесь медленно и не видите изображение, загрузка происходит из-за того, что адаптер начинает загружать следующий ViewHolder еще до того, как он появится на экране, но не намного раньше этого момента. Итак, когда вы быстро прокручиваете, я считаю, что это просто Адаптер, играющий в догонялки со своим вызовом OnBindViewHolder, в отличие от медленного продвижения, ему не нужно играть в догонялки и загружать изображение до того, как вы дойдете до следующего элемента в recyclerview.

Дисковый кеш не очищается, когда приложение находится в фоновом режиме, как кеш памяти, поэтому при необходимости вам придется его удалить.

Я не уверен в проблеме №1, но постараюсь выяснить, почему это может быть. Может быть, попробуйте установить scaletype на CropCenter или что-то в этом роде и посмотреть, избавит ли это вас от линий.

person Devsil    schedule 12.11.2015
comment
По-видимому, первая проблема связана с тем, что я использую RecyclerView, размеры которого не определены, поэтому изображение не может соответствовать родительскому (или что-то в этом роде github.com/facebook/fresco/issues/753). Я не про дисковый кеш, я его не ставил. Я пробовал быстро прокрутить в фейсбуке, но загрузка не происходит, и, как я уже сказал, когда я использовал библиотеку залпа, этого не происходило. - person Bogdan Daniel; 12.11.2015