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.

  • ¿Cómo representar una relación Many-To-Many en XML o en otro formato de archivo simple?
  • Documentación para estilos en recursos de Android
  • ActionBar / Barra de herramientas no se muestra en la versión de Lollipop de la aplicación
  • Lectura de un archivo .xml desde sdcard
  • Android: Qué práctica es mejor para usar CoordinatorLayout
  • Color Estado Lista no reconocida en forma Drawable
  • Android: Archivo XML de caché de RSS Feed
  • Importa datos de JSON o XML feed y crea una lista en Android
  • Error Button textColor y drawablePadding en pre-Lollipop usando Appcompat
  • Deshabilite la capacidad de edición y el enfoque de EditText (como TextView)
  • Escapar de soportes de ángulo en XML en Eclipse / Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.