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 :

Rafraîchir View android


Sujet :

Composants graphiques Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Rafraîchir View android
    Bonjour,

    Je suis débutant en android, et je suis confronté à un problème sur le rafraîchissement de View.

    Je vous d'écrie la situation.
    C'est un jeu sous forme de grille (comme un scrabble).
    Lorsque l'utilisateur trouve un mot j'aimerai le surligné.

    Pour un gain de performance j'ai séparer le traitement mémoire, du traitement IHM.
    Donc mon changement d'état des views se fait via une asynctask.

    J'ai pu lire après quelques recherche qu'il fallait utiliser
    View.inviladated();
    Vienw.refreshDrawableState();
    Met manipulation de View se font bien dans les méthodes
    onProgressUpdate()
    onPostExecute()

    Mais malheureusement mon changement d'état se fait en toute fin de traitement.

    Mes Views sont liées à un XML de transition, pour passer de l'état normal à sélectionné.

    Si vous avez une idée merci d'avance.
    Bonne journée.

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2011
    Messages : 144
    Points : 118
    Points
    118
    Par défaut
    Salut !

    Pour ma part, j'ai aussi été confronté face à un problème de rafrachissement (sur une listView), exécuté par une asyntask lorsque le traitement est terminé.

    Je ne sais pas si tu utilise un adapter, mais au cas où, peut-être que ça t'aideras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Override
    protected void onPostExecute (Void param)
    {	
    	monAdapter.notifyDataSetChanged();
    }

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Voila le code final pas très propre, mais il répond à mon besoin.

    Et maintenant le CODE de l'asyncTask :
    Fonctionne avec toutes les view, la seul condition est de charger listAnim avant d’exécuter l'asyncTask et de modifier le cast dans doCreatAnimation et doResetAnimation.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    private class CreatTransition extends AsyncTask<Void, Integer, Void>
    {
    TransitionDrawable transitionTemp=null;
    //Valeur pour les temps de transition en ms
    int transitionDuration = 500;
     
    @Override
    protected void onPreExecute()
    {
    super.onPreExecute();
    }
     
    @Override
    protected void onProgressUpdate(Integer... values)
    {
    super.onProgressUpdate(values);
    //Important que la durée soit la meme que ds le doInBackground()
    doCreatTransition();
    }
     
    @Override
    protected Void doInBackground(Void... arg0)
    {
    publishProgress(0);
    //Temporisation du temps de la transition + 500 ms pour attendre le onProgressUpdate
    //IMPORTANT pour ne pas lancer le reverse de l'animation avant meme quelle ne soit finie
    doThreadWait(transitionDuration+500);
    return null;
    }
     
    @Override
    protected void onPostExecute(Void result)
    {
    //Fonction permettant de remettre l'état d'origine sur la view
    doResetTransition();
    // Application de la gravité dans la grille + Maj de la Grille IHM
    gravityControlCol();
    updateViewArea();
    Log.d("RESET LISTEANIM", "0");
    listeAnim.clear();
    }
     
    protected ErrorStatus doCreatTransition()
    {
    try
    {
    for (int cpt=0;cpt<listeAnim.size();cpt++)
    {
    //Stockage de la view en memoire temp dans un TextView
    TextView temp = listeAnim.get(cpt); 
    //Recuperation du background de la vue dans un objet TransitionDrawable en vue de son changement d'état
    transitionTemp = (TransitionDrawable) temp.getBackground();
    //Debut de la transition avec le temps defini en var global
    transitionTemp.startTransition(transitionDuration);
    //Force le rafraichissement de notre view normalement pas obligatoire vue que nous sommes dans un thread séparé de notre appli
    temp.refreshDrawableState();
    }
    return ErrorStatus.NO_ERROR;
    }
    catch (Exception e)
    {return ErrorStatus.ERROR_1;}
    }
     
    protected ErrorStatus doThreadWait(int values) {
    try
    {
    Thread.sleep(values);
    return ErrorStatus.NO_ERROR;
    }
    catch (InterruptedException e)
    {
    return ErrorStatus.ERROR_3;
    }
     
    }
     
    protected ErrorStatus doResetTransition()
    {
    try
    {
    for (int cpt=0;cpt<listeAnim.size();cpt++)
    {
    //retour au background d'origine idem que pour le doCreattransition
    TextView temp = listeAnim.get(cpt);
    transitionTemp = (TransitionDrawable) temp.getBackground();
    //Permet d'init le background à son état d'origine toujours en fonction de temps définie en var global
    transitionTemp.reverseTransition(transitionDuration);
    temp.refreshDrawableState();
    }
     
    return ErrorStatus.NO_ERROR;
    }
    catch (Exception e)
    {return ErrorStatus.ERROR_2;}
    }
    }

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

Discussions similaires

  1. VIew Pager et Expandable View Android
    Par kevingiroux dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 10/08/2014, 17h40
  2. Problém affichage maps view android
    Par othman22222 dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 03/06/2013, 10h23
  3. Réponses: 2
    Dernier message: 07/06/2012, 13h59
  4. Rafraîchir une view dans la bd automatiquement
    Par Invité dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 09/11/2010, 10h44

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