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?

One Solution collect form web for “Interpolador personalizado de Android con xml”

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.

  • NestedScrollview + TextView + RecyclerView
  • Lectura y escritura de archivos XML
  • Xml extraer elementos del analizador xml
  • ¿Por qué desaparecen los elementos cuando se desplaza el listView?
  • Cambio de imagen de Android programáticamente?
  • ¿Cómo cambio el color y / o dibujable del divisor TabWidget en Android?
  • XML con la biblioteca SimpleXML - Rendimiento en Android
  • Android: java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable
  • Eclipse no abrirá archivos Xml de Android
  • Android XmlPullParser UTF-8 problema
  • Cómo especificar el valor nulo para un recurso de cadena en xml en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.