또 다른 방법은 Android의 Animator 클래스 (예 : ObjectAnimator) 중 하나를 사용하는 것입니다. 여기에 내가하고있는 일이있다 :
1) 사용하려는 이미지의 드로어 블 ID를 int 배열에 추가한다.
2) fadeIn 및 fadeOut 애니메이션에 대한 ObjectAnimators를 만듭니다. 페이드 인 기간을 설정하고 원하는대로 페이드 아웃 할 수 있습니다.
3) AnimatorListener를 fadeOut ObjectAnimator에 추가하여 완료되면 이미지 배열에서 임의의 숫자를 선택하여 임의로 선택한 새 이미지를 설정하고 새 이미지로 페이드 인합니다. 이미지, fadeIn ObjectAnimator 사용.
4) 실행 파일을 만들고 실행 방법에서 fadeOut 애니메이션을 시작하십시오.
5) 실행 파일에서 handler.postDelayed를 호출하고이 이미지를 사용하여 페이드 아웃하기 전에 각 이미지를 얼마나 오래 머무르게 할 것인지 결정하십시오.
6) Runnable의 run 메서드가 끝나면 handler.postDelayed를 다시 호출하여 이미지가 계속 페이드 인/페이드 아웃되도록합니다.하지만 조건부 문을 사용하여 애니메이션을 사용해야하는 이유는 "실행 중"이라는 부울을 사용하여 루프에서 처리기를 중지해야 할 때 false로 설정할 수 있기 때문입니다.
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
boolean running = true;
final int[] images = {R.drawable.image1, R.drawable.image2, R.drawable.image3,
R.drawable.image4, R.drawable.image5};
final Random random = new Random();
final Handler handler = new Handler();
final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(mImageView, "alpha", 0f, 1f);
fadeIn.setDuration(1000);
final ObjectAnimator fadeOut = ObjectAnimator.ofFloat(mImageView, "alpha", 1f, 0f);
fadeOut.setDuration(1000);
fadeOut.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
int rand = random.nextInt(images.length);
mImageView.setImageResource(images[rand]);
fadeIn.start();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
Runnable runnable = new Runnable() {
@Override
public void run() {
fadeOut.start();
if (running) {
handler.postDelayed(this, 5000);
}
}
};
handler.postDelayed(runnable, 5000);
}
이것은 페이드 인/페이드 아웃 애니메이션을 사용하여 선택한 이미지를 (무작위로) 반복합니다. 동일한 이미지가 두 번 연속으로 나타나지 않도록 몇 가지 검사를 추가 할 수 있습니다.
답변이 업데이트되었는지 확인하십시오. – AndroidHacker
코드가 작동하지만 두 가지 문제가 있습니다. 1) 페이드가 없습니다. 페이드 아웃 전환. 2) 이것은 모든 이미지가 설정되면 이미지 변경을 중지합니다. – MaggotSauceYumYum