Ver la Versión Completa : [ CONSULTA ] Como hacer una animacion que empiece al mismo tiempo en que se muestra la Activity
LEAJIM_454
23/08/14, 03:33:12
Hola, quisiera que por favor alguien ayude, quisiera hacer una animacion que empiece a animarse sin necesidad de hacer ningun toque en la pantalla, que simplemente inicie cuando se muestre la actividad, gracias de antemano.
kriogeN
23/08/14, 10:51:13
Lo más probable es que en el onStart te funcione, pero si quieres que sea justo justo justo en cuanto aparezca la Activity en pantalla, lo mejor es hacerlo en el ViewTreeObserver.OnGlobalLayoutListener
LEAJIM_454
23/08/14, 22:32:16
Hola, muchas gracias lo intentente con el metodo onStart alguien podria por favor darme alguna idea para que funcione seria genial mil gracias de antemano.
LEAJIM_454
25/08/14, 22:58:20
Alguien que pueda darme alguna idea? por favor...
Dexafree
26/08/14, 14:09:25
Seria interesante que comentaras si el metodo comentado por kriogeN, el del ViewTreeObserver.OnGlobalLayoutListener te funcionó antes de pedir mas ayuda :ok:
kriogeN
26/08/14, 17:45:36
Seria interesante que comentaras si el metodo comentado por kriogeN, el del ViewTreeObserver.OnGlobalLayoutListener te funcionó antes de pedir mas ayuda :ok:
Con el onStart debería funcionar, el del ViewTreeObserver lo uso cuando necesito alguna medida para configurar la animación, pero el resto de las veces lo hago en onStart
Otra cosa es que esté programando mal la animación.
Pon un botón y pon el código que inicia la animación en el botón, cuando la animación funcione entonces la trasladas a onStart.
LEAJIM_454
27/08/14, 19:13:09
Hola, muchas gracias por responder este es mi Layout
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.JimSoft.exampleactivity.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bienvenido Inanh ¿Como estas?" />
<ImageView
android:id="@+id/JimAnimation"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:gravity="center"/>
</RelativeLayout>
Y este es mi codigo
package com.JimSoft.exampleactivity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity {
private Button btnIniciar, btnDetener;
private ImageView ivAnimacion;
private AnimationDrawable savingAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//IniciarAnimacion();
}
protected void OnStart(){
IniciarAnimacion();
}
public void IniciarAnimacion(){
ivAnimacion = (ImageView)findViewById(R.id.JimAnimation);
ivAnimacion.setBackgroundResource(R.drawable.anima cion);
savingAnimation = (AnimationDrawable)ivAnimacion.getBackground();
savingAnimation.start();
}
}
Por mucho que lo intente no funciona, no se donde estoy fallando cuando utilizo un onCLickListener funciona bien pero como dije no quiero que se haga ningun click, no se que mas hacer.
kriogeN
28/08/14, 00:13:51
Pon el xml que define al AnimationDrawable.
LEAJIM_454
29/08/14, 18:57:27
Mil gracias por las respuestas y me disculpo por no responder rapido, mi hermana ocupó la PC para hacer su tesis XD... aqui esta mi animationDrawable.xml que lo coloco en la carpeta /res/drawable/
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/saving_image_white" android:duration="150" />
<item android:drawable="@drawable/saving_image_white_1" android:duration="150" />
<item android:drawable="@drawable/saving_image_white_2" android:duration="150" />
<item android:drawable="@drawable/saving_image_white_3" android:duration="150" />
<item android:drawable="@drawable/saving_image_white_4" android:duration="150" />
</animation-list>
kriogeN
29/08/14, 19:10:05
Lo único que se me ocurre es como la Activity aún no está dibujada el getBackground devuelva información erronea.
Usa el OnGlobalLayoutListener del ViewTreeObserver, con eso no fallas.
LEAJIM_454
29/08/14, 20:25:27
Gracias de nuevo implemente en mi actividad lo que me dijiste y no funciona no se si lo estare haciendo mal por favor corrigeme, gracias de nuevo.
package com.JimSoft.exampleactivity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.ViewTreeObserver.OnGlobalLayoutListen er;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity implements OnGlobalLayoutListener {
private ImageView ivAnimacion;
private AnimationDrawable savingAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void onGlobalLayout() {
ivAnimacion = (ImageView)findViewById(R.id.JimAnimation);
ivAnimacion.setBackgroundResource(R.drawable.anima cion);
savingAnimation = (AnimationDrawable)ivAnimacion.getBackground();
savingAnimation.start();
}
}
kriogeN
30/08/14, 02:02:14
Añade esto al final del onCreate:
findViewById(R.id.JimAnimation).getViewTreeObserve r().addOnGlobalLayoutListener(this);
LEAJIM_454
30/08/14, 05:47:29
kriogeN Eres lo maximo!!!... Me funcionó, mil gracias, enserio mil gracias, me ayudaste mucho, eres el mejor.
kriogeN
30/08/14, 16:33:27
kriogeN Eres lo maximo!!!... Me funcionó, mil gracias, enserio mil gracias, me ayudaste mucho, eres el mejor.
De nada, pero si te fijas es lo que te dije que hicieses hace 1 semana, que con eso te funcionaría seguro.
LEAJIM_454
01/09/14, 09:57:10
Tienes mucha razón, la proxima te hare caso a la primera, mil gracias de nuevo, una cosa no sabras una forma facil de implementar in app billing en una aplicación?
Dexafree
01/09/14, 10:54:22
Tienes mucha razón, la proxima te hare caso a la primera, mil gracias de nuevo, una cosa no sabras una forma facil de implementar in app billing en una aplicación?
Esa pregunta ya la has hecho tambien en otros hilos, y ha sido respondida ahi :ok:
http://www.htcmania.com/showpost.php?p=15063490&postcount=7
LEAJIM_454
03/09/14, 00:24:30
Gracias por tu respuesta pero esa pagina ya la vi es muy buena pero explica todo lo que se debe hacer en android studio y yo uso eclipse, es mucho mas liviano y facil de manejar XD, ¿alguna otra alternativa?
Edito: Lo veo muy bien por lo que veo es una paginta tuya, no podrias por favor pasarme el codigo fuente del proyecto que usas ahi, no importa que sea de android studio es que aprendo un poco mas viendo ejemplos completos, mil gracias de antremano.
jmmunoz
08/09/14, 21:59:01
Creas un fichero anim.xml
Y luego le asignas la animación al elemento en el oncreate... con eso ya lo lanza en el momento de crear el activity
Saludos
LEAJIM_454
08/09/14, 22:02:17
Creas un fichero anim.xml Y luego le asignas la animación al elemento en el oncreate... con eso ya lo lanza en el momento de crear el activity Saludos
Hola, este problema ya me lo resolvio kriogeN pero muchas gracias por tu respuesta y por cierto lo que comentaste no funciona es mejor usar un onGlobalLayoutListener.
jmmunoz
09/09/14, 09:21:08
Hola, este problema ya me lo resolvio kriogeN pero muchas gracias por tu respuesta y por cierto lo que comentaste no funciona es mejor usar un onGlobalLayoutListener.
A mi me funciona perfectamente:confused:
LEAJIM_454
09/09/14, 18:55:37
A mi me funciona perfectamente:confused:
Estoy muy interesado en como te funciono por que cada vez que intento hacerlo en onStart no me sirve y es por eso que uso onGlobalLayoutListener XD
kriogeN
09/09/14, 20:50:30
Creas un fichero anim.xml
Y luego le asignas la animación al elemento en el oncreate... con eso ya lo lanza en el momento de crear el activity
Saludos
Eso funciona si la animación es infinita, porque cuando se va a mostrar la Activity ya se está ejecutando la animación.
Pero si la animación es de 1 sola vez y encima es corta cuando se va a mostrar la animación no ves nada.
jmmunoz
10/09/14, 13:07:39
Eso funciona si la animación es infinita, porque cuando se va a mostrar la Activity ya se está ejecutando la animación.
Pero si la animación es de 1 sola vez y encima es corta cuando se va a mostrar la animación no ves nada.
Dicrepo... la app que estoy haciendo tiene una animación finita (dura 2 segundos) y se ve perfectamente al inicio del activity....
Para muestra un botón. ...
Animación al comenzar el activity:
http://youtu.be/lctuTeW4az0
http://youtu.be/lctuTeW4az0
Si quieres que la animacion sea con imagenes también te puedo hacer un video...
kriogeN
10/09/14, 13:45:51
Dicrepo... la app que estoy haciendo tiene una animación finita (dura 2 segundos) y se ve perfectamente al inicio del activity....
Para muestra un botón. ...
Animación al comenzar el activity: http://youtu.be/lctuTeW4az0
Si quieres que la animacion sea con imagenes también te puedo hacer un video...
Pues tendrás la gran suerte de que tu móvil lo hace así, pero no es la forma correcta de hacerlo, de hecho en TODOS los sitios que preguntan como lanzar una Animación al principio de una Activity sólo dan 2 soluciones posibles:
1) Hacerlo en el onWindowFocusChanged.
2) Hacerlo en el onCreate pero usando un Post-Runnable.
Yo lo hago en el ViewTreeObserver porque me parece mejor, pero en el fondo es casi lo mismo que el método 1, el método 2 desde luego no me gusta nada.
Tengo una app que tiene una animación infinita de un botón "saltando", esa si la pongo en el onCreate, porque cuando la Activity se muestra me la pela que esté el botón más arriba o más abajo. Así que me remito a mi anterior post, si lo haces en el onCreate la animación ya comienza, pero la Activity aún no se ha mostrado, y por eso si la animación es corta y de 1 sola vez no la ves.
EDITO: Si usas como versión mínima a ICS ya no se si funciona correctamente o no en el OnCreate, porque estarás usando las animaciones de HoneyComb. Yo siempre tengo como versión mínima a Froyo, y por tanto uso las animaciones clásicas o NineOldAndroids.
jmmunoz
10/09/14, 15:09:20
Pues tendrás la gran suerte de que tu móvil lo hace así, pero no es la forma correcta de hacerlo, de hecho en TODOS los sitios que preguntan como lanzar una Animación al principio de una Activity sólo dan 2 soluciones posibles:
1) Hacerlo en el onWindowFocusChanged.
2) Hacerlo en el onCreate pero usando un Post-Runnable.
Yo lo hago en el ViewTreeObserver porque me parece mejor, pero en el fondo es casi lo mismo que el método 1, el método 2 desde luego no me gusta nada.
Tengo una app que tiene una animación infinita de un botón "saltando", esa si la pongo en el onCreate, porque cuando la Activity se muestra me la pela que esté el botón más arriba o más abajo. Así que me remito a mi anterior post, si lo haces en el onCreate la animación ya comienza, pero la Activity aún no se ha mostrado, y por eso si la animación es corta y de 1 sola vez no la ves.
EDITO: Si usas como versión mínima a ICS ya no se si funciona correctamente o no en el OnCreate, porque estarás usando las animaciones de HoneyComb. Yo siempre tengo como versión mínima a Froyo, y por tanto uso las animaciones clásicas o NineOldAndroids.
Es mucho mas eficiente lanzar funciones que usar los metodos de sistema para hacer las cosas... igual que es más eficiente un lenguaje interprerado que un lenguaje compilado.... ajaaaa... bien...
Bueno... creo que habría sido un bonito debate que enriqueceria a quien lo leyera... pero...
No voy a debatir con quien me habla así y su argumentación es todo el mundo lo hace así....
Ale... a seguir dsifrutando
EDITADO POR MODERACIÓN:
RESPETO.
LEAJIM_454
10/09/14, 15:57:24
Es mucho mas eficiente lanzar funciones que usar los metodos de sistema para hacer las cosas... igual que es más eficiente un lenguaje interprerado que un lenguaje compilado.... ajaaaa... bien... Bueno... creo que habría sido un bonito debate que enriqueceria a quien lo leyera... pero... No voy a debatir con quien me habla así y su argumentación es todo el mundo lo hace así.... Ale... a seguir dsifrutando
La verdad no se por que te ofendes kriogen tiene mucha razon en lo que dice si lo haces en onCreate no funciona, agradesco mucho tu ayuda, pero creo que me fue mejor con el metodo de kriogen es mucho mas cencillo y note enrrollas tanto, gracias de nuevo kriogeN XD y tambien a ti jimmi.
EDITADO POR MODERACIÓN:
QUOTE editado.
kriogeN
10/09/14, 17:46:47
Es mucho mas eficiente lanzar funciones que usar los metodos de sistema para hacer las cosas... igual que es más eficiente un lenguaje interprerado que un lenguaje compilado.... ajaaaa... bien...
Bueno... creo que habría sido un bonito debate que enriqueceria a quien lo leyera... pero...
No voy a debatir con quien me habla así y su argumentación es todo el mundo lo hace así....
Ale... a seguir dsifrutando
No creo que haya dicho nada ofensivo, pero bueno, haya tú.
Y no soy yo el que dice que no es la forma correcta, lo dicen todos los foros especializados (stackoverflow por ejemplo), y si lo piensas la verdad es que llevan razón.
No es correcto hacer nada de animación hasta que como mínimo no se haya ejecutado el OnLayout, y eso ocurre bastante después del OnCreate, incluso después del OnStart. ¿Funciona en algunos casos? Si, pero no es correcto. Igual que tampoco es correcto modificar Views desde un hilo ¿Funciona algunas veces? Si, pero la mayoría de las veces no.
Pero en fin, no voy a seguir discutiendo si por tan poco ya te sientes ofendido.
EDITO: Sólo voy a añadir algo más, yo lo he dicho por ayudarte, tengo 3 años de experiencia de programación en Android y ahora mismo trabajo como jefe de proyectos de Android en una empresa, así que estoy con Android todo el día, y al principio las animaciones las hacía como las haces tú hasta que me dí cuenta que había ocasiones (bastantes) en las que fallaba, así que sólo era por ayudarte desde mi experiencia.
Y el "pues porque te funciona", que realmente tampoco es como lo pintas, es porque yo también he pasado por eso, programar algo que funciona en un móvil, irme a otro y no funciona, y tener que cambiarlo para que funcione en todos.
EDITADO POR MODERACIÓN:
QUOTE editado.
Nonamed
11/09/14, 00:29:35
Seguimos.
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.