나는 덜 알려져있는 안드로이드의 ImageSwitcher을 사용하여 ImageView에서 이미지 변경을 활성화합니다. 현재, 특정 이벤트 (메인 스레드에서 모두 발생)에서 전환되는 2 개의 이미지 (기본 및 "ok"이미지)가 있습니다. 첫 번째 이미지는 페이드 아웃되고 두 번째 이미지는 페이드 인됩니다. ImageSwitcher가 작동하는 방식입니다. .ImageSwitcher가 처음 두 개의 이미지 전환 후 애니메이션되지 않음
처음 2 개의 애니메이션 (기본값에서 "ok"로 이동 한 다음 기본값으로 돌아갑니다)은 잘 사라집니다. 그런 다음 갑자기 이미지가 더 이상 흐려지지 않고 뷰가 즉시 두 번째 이미지로 전환되고 애니메이션이 두 번째 이미지의 두 오버레이 된 버전으로 흐릿 해집니다 (이미지는 반투명 한 검정색이며 두 번째 이미지가 거의 검은 색에서 정상으로 돌아 오는 방식).
// Initialization in onCreate():
mRefreshImageSwitcher = (ImageSwitcher) findViewById(R.id.main_refresh);
mRefreshImageSwitcher.setFactory(new RefreshButtonViewFactory());
mRefreshImageSwitcher.setImageResource(R.drawable.refresh);
// ...
mRefreshImageSwitcher.setInAnimation(getFadeAnimation(true, 300));
mRefreshImageSwitcher.setOutAnimation(getFadeAnimation(false, 300));
mRefreshImageSwitcher.setImageResource(R.drawable.refresh_ok);
// ...
private Animation getFadeAnimation(boolean in, long durationMillis) {
Animation a = AnimationUtils.loadAnimation(this, in ? android.R.anim.fade_in : android.R.anim.fade_out);
a.setDuration(durationMillis);
return a;
}
는 다른 방법으로, 나는 항상 같은 애니메이션 객체를 사용하는 것을 시도했다, 그러나 그것은 아무 것도 변경하지 않은 :
전환은 다음과 같이 구현됩니다.
동일한 이미지를 두 번 이상 설정하면 ImageSwitcher가 망가질 수 있습니까? 다른 아이디어?
을 재생
mRefreshImageSwitcher.setImageResource()
하지mRefreshImageSwitcher.setBackgroundResource()
원인 설정 배경을 사용하고 있는지 확인하는 방법을 쓰고 있지 않은 대답? – manmal여기 내 코드는 에 있습니다. 만들기 'iSwitcher = (ImageSwitcher) findViewById (R.id.ImageSwitcher); \t \t iSwitcher.setFactory (this); \t \t iSwitcher.setInAnimation (AnimationUtils.loadAnimation (이, \t \t \t \t android.R.anim.fade_in)); \t \t iSwitcher.setOutAnimation (AnimationUtils.loadAnimation (이, \t \t \t \t android.R.anim.fade_out)); 공장에 대한 메이크업보기 @Override \t 공공보기 makeView() { \t \t 이미지 뷰의 iView = 새로운 이미지 뷰 (이); \t \t iView.setLayoutParams (새 ImageSwitcher.LayoutParams ( \t \t \t \t LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); \t \t return iView; \t}' –