Interpolador personalizado de Android con xml

Intenté hacer mi interpolador personalizado siguiendo las GUIdes de la API de Android. Así que este es el interpolador.

<?xml version="1.0" encoding="utf-8"?> <customInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:factor="2" /> 

Pero cuando trato de usarlo en animación:

 <?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android"> android:fromXScale="1" android:toXScale="5" android:duration="3000" android:interpolator="@anim/custom_interpolator"/> </scale> 

Y no pasa nada – la vista se refresca. Porqué es eso ? Y por qué si trato de usar es de esa manera:

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="1" android:toXScale="5" android:duration="3000" android:interpolator="@anim/custom_interpolator"/> </set> 

Con este código:

 AnimationSet animation = (AnimationSet)AnimationUtils.loadAnimation(AnimationActivity.this, R.anim.animation); animationView.startAnimation(animation); 

Se lanzan algunas excepciones:

  java.lang.RuntimeException: Unknown interpolator name: customInterpolator at android.view.animation.AnimationUtils.createInterpolatorFromXml(AnimationUtils.java:422) at android.view.animation.AnimationUtils.loadInterpolator(AnimationUtils.java:285) at android.view.animation.Animation.setInterpolator(Animation.java:391) at android.view.animation.Animation.<init>(Animation.java:255) at android.view.animation.ScaleAnimation.<init>(ScaleAnimation.java:63) at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:119) at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:115) at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:92) at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:73) at com.example.someone.studyproject.AnimationActivity$4.onClick(AnimationActivity.java:61) at android.view.View.performClick(View.java:4633) at android.view.View$PerformClick.run(View.java:19330) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5356) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(Native Method) 

Es raro, nunca crear mi interpolador personalizado con xml (quería hacerlo en xml sólo para practicarlo). Gracias por adelantado.

Ahora intento:

 <scale android:fromXScale="1" android:toXScale="5" android:pivotX="50%" android:pivotY="50%" android:duration="3000"/> 

Y esto no funciona – la imagen desaparece y después de 5 segundos está de vuelta. Porqué es eso ? ¿Por qué desaparece la imagen en lugar de cambiar el tamaño?

Echa un vistazo al error que está lanzando. "CustomInterpolator" no es un interpolador real. Acabas de crear esa etiqueta desde la nada. Tienes que usar las clases de interpolador de android incorporadas si quieres modificarlas. Por ejemplo:

CustomInterpolator.xml

 <accelerateInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:factor="2" /> 

Echa un vistazo a este enlace para diferentes tipos de interpoladores disponibles en Android.

Si no desea utilizar uno de los interpoladores androides existentes, puede crear su propio programación.

CubicAccelerateDecelerateInterpolator.java

 public class CubicAccelerateDecelerateInterpolator implements Interpolator { @Override public float getInterpolation(float t) { float x = t * 2.0f; if (t < 0.5f) { return 0.5f * x * x * x; } x = (t - 0.5f) * 2 - 1; return 0.5f * x * x * x + 1; } } 

Como puede ver, necesita crear una función que devuelva el valor de interpolación entre 0 y 1 para el tiempo t . I = f ( t )

Nota: Si lo hace de esta manera, no puede hacer referencia a este interpolador en XML. Usted tiene que crear su animación programáticamente.

  • ¿Cuál es la diferencia exacta entre gravedad y layout_gravity
  • Múltiples animaciones en 1 imageview android
  • Filtrado SPINNER para los datos XML que se habían recuperado
  • Definir la fuente de la carpeta de activos en el archivo xml android
  • ¿Cómo mostrar el diseño del menú en el diseño mainactivity en la ventana de vista previa en Android Studio?
  • Cómo poner un botón entre dos diseños
  • ¿Es posible guardar layout_weight en un xml?
  • Alineación de un TextView y ImageView dentro de un LinearLayout
  • Cada vez que hago clic en un archivo XML de Android en Eclipse, carga datos para todas las versiones de API
  • Cómo insertar texto "<<" en TextView?
  • Cómo aumentar el tamaño de transport.dump de 256 bytes a 512 o más bytes en KSOAP2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.