2017-02-05 4 views
0

내 안드로이드 앱에서 이미지가 GIF이기 때문에 프레스코를 사용하여 이미지 뷰를 구현했습니다. 이미지는 node.js로 만든 서버에서 제공되었습니다.다운로드하기 전에 imageView의 크기를 설정하는 방법

타임 라인은 인스 타블램이지만 이미지는 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 감사합니다!! [this] (https://github.com/image-size/image-size)와 같은 것을 사용해야합니다. –

답변

1

프레스코가이 사용 사례를 다뤘다고 생각하지 않습니다.

브라우저가 파일 헤더를로드하자마자 이미지의 너비와 높이가 나타나기 때문에 Chrome과 같은 주요 웹 브라우저는 이미지가 실제로로드되기 전에 너비와 높이를 가져올 수 있습니다.

그러나 Fresco의 ControllerListener에는 beforeDownload (@ Nullable ImageInfo imageInfo)가없는 것 같으므로 실제 크기를 얻으려면 이미지가 완전히로드 될 때까지 기다려야합니다.

당신이 크기를 얻기 위해 전체 이미지를 다운로드 할 필요가 없다고 주장한 lib 'image-size'조차도, 나는 프레스코가 그것을 할 수없는 이유를 알지 못합니다. 아마도 우리는 프레스코 팀에 제안을해야 할 것입니다.

편집 :
이봐, 난이 멋진 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

감사합니다! 너비와 높이를 보내도록 서버를 업데이트했지만,이 서버를 시도해 볼 것이고 더 빠른 지 보겠습니다. –