Fresco 라이브러리를 사용하여 RecyclerView 및 Android에서 애니메이션 gif 파일을 표시합니다.Android에서 Fresco로 Gif 미리보기 표시 (예 : 첫 번째 프레임)
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(url)
.setAutoPlayAnimations(true)
.build();
simpleDraweeView.setController(controller);
모든 것은 괜찮지 만, GIF 이미지 캐시와 나는 위 또는 아래로 스크롤 할 때 다시로드되지 않은 것 같습니다 : 내 코드는 매우 간단하다, 나는 onBindViewHolder()에서이 작업을 수행. 그래서 간단한 이미지처럼 GIF 파일 미리보기를 보여 주기로했습니다. ImageRequest의 setLocalThumbnailPreviewsEnabled (true)가 GIF 이미지에서 작동하지 않는 것 같습니다. 그런 다음 setForceStaticImage (true)와 함께 ImageDecodeOptionsBuilder를 사용하려고했습니다. 정적 이미지로 GIF를 표시합니다 (거의 필요한 부분이지만 정적 이미지가로드 된 후 애니메이션을 시작해야합니다).
Uri imageUri = Uri.parse(url);
ImageDecodeOptionsBuilder decodeOptionsBuilder = new ImageDecodeOptionsBuilder();
decodeOptionsBuilder.setForceStaticImage(true);
decodeOptionsBuilder.setDecodePreviewFrame(true);
ImageDecodeOptions imageDecodeOptions = new ImageDecodeOptions(decodeOptionsBuilder);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(imageUri)
.setImageDecodeOptions(imageDecodeOptions)
.setLocalThumbnailPreviewsEnabled(true)
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setAutoPlayAnimations(true)
.build();
simpleDraweeView.setController(controller);
가 나는 또한 setAutoPlayAnimations (참/거짓) 및 (decodeOptionsBuilder.setDecodePreviewFrame) (참과 같은) 다른 매개 변수와 함께 여전히 성공하지 재생하려고 : 다음은 내 코드입니다.
내 질문은 : GIF의 미리보기 이미지 (예 : 자리 표시 자)로 정적 이미지를 어떻게 표시 할 수 있습니까? GIF의 첫 프레임 (또는 다른 프레임)이라면 멋질 것입니다. 어떤 도움을 주셔서 감사합니다. 당신이 설명
안녕하세요 알렉산더, 답변 해 주셔서 감사합니다. 기본적으로 setAutoPlayAnimations (true)를 사용하고 GIF 애니메이션을 자동으로 재생하기를 원합니다. 예를 들어, giphy 앱과 같아야합니다 (탭으로 시작하지 마세요) - https://play.google.com/store/apps/details?id=com.giphy.messenger. 물론, 그들은 아마도 다른 이미지 로더 라이브러리를 사용할 것입니다.하지만 프레스코를 사용하고 싶습니다. (더 좋아합니다) 비슷한 동작을 구현합니다. 프레스코와 관련해서, 위/아래로 스크롤 할 때 이미지 대신 자리 표시자가 나타납니다. 나는 GIF를보기를 좋아하지만, 정적 인 이미지 (* .jpeg, .png 등) 만보고 싶다고 가정 해 봅시다. – Evgen
옵션으로 GIF의 일부 프레임 일 수 있습니다. 그래서 지금 프레스코 화로 이것을 구현하는 것이 불가능하다는 뜻입니까? 아마도 onFinalImageSet() 또는 다른 것을 사용하여 정적 이미지를로드 한 후에 SimpleDraweeView의 정적 이미지를 GIF로 변경하는 방법이 있을까요? 또는 같은 위치에서 두 번째 SimpleDraweeView for GIF를 사용하여 보이게하고 조금 후에 (사용자가 스크롤을 멈춘 후에) 애니메이션을 시작 하시겠습니까? – Evgen
그래서 나에게는 색이 지정된 플레이스 홀더와 GIF가 GIF로 표시된다. 이것은 간단한 컬러 플레이스 홀더 drawable로 할 수 있습니다. 대체 1 : 원할 때마다 수동으로 애니메이션을 수동으로 시작하십시오 (예 : 화면이 일정 시간 동안 화면에 표시된 경우 - 위의 내 솔루션 참조). 대체 2 : 애니메이션이있는 lowResImageUri를 설정하고 애니메이션이있는 일반 NormalResImageUri를 설정하십시오. 그러나, 나는 이것으로 이익을 보지 못한다. –