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

Android Discussion :

Rafraichir une vue


Sujet :

Android

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Rafraichir une vue
    Bonjour,

    Je rencontre un problème dans le développement de mon application.
    J'ai un TabHost avec plusieurs onglets, dans un des onglets j'ai une activité contenant plusieurs vues. Chaque vue est cliquable et lance une autre activité en restant à l’intérieur du TabHost.
    Le problème qui se pose c'est quand je clique sur une vue je change le background de celle-ci et je lance l'activité correspondante, sauf que le changement de background ne se rafraichit pas.

    En cherchant sur le net j'ai trouvé plusieurs postes comme ici, , ou encore . Mais aucun ne semble fonctionner.

    J'ai testé sans le code qui exécute l'activité quand on clique sur la vue et le changement de couleur s'effectue correctement.

    Dans le setOnclickListener j'ai testé toutes ces méthodes avec ou sans thread rien ne ce fait.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    myView.invalidate();
    myView.postInvalidate();
    myView.invalidateDrawable(gradientDrawable);
    myView.getBackground().invalidateSelf();
    myView.refreshDrawableState();
    myView.forceLayout();
    Du coup y a-t-il un moyen d'attendre/ bloquer l'application le temps que le draw s'effectue avec un while et en vérifiant si le rafraichissement c'est fait?
    Ou tout simplement de rafraichir directement la vue.

    Je vous remercie d'avance.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bon ben j'ai trouvé une réponse qui marchotte.
    Les vues cliquables ont en plus du setOnClickListener() le code suivant qui permet de changer la couleur de la vue, au moment ou on a le clic enfoncé et si il n'y a pas de mouvement (début de la captation du doigt) je change la couleur. Si il y a un mouvement la couleur redevient comme avant(ça fait une sorte de flash coloré du coup), sinon au moment du clic relevé il lance mon activité.
    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
    myView.ll1.setOnTouchListener(new OnTouchListener() {
     
    	@Override
    	public boolean onTouch(View v, MotionEvent event) {
    		// TODO Auto-generated method stub
    		Boolean up, down, move;
    		up = false;
    		down = false;
    		move =  false;
     
    		if (event.getAction() == MotionEvent.ACTION_UP)
    			up = true;
    		if (event.getAction() == MotionEvent.ACTION_DOWN)
    			down = true;
    		if (event.getAction() == MotionEvent.ACTION_MOVE)
    			move = true;
     
    		Log.e("motion","up:" + Boolean.toString(up) + " down:" + Boolean.toString(down) + " move:" + Boolean.toString(move));
     
    		if (down == true && move == false){
    			/*Appliquer le dégradé à toutes vues
    			*....
    			*/
     
    			/*Appliquer le degradé voulu à la vue selectionnée
    			*...
    			*/
    		}
    		else{
    			/*Remetre la vue selectionée avec la couleur d'avant
    			*...
    			*/
    		}
    		return false;
    	}
    });

  3. #3
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Les vues cliquables ont en plus du setOnClickListener() le code suivant qui permet de changer la couleur de la vue, au moment ou on a le clic enfoncé et si il n'y a pas de mouvement (début de la captation du doigt) je change la couleur. Si il y a un mouvement la couleur redevient comme avant(ça fait une sorte de flash coloré du coup), sinon au moment du clic relevé il lance mon activité.
    Tu pouvais également faire autrement via un selector dans tes fichiers Xml

    http://cyril-mottier.developpez.com/...personnalises/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/button1" />
        <item android:state_pressed="true" android:drawable="@drawable/button2" />
        <item android:state_focused="true" android:drawable="@drawable/button3" />
        <item android:state_enabled="true" android:drawable="@drawable/button1" />
    </selector>
    Après pour le lancement de l'activity tu peux passer directement par la méthode OnClick dans ton fichier Xml que tu associes à ta vue .
    http://developer.android.com/referen...ndroid:onClick

    Après quand tu penses que ton problème est résolu n'oublie pas de cliquer sur le bouton en bas de la page.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Bonjour,



    Tu pouvais également faire autrement via un selector dans tes fichiers Xml

    http://cyril-mottier.developpez.com/...personnalises/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/button1" />
        <item android:state_pressed="true" android:drawable="@drawable/button2" />
        <item android:state_focused="true" android:drawable="@drawable/button3" />
        <item android:state_enabled="true" android:drawable="@drawable/button1" />
    </selector>
    Après pour le lancement de l'activity tu peux passer directement par la méthode OnClick dans ton fichier Xml que tu associes à ta vue .
    http://developer.android.com/referen...ndroid:onClick

    Après quand tu penses que ton problème est résolu n'oublie pas de cliquer sur le bouton en bas de la page.
    Hélas je ne pense pas que je puisse utiliser le fichier XML car les couleurs sont chargés dynamiquement via un fichier XML sur le web qui est parsé et qui contient le code des couleurs de mes vues.
    Mais merci quand même de ta réponse je vais mettre résolu est gardé ma technique un peu foireuse.

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

Discussions similaires

  1. Rafraichir une vue apres modification d'un enregistrement
    Par ginojm dans le forum W4 Express
    Réponses: 7
    Dernier message: 17/09/2013, 10h24
  2. Rafraichir une vue à l'aide d'un trigger
    Par Invité dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/11/2010, 16h19
  3. Rafraichir une vue matérialisée
    Par bryony dans le forum Sql Developer
    Réponses: 1
    Dernier message: 23/10/2008, 13h37
  4. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 20h22

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