2017-02-05 5 views
0

В моем приложении для Android я использовал изображение с использованием Fresco, потому что изображения были GIF. и изображения были предоставлены с сервера, сделанного с помощью node.jsКак установить размер изображенияView перед загрузкой

Есть временная шкала, подобная instagram, но изображения являются GIF. и проблема заключается в том, что перед загрузкой фотографии изображения имеют размер по умолчанию, такой как 200x200. а затем после загрузки изображения он становится фактическим. Я хочу, чтобы изображение было в размере фактического размера, даже до его загрузки. Я видел, что большинство коммерческих приложений, размер изображения уже установлен на исходный размер, даже до его загрузки.

Я хочу знать, что является лучшим способом реализовать это.

Я думал, что когда сервер отправляет клиенту описания сообщения, такие как URL-адрес изображения, заголовок, содержание, количество понравившихся, должен ли он отправлять размеры? например

{elements:[{ 
      url:"http://blah.com/image.jpg", 
      title:"this is the title", 
      photo_width:300, 
      photo_height:500, 
      and other stuffs 
      }, 
      {another element}, 
      {so on}] 
} 

или есть ли у Фреско способ решить это, что я не знал?

+1

ваш думают правильно, dimen должен быть отправлен с сервера. –

+0

@PriyaSinghal спасибо !, так что я должен использовать что-то вроде [этого] (https://github.com/image-size/image-size) –

ответ

1

Я не думаю, что Fresco покрыла этот прецедент.

Любой крупный веб-браузер, такой как Chrome, может получить ширину и высоту перед загрузкой изображения, поскольку, как только браузер загружает заголовок файла, он имеет ширину и высоту изображения.

Но диспетчер Fresco ControllerListener, похоже, не имеет перед загрузкой (@Nullable ImageInfo imageInfo), поэтому вам нужно дождаться, когда изображение будет полностью загружено, чтобы получить фактический размер.

Даже изображение «размера изображения», на которое вы ссылались, утверждает, что вам не нужно загружать все изображение, чтобы получить размер, я не понимаю, почему Fresco не может этого сделать. Может быть, мы должны сделать предложение команде Fresco.

Edit:
Эй, я нашел этот удивительный Lib испытующе GitHub: https://github.com/qstumn/FastImageSize

Это позволяет получить размер изображения без загрузки всего файла, и это простой в использовании

int[] imageSize; 
//sync 
imageSize = FastImageSize.with(url).get(); 

//async 
FastImageSize.with(url).get(new FastImageSize.ImageSizeCallback() { 

     @Override 
     public void onSizeReady(int[] size) { 
      imageSize = size; 
     } 
}); 

int imageWidth = imageSize[0]; 
int imageHeight = imageSize[1]; 
+0

Спасибо! Я обновил сервер для отправки ширины и высоты, но я попробую это и посмотрю, –

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