Traducir y escalar la animación en paralelo

Quiero mover alguna vista desde cualquier posición al centro de la pantalla y escalar en paralelo. Si eso es demasiado complicado, traducir y escalar secuencialmente también es aceptable. Pero ni yo podría lograrlo. Creo que es el problema con el punto de pivote. Pero lo siento no encontré solución. Por favor ayuda. Tal vez sea fácil para aquellos que desarrollan juegos, sobre los cuales no hice nada.

A continuación se muestra mi código:

private void moveViewToScreenCenter( final View view ){ DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics( dm ); int statusBarOffset = dm.heightPixels - rootLayout.getMeasuredHeight(); int originalPos[] = new int[2]; view.getLocationOnScreen( originalPos ); int xDelta = (dm.widthPixels - view.getMeasuredWidth())/2 - originalPos[0]; int yDelta = (dm.heightPixels - view.getMeasuredHeight())/2 + statusBarOffset - originalPos[1]; AnimationSet animSet = new AnimationSet(true); animSet.setFillAfter(true); animSet.setDuration(1000); animSet.setInterpolator(new BounceInterpolator()); TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta); animSet.addAnimation(translate); ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f); animSet.addAnimation(scale); view.startAnimation(animSet); } 

Actualización: código anterior puede manejar imageview de la región superior izquierda, los de la región inferior derecha ir en diagonal a través de la pantalla y desaparecer.

Después de unas cuantas pruebas sin esperanza, lo hice, lo que es demasiado sorprendente.

A continuación se muestra el código, que se puede utilizar para mover cualquier vista en un diseño al centro de ese diseño:

 private void moveViewToScreenCenter( final View view ){ DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics( dm ); int originalPos[] = new int[2]; view.getLocationOnScreen( originalPos ); int xDelta = (dm.widthPixels - view.getMeasuredWidth() - originalPos[0])/2; int yDelta = (dm.heightPixels - view.getMeasuredHeight() - originalPos[1])/2; AnimationSet animSet = new AnimationSet(true); animSet.setFillAfter(true); animSet.setDuration(1000); animSet.setInterpolator(new BounceInterpolator()); TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta); animSet.addAnimation(translate); ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f); animSet.addAnimation(scale); view.startAnimation(animSet); } 
  • Escala automática TextView Text para ajustar dentro de límites
  • Android - Pinch zoom coordinar el evento ontouch
  • ¿Qué pasa con setScaleX / setScaleY?
  • Mover, escalar y recortar la imagen en android como facebook foto de perfil
  • SetPivotX funciona extraño en la vista escalada
  • Zoom en un lienzo utilizando la función canvas.scale?
  • Escala drawableLeft en el botón con el texto
  • Cómo obtener una animación inversa de ActivityOptions.makeScaleUpAnimation al terminar la actividad de los niños en android?
  • Escalado de vista de superficie OpenGL para diferentes DPI
  • Ajustar imagen en ImageButton en Android
  • Escala de una aplicación Phonegap para diferentes tamaños de pantalla de Android / densidades?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.