2015-04-20 4 views
0

Я использую Picasso в своем приложении в списке, проблема, с которой я сталкиваюсь, заключается в том, что когда я загружаю изображения с Picasso.with(context).load("file:///path/to/image/in/SD").into(imageView) и прокручиваю список, w загруженные изображения подталкивают список вверх или вниз, когда изображение загружено, ниже показано, что я пытаюсь сказать.Image place holder with Picasso - Android

item 1 
======== 
item 2 
======== 
item 3 

Теперь, скажем, я прокручивается вверх и список остановился в положении 15

item 15 ///Picasso started loading the image but the image isn't ready yet 
======== 
item 16 
======== 
item 17 



item 15 //after few milliseconds the image is loaded into the image view 

image view is loaded and pushed the list down 
--------- 
|  | 
|  | 
|  | 
--------- 

======== 
item 16 
======== 
item 17 

Изображения Я все локально сохраненные с их пути в БД. Facebook делает это очень красиво, когда они используют серое изображение, а затем загружают изображение с тем же размером серого заполнителя, и между ними заменяет местозаполнитель на основе изображения.

Вопрос в том, как я могу поместить держатель места, как черный или серый, в качестве держателя места, который имеет тот же размер изображения, который будет загружен после завершения загрузки, чтобы он заменил его, не нажимая список?

Обратите внимание, что использование .placeholder() не является хорошим, потому что размер не будет таким же.

+0

Вы можете установить минимальный и максимальный размер изображения. Таким образом и в сочетании с заполнителем список не будет «прыгать». Но для того, чтобы предоставить местозаполнитель, который динамически по размеру зависит от изображения для загрузки, facebook должен сначала получить размер изображения. Вы тоже можете это сделать. Выбирайте все размеры изображения, добавьте соответственно держатели мест и ленивую загрузку изображений. – JacksOnF1re

ответ

0

Вы можете изменить размер изображения целевого изображения, но для этого вам нужно знать размер цели, прежде чем запускать DLing изображение с помощью пикассо. Это просто не будет работать автоматически для вас. Это должно каким-то образом узнать размер целевого изображения. Если говорить о списке с изображениями DLed из Интернета, то обычно приложение получает всю необходимую информацию об изображении (url, size и т. Д.), Прежде чем отправится в DL. У вашего приложения есть все изображения в ресурсах проекта. Поэтому для достижения вашей цели вы должны использовать BitmapFactory, чтобы получить размер изображения, прежде чем давать задачу загрузить его на пикассо.

+0

Я могу сохранить размер изображений в БД вместе с его SD-пути, скажем, я сохранил его в БД, как я могу сделать то, что вы предложили? –

+0

Picasso имеет соответствующий метод: .resize (imageWidth, imageHeight) – Stan

+0

Спасибо, но я не могу получить всю картину здесь, у меня размер изображения, как это помогает? как мне создать местозаполнитель при загрузке изображения? –

Смежные вопросы