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.

  • ¿Existe una clase integrada de Android para crear XML de forma no continua?
  • Android: verifica la firma de XML
  • String-arrays de referencia en android strings.xml
  • Recursos de importación android de proyecto de biblioteca
  • Cómo vincular un layout_width y layout_height mediante el enlace de datos en Android
  • Mostrar contenido en la barra de herramientas
  • Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
  • ¿Cómo aplicar la validación del archivo DTD local al archivo xml en java?
  • "El contenido tiene vista con el atributo id 'android.r.id.list' que no es una clase ListView." Cuando se crea una vista de lista en un fragmento
  • Android Studio - ¿Cómo se logró este truco de estructura de archivos de recursos?
  • Convertir XML a objeto JSON en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.