Cómo hacer una transición suave de una imagen a otra

Tengo una actividad donde estoy cambiando el ImageView periódicamente, para eso escribí la línea de código abajo.

imageview.setImageUri(resId); 

Estoy aumentando el id de recurso. Funciona bien, pero hay una transición repentina de una imagen a otra. No quiero eso, quiero la transición suave de la imagen de ver a otra imagen. ¿Cómo puedo hacer eso?

Prueba esto

 ImageView demoImage = (ImageView) findViewById(R.id.DemoImage); int imagesToShow[] = { R.drawable.image1, R.drawable.image2,R.drawable.image3 }; animate(demoImage, imagesToShow, 0,false); private void animate(final ImageView imageView, final int images[], final int imageIndex, final boolean forever) { //imageView <-- The View which displays the images //images[] <-- Holds R references to the images to display //imageIndex <-- index of the first image to show in images[] //forever <-- If equals true then after the last image it starts all over again with the first image resulting in an infinite loop. You have been warned. int fadeInDuration = 500; // Configure time values here int timeBetween = 3000; int fadeOutDuration = 1000; imageView.setVisibility(View.INVISIBLE); //Visible or invisible by default - this will apply when the animation ends imageView.setImageResource(images[imageIndex]); Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); // add this fadeIn.setDuration(fadeInDuration); Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); // and this fadeOut.setStartOffset(fadeInDuration + timeBetween); fadeOut.setDuration(fadeOutDuration); AnimationSet animation = new AnimationSet(false); // change to false animation.addAnimation(fadeIn); animation.addAnimation(fadeOut); animation.setRepeatCount(1); imageView.setAnimation(animation); animation.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { if (images.length - 1 > imageIndex) { animate(imageView, images, imageIndex + 1,forever); //Calls itself until it gets to the end of the array } else { if (forever == true){ animate(imageView, images, 0,forever); //Calls itself to start the animation all over again in a loop if forever = true } } } public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } }); } 

Pruebe la animación alfa. Primero desvanezca la vista de la imagen, en el extremo de la animación, cambie el recurso y luego desvanezca la vista de la imagen.

Para una transición suave, debes utilizar Animaciones en Android, comienza leyendo el siguiente enlace: http://www.vogella.com/articles/AndroidAnimation/article.html

Hay muchas preguntas similares sobre stackoverflow sobre animaciones y muchos tutoriales están disponibles en la red acerca de este tema. Una búsqueda simple en google le traerá toneladas de resultado

  • Programa Android para acercar y alejar con la ayuda de seekbar?
  • Android: Establecer ImageView layout_height mediante programación
  • Mostrar imagenVer superior de RelativeLayout
  • ¿Cómo puedo obtener el mapa de bits en caché que he descargado con Volley ImageLoader?
  • Cómo configurar el efecto de brillo exterior en ImageView?
  • Android - Crossfade mutiple imágenes en un ImageView
  • Haz que la imagen aparezca en la mitad de la pantalla
  • ViewPager, PagerAdapter y Bitmap causan pérdida de memoria (OutOfMemoryError)
  • Cómo obtener la imagen del servicio web a la aplicación Android
  • En Android, ¿puedo utilizar la imagen de los elementos de layout xml?
  • La escala de ImageView no funciona
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.