|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Duda con ObjectAnimator
Buenas, estoy jugando un poco con la clase ObjectAnimator pero hay cosas que no salen o no entiendo muy bien.
Un ejemplo es este codigo el cual me da un error Fatal exception main: java.lang.NosuchFieldError: android.view.View.ALPHA Código:
public class PropertyAnimations extends Activity{
CheckBox mCheckBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button alphaButton = (Button) findViewById(R.id.alphaButton);
ObjectAnimator alphaAnimation = ObjectAnimator.ofFloat(alphaButton,
View.ALPHA, 0);
alphaAnimation.setRepeatCount(1);
alphaAnimation.setRepeatMode(ValueAnimator.REVERSE);
alphaAnimation.start();
}
}
EDITO: Hola, Es curioso, si ejecuto la aplicacion con el AVD me da el error indicado, pero si uso el galaxy s3 me corre sin problemas. ¿ A que se debe? Última edición por manolazo Día 22/04/13 a las 01:40:55. |
|
|
|
#2
|
||||
|
||||
|
Para poder usar ObjectAnimator necesitas como mínimo HoneyComb (y para algunas cosas concretas ICS). En el AVD tendrás configurado una versión anterior a HoneyComb, mientras que en el S3 si que tienes como mínimo ICS.
Y en el caso concreto de la propiedad ALPHA, necesitas ICS. Si necesitas usar tu programa en versiones anteriores a ICS y quieres seguir usando las animaciones, usa NineOldAndroids: http://nineoldandroids.com |
|
#3
|
||||
|
||||
|
hoila,
No me di cuenta que tenia puesto un avd con una versión anterior a ICS , ahora con el mas nuevo funciona correctamente. Pero surge otra duda respecto a ObjectAnimator y Keyframe: Código:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button rotateButton = (Button) findViewById(R.id.rotateButton);
ObjectAnimator rotateAnimation = ObjectAnimator.ofFloat(rotateButton , View.ROTATION, 180);
rotateAnimation.start();
}
Pero si usamos Keyframes como en este caso, no rotaria el boton: Código:
Keyframe kf1 = Keyframe.ofFloat(.5f, 180f);
Keyframe kf2= Keyframe.ofFloat(.99f, 45f);
Keyframe kf3 = Keyframe.ofFloat(1f, 195f);
PropertyValuesHolder rotacion= PropertyValuesHolder.ofKeyframe("rotacion", kf1, kf2);
ObjectAnimator rotateAnimation2 = ObjectAnimator.ofPropertyValuesHolder(rotateButton, rotacion);
rotateAnimation2.start();
En el caso de abajo quiero qoue rote primero 180 grados y luego 45 por ejemplo . pero no hace nada. ALguna sugerencia?? EDITO: Veo que el fallo esta en poner: .ofKeyframe("rotacion", kf1, kf2); en vez de "rotation". No obstante no veo que varie si se cambia el primer parametro del Keyframe, es decir el tiempo , he probado poner cualquier valor en el primer argumento y no varia nada. Alguna sugenrencia? gracias. Última edición por manolazo Día 22/04/13 a las 21:57:32. |
![]() |
Estás aquí
|
||||||
|
||||||