Android 에서 GIF 움 직 이 는 그림 의 재생 제어 와 감청 에 대한 자세 한 설명
최근 에 인수 한 프로젝트 에는 GIF 움 직 이 는 그림 의 재생 과 감청 이 포함 되 어 있 습 니 다.지난 버 전에 서 GIF 에 대한 처 리 는 H5 로 이 루어 졌 습 니 다.사용자 체험 을 고려 하여 현재 의 수 요 는 이 아 이 를 생화학 시 키 는 것 입 니 다.도중에 잘못된 길 로 들 어 갈 뻔 했 습 니 다!다음은 상세 한 소 개 를 살 펴 보 겠 습 니 다.
Android 에서 GIF 동 영상 처리 및 감청
처음에 가장 먼저 생각 한 것 은 glide 였 지만 glide 가 GIF 를 제어 하고 감청 할 수 없다 고 생각 하여 인터넷 에서 다른 방법 을 찾 았 다.그림 을 프레임 으로 나 누고 한 장 한 장 씩 프레임 애니메이션 으로 실현 하 는 방안 을 보 았 다.
나 는 이 해결 방안 을 준 사람 을 의심 하기 시작 했다.어느 시대 에 이런 힘 들 고 좋 은 소 리 를 듣 지 못 하 며 사용자 의 메모 리 를 대량으로 차지 하 는 것 을 했 는 지!그래서 손 을 쓰기 전에 다시 한 번 자세히 구 글 을 했 습 니 다.답 은 정말 저 를 난처 하 게 만 들 었 습 니 다.glide 는 GIF 애니메이션 을 제어 할 수 있 습 니 다!!
노 코드:glide 로 GIF 동 도 를 불 러 옵 니 다.
Glide.with(DoorActivity.this).load(R.drawable.opendoor).into(openDoorGif);
아주 간단 한 코드 한 줄 로 해결 할 수 있 습 니 다.상기 방식 의 그림 과 동 도 는 모두 불 러 올 수 있 습 니 다(네트워크 링크 도 가능 합 니 다)다음은 GIF 움 직 이 는 그림 만 불 러 올 수 있 는 쓰기 입 니 다.
Glide.with(DoorActivity.this).load(R.drawable.opendoor).asGif().into(openDoorGif);
사실 asGIF 가 하나 더 생 겼 어 요.하지만 이런 식 으로 움 직 이 는 그림 재생 은 계속 순환 되 고 있 습 니 다.어떤 방식 으로 멈 출 수 있 습 니까?만난 적 이 없 으 면 필요 하지 않 습 니 다.만약 에 지금 필요 한 것 이 있다 면 단 추 를 누 르 면 GIF 를 재생 하여 사용자 와 의 상호작용 을 실현 해 야 합 니까?이 기술 은 당신 이 반드시 get 을 해 야 한다 고 생각 합 니 다.비슷 한 수요 때문에 당신 은 조만간 만 날 수 있 을 것 입 니 다!
아래 표기 법 은 GIF 움 직 이 는 그림 에 대한 통 제 를 실현 하 였 다.
//handler
private static final int MESSAGE_SUCCESS = 4424;
//handler ( )
private int duration;
/**
* Gif ( )
* @param view
*/
public void loadGif(View view){
Glide.with(this)
.load(R.drawable.opendoor)
.diskCacheStrategy(DiskCacheStrategy.SOURCE)
.listener(new RequestListener<Integer, GlideDrawable>() {
@Override
public boolean onException(Exception arg0, Integer arg1,
Target<GlideDrawable> arg2, boolean arg3) {
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource,
Integer model, Target<GlideDrawable> target,
boolean isFromMemoryCache, boolean isFirstResource) {
//
GifDrawable drawable = (GifDrawable) resource;
GifDecoder decoder = drawable.getDecoder();
for (int i = 0; i < drawable.getFrameCount(); i++) {
duration += decoder.getDelay(i);
}
// ,
// int ,
handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,
duration);
return false;
}
})
// gif
// 1
.into(new GlideDrawableImageViewTarget(openDoorGif, 1));
}
이런 방식 을 사용 하면 GIF 에 대한 통 제 를 완벽 하 게 실현 하고 제 가 만난 수요 에 좋 은 지 지 를 제공 할 수 있 습 니 다!총결산
이상 은 이 글 의 모든 내용 입 니 다.본 논문 의 내용 이 안 드 로 이 드 개발 자 들 에 게 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 십시오.저희 에 대한 지원 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.