IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

L'apparition d'une view déclenche les animations trop tôt (WebView)


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut L'apparition d'une view déclenche les animations trop tôt (WebView)
    Bonjour,

    J'ai une application qui enchaine des webviews avec animation.
    Les animations sont déclenchées au moment du onPageFinished du WebViewClient par des setVisibility GONE et VISIBLE.
    Jusque là, ça fonctionne très bien.

    Comme les chargements peuvent prendre du temps entre le moment où l'utilisateur fait une action et l’exécution de l'animation, j'ai ajouter d'abord une ProgressBar que je rend visible dans le onPageStarted et que je fais disparaitre dans le onPageFinished.

    Problème : Les animations sont déclenchées alors que la page n'a pas terminée d'être chargée.

    J'ai remplacer la ProgressBar par une TextView, pensant à un problème lié à l'animation de la ProgressBar. Changé aussi l'emplacement des affichages de cette nouvelle view. Rien n'y fait. Dès que cette view apparait, les animations s’exécutent.

    Merci de votre aide.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Je ne m'explique pas le comportement, mais voilà comment j'ai contourné le problème :

    1 - Pour le layout qui me lançait les animations, je suis passé par setVisibility View.VISIBLE et View.INVISIBLE (Plus de GONE)

    2 - Les animations sont encapsulées dans des Runnable...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    final Runnable frontViewFadeIn = new Runnable(){
    	public void run ()
    	{
    		long duration = 800;
     
    		anim0 = AnimationUtils.loadAnimation(TestLayoutActivity.activity, android.R.anim.fade_in);
    		anim0.reset();
    		anim0.setDuration(duration);
    		anim0.setAnimationListener(animationCounter);
    		TestLayoutActivity.activity.frontView.clearAnimation();
    		TestLayoutActivity.activity.frontView.setAnimation(anim0);
    	}
    };
    ...que je gère avec des customs WebView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    public class PKWebView extends WebView
    {
     
    	Runnable animation;
    ...
    	public void clearAnimation ()
    	{
    		super.clearAnimation();
    		this.animation = null;
    	}
     
    	public synchronized void prepareAnimation(Runnable animation)
    	{
    		this.animation = animation;
    	}
     
    	public synchronized void runAnimation ()
    	{
     
    		if ( this.animation != null ) TestLayoutActivity.activity.runOnUiThread( this.animation );
     
    		this.animation = null;
    	}
    ...
    3 - Enfin, dans un WebViewClient, les animations sont donc chargées au dernier moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    . . .
    @Override
    public void	 onPageFinished(WebView view, String url)
    {
            super.onPageFinished(view, url);
     
            if ( clearOn ) return;
     
            TestLayoutActivity.activity.runOnUiThread(new Runnable(){
            	public void run ()
            	{
            		TestLayoutActivity.activity.progressBarLoading.setVisibility(View.INVISIBLE);
            	}
    	});
     
    	((PKWebView)view).runAnimation();
    }
    . . .
    Pas très friendly, mais maintenant ça fonctionne.

    KF.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 26/08/2010, 04h21
  2. Recuperer les noms des champs d'une View
    Par sihammaster dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/05/2010, 12h22
  3. Réponses: 2
    Dernier message: 18/06/2009, 15h09
  4. [PPT-2007] Comment lire une seule fois la narration et les animations avec la visionneuse
    Par winnypouth dans le forum Powerpoint
    Réponses: 10
    Dernier message: 28/05/2009, 17h06
  5. toutes les animations lancées au lieu d'une !
    Par vcordonnier dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 28/08/2007, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo