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 :

Un peu de graphisme


Sujet :

Android

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut Un peu de graphisme
    Bonjour,
    afin de pas perdre la main en Java, et pour m'améliorer un peu, je suis entrain de développer un petit jeu en Java.
    Pour que se soit plus attractif, je le fais pour Android.
    J'ai créé un algo pour générer des labyrinthes en utilisant la méthode de l' Exploration exhaustive.
    J'ai donc un tableau de cases, et chaque case possède un entier qui indique les murs qui l’entourent (1 NORD, 10 SUD, 100 EST, 1000 OUEST. donc 1010 => mur OUEST et SUD).
    Pour afficher mon labyrinthe j'ai une méthode toString, qui parcours le tableau, et affiche l'entier des murs :

    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
    public String toString() {
     
    		String chaine = "";
    		int cpt = 0;
    		for(int i=0; i< laby.length; i++) {
     
    			// On passe ) la ligne suivante du labyrinthe
    			if(cpt == larg) {
    				cpt = 0;
    				chaine += "\n";
    			}
     
    			chaine+=laby[i].getMur();
    			chaine+= "||";
    			cpt++;
    		}
     
    		return chaine;
    	}
    Du coup j'obtiens un truc un peu illisible, et j'aimerais donc afficher des images à la place de cette chaine de caractères.
    Parcourir le tableau, et si mon getMur vaut 10, j'affiche l'image d'un mur en bas de la case par exemple.

    Mais je ne sais pas du coup comment faire ça pour android,
    donc si quelqu'un a une idée, je suis preneur,

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Vous devriez utiliser un Canvas Android, qui permet de faire du dessin vectoriel.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Merci de votre réponse.
    J'irai voir le fonctionnement des canvas ce week end.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Bonjour,
    j'ai regarder un peu le fonctionnement des canvas, et j'ai enfin réussi à dessiner une image. C'est exactement ce que je recherchais, donc encore merci.
    Maintenant je vais surment un peu gallerer pour finir mon petit projet, mais c'est en forgeant qu'on devient forgeron

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Bonjour bonjour,
    je viens re-poster ici pour ne pas ré-ouvrir un topic du même style, car j'ai un nouveau petit souci.
    En effet, j'arrive à générer des labyrinthe, et à les afficher.

    Voila mon fichier xml et le code de l'affichage :

    XML:
    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
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
     
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:onClick="onClickGenerer"
            android:text="Générer" />
     
    </RelativeLayout>
    Affichage :
    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
    public class DrawView extends View{
    	Paint paint = new Paint();
    	private ArrayList<Case> tabLaby = new ArrayList<Case>();
     
    	public DrawView(Context context, ArrayList<Case> tablaby) {
    		super(context);
    		paint.setColor(Color.GREEN);
    		this.tabLaby = tablaby;
    	}
     
    	@Override
    	public void onDraw(Canvas canvas) {  	
     
    		int x,y;
    		Bitmap mur = BitmapFactory.decodeResource(getResources(), R.drawable.mur);
    		Bitmap arrivee = BitmapFactory.decodeResource(getResources(), R.drawable.arrivee);
    		Bitmap depart = BitmapFactory.decodeResource(getResources(), R.drawable.depart);
     
    		for(int i=0; i< tabLaby.size(); i++) {
    			x = (int) tabLaby.get(i).getX();
    			x*= tabLaby.get(i).getTaille();
    			y = (int) tabLaby.get(i).getY();
    			y*= tabLaby.get(i).getTaille();
     
    			switch(tabLaby.get(i).getTypeCase()) {
    			case MUR:
    				canvas.drawBitmap(mur, x, y,null);
    				break;
     
    			case ARRIVEE:
    				canvas.drawBitmap(arrivee, x, y,null);
    				break;
     
    			case DEPART:
    				canvas.drawBitmap(depart, x, y,null);
    			}
    		}
    	}
    }
    Le canvas est appelé comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DrawView drawView = new DrawView(this, laby.getLaby());
    		drawView.setBackgroundResource(R.drawable.fondmenu);
    		setContentView(drawView);
    le seul problème, c'est que la zone de dessin prend tout l'écran, et cache le bouton qui permet de générer des labyrinthes.
    J'aimerais donc savoir comment faire pour afficher la zone de dessin dans une view que je pourrait mettre dans le xml ?

    Une nouvelle fois merci d'avance

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Normal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentView(drawView);
    va remplacer tout le contenu du layout par la seule view....

    Mais pourquoi ne pas inclure DrawView directement dans le layout ?
    Bien sur, il va falloir fournir les constructeurs de View "normaux", mais la gestion est plus simple non ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Merci de votre réponse.
    J'ai ajouté une view dans le XML :

    Pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentView(nouvelleView);
    Ça ne marche pas non plus.

    Sinon je n'ai pas très bien compris l'autre idée.
    Il faut supprimer la classe DrawView et mettre son contenu dans la classe qui l'appel actuellement ?

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    En fait, il s'agirait de définir la vue graphique dans le XML, plutôt que de le faire en Java.

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Ok, j'ai changé le nom de DrawView en LabyView, pour mieux m'y retrouver,
    et j'ai modifié le XML ainsi :
    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
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:onClick="onClickMute"
        android:orientation="vertical" >
     
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:onClick="onClickGenerer"
            android:text="Générer" />
     
     
        <graphique.LabyView
            android:id="@+id/labyView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="false"
            android:layout_below="@+id/button1"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true" />
     
    </RelativeLayout>
    Voici le code de LabyView :

    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
    public class LabyView extends View{
    	public LabyView(Context context) {
    		super(context);
    		// TODO Auto-generated constructor stub
    	}
     
    	private ArrayList<Case> tabLaby = new ArrayList<Case>();
     
    	public LabyView(Context view, ArrayList<Case> tablaby) {
    		super(view);
    		this.tabLaby = tablaby;
    	}
     
    	public void setLaby(ArrayList<Case> tablaby) {
    		this.tabLaby = tablaby;
    	}
     
    	@Override
    	public void onDraw(Canvas canvas) {  	
     
    		int x,y;
    		Bitmap mur = BitmapFactory.decodeResource(getResources(), R.drawable.mur);
    		Bitmap arrivee = BitmapFactory.decodeResource(getResources(), R.drawable.arrivee);
    		Bitmap depart = BitmapFactory.decodeResource(getResources(), R.drawable.depart);
    		Bitmap perso = BitmapFactory.decodeResource(getResources(), R.drawable.pers_smurf);
     
    		int tailleCase = mur.getHeight();
    		int taillePerso = perso.getHeight();
    		int centerPero = (tailleCase - taillePerso) / 2;
    		for(int i=0; i< tabLaby.size(); i++) {
     
     
    			x = (int) tabLaby.get(i).getX();
    			x*= tabLaby.get(i).getTaille();
    			y = (int) tabLaby.get(i).getY();
    			y*= tabLaby.get(i).getTaille();
     
    			switch(tabLaby.get(i).getTypeCase()) {
    			case MUR:
    				canvas.drawBitmap(mur, x, y,null);
    				break;
     
    			case ARRIVEE:
    				canvas.drawBitmap(arrivee, x, y,null);
    				break;
     
    			case DEPART:
    				canvas.drawBitmap(depart, x, y,null);
    				canvas.drawBitmap(perso, x+centerPero, y+centerPero, null);
    				break;
    			}
    		}
    		Personnage mBoule = new Personnage();
    	}
    }
    La classe étend View, du coup j'ai un Context en paramètre du constructeur, et j'obtiens alors l'erreur suivante dans le xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Custom view LabyView is not using the 2- or 3-argument View constructors; XML attributes will not work
    Ça veut dire qu'il faut que je change mon constructeur, ou que j'ai rien compris et que je suis à la ramasse ?

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Quand on veut surcharger une View... le mieux est d'implémenter *TOUS* les constructeurs du parent.

    Eclipse propose d'ailleurs de le faire automatiquement dans les options de "source".
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Effectivement en générant tous les constructeurs, j'ai réussi à dessiner un petit rectangle dans LabyView, qui ne prend plus tout l'écran.
    Par contre dernière petite question, je récupère ma view comme avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LabyView labView = (LabyView) findViewById(R.id.draw);
    Ce qui appel un des constructeurs générés, mais comment faire pour passer un paramètre à la vue ?

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    940
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 940
    Points : 1 817
    Points
    1 817
    Par défaut
    Le mieux est de passer les paramètres par des setters.

    Typiquement, on procède en deux temps : d'abord on initialise tous les composants des vues, puis ensuite seulement on dessine. Les constructeurs correspondent à l'initialisation, ils n'ont donc normalement pas besoin de connaître le plan du labyrinthe.

    Cette méthode a un avantage sur les interfaces graphiques complexes : quand on commence à afficher, toutes les vues sont prêtes. Ça évite pas mal de surprises.

  13. #13
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Merci pour vos réponses.
    J'avais essayé de faire un setter, mais ça n'avait pas marché.
    Je vais réessayé, peut être que j'ai raté quelques choses en écrivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LabyView labView = (LabyView) findViewById(R.id.draw);
    labView.setPara(param);
    [Edit] Effectivement j'obtiens un java.lang.NullPointerException dans la méthode onDraw, sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int i=0;i<param.size();i++) {

  14. #14
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Le problème ne vient pas de la boucle, mais bien de param que j'initialise avec le setter.
    Dans le fichier xml je n'ai pas de vue graphique, mais le message :

    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
    java.lang.NullPointerException
    Exception details are logged in Window > Show View > Error Log
     
    java.lang.NullPointerException
        at graphique.LabyView.onDraw(LabyView.java:67)
        at android.view.View.draw(View.java:14616)
        at android.view.View.draw(View.java:14501)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3102)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2939)
        at android.view.View.draw(View.java:14619)
        at android.view.View.draw(View.java:14501)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3102)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2939)
        at android.view.View.draw(View.java:14499)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3102)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2939)
        at android.view.View.draw(View.java:14619)
        at android.view.View.draw(View.java:14501)
        at android.view.ViewGroup.drawChild(ViewGroup.java:3102)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2939)
        at android.view.View.draw(View.java:14619)
    C'est comme si mon ArrayList n'est pas connu dans onDraw, alors que je l'initialise dans mon setter

  15. #15
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Après avoir craqué sur ce fichu problème j'ai fini par faire la méthode bourrin (mettre des Toasts un peu partout) pour voir ou ça crash.
    Quand je commente la méthode onDraw qui est @Override pas de problème, le setter marche impec.
    Par contre quand je dé commente la méthode onDraw, plus rien ne marche, l'activité ne s'ouvre même plus.

    Voila mon setter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void setTabLaby(ArrayList<Case> tabLaby) {
    		this.tabLaby = tabLaby;
    	}
    Et dans le XML j'ai ma fameuse erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.lang.NullPointerException
        at graphique.LabyView.onDraw(LabyView.java:69)
    Et voici la ligne 69 en question
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int i=0; i< tabLaby.size(); i++) {

    et le XML
    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
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/fondmenu"
        android:orientation="vertical" >
     
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:onClick="onClickGenerer"
            android:text="Générer" />
     
        <Button
            android:id="@+id/bMute"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:background="@drawable/mute"
            android:onClick="onClickMute" />
     
        <Button
            android:id="@+id/bUp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:background="@drawable/up"
            android:visibility="invisible"
            android:onClick="onClickUp" />
     
        <graphique.LabyView
            android:id="@+id/draw"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/bUp"
            android:layout_below="@+id/button1"
            android:layout_centerHorizontal="true" />
     
    </RelativeLayout>
    J'appel ma vue comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LabyView labView = (LabyView) findViewById(R.id.draw);
    		labView.setTabLaby(laby.getLaby());

    Mais la n'est pas le problème puisque ce code est appelé lors d'un clic sur un bouton, au quel j'ai plus accès.

    Donc d'après moi, le XML ce fiche du setter, il le connait pas, et créé une erreur direct qui fait tout crasher; sans même atteindre le code.
    Mais après plusieurs heures à tâtonner, et quelques craquages, je ne sais pas comment corriger ça, donc si quelqu'un à une idée, je suis plus que preneur

  16. #16
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Salut,
    Est ce que tu fais un tabLaby = new arraylist(); dans la methode onCreate de LabyView?

    Dans le cas contraire alors il est normal que tabLaby soit a null au moment du onDraw(), car il se passe en gros ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LabyView labView = (LabyView) findViewById(R.id.draw);
    labView.onDraw();
    labView.setTabLaby(laby.getLaby());
    Tu devrais utiliser les log pour debugger ton appli plutot que mettre des Toast.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.d("Clef","Message");
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  17. #17
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Waouuu, un grand merci à vous pour votre réponse, car non effectivement j'avais pas mis le tabLaby = new arraylist();
    Je pensais que mon setter le faisait automatiquement, en faisant la copie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.tabLaby = tabLaby;
    Je l'ai donc fait dans la classe LabyView ou je déclare mon ArryList global, l'opération se passe bien, mais dans onDraw, l'ArrayList est vide et du coup rien ne se dessine.

    J'ai donc essayé dans le setter avant l'affectation mais ça crash.
    Du coup je vois plus trop ou le faire, étant donné que je n'ai pas de onCreate

  18. #18
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    En effet après avoir éteint l'ordi hier, j'ai réalisé que c'est encore le même problème.
    Lorsque je déclare l'ArrayList en globale, le setter le connait et fonctionne, la méthode draw le connais aussi puisque c'est global, et de fait, ça ne crash pas.
    Mais la méthode draw ne connait pas l'initialisation qui ce fait dans le setter, ce qui explique aussi en partie pourquoi le XML m'affiche encore l'erreur de pointeur.
    Donc je vais de suite faire un petit test pour confirmé ma "suspicion", à savoir que la méthode draw passe avant le setter, ou même ne passe pas du tout.

    [Edit] la réponse du test ici dans quelques secondes

  19. #19
    Membre éclairé
    Avatar de LeBzul
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 381
    Points : 832
    Points
    832
    Par défaut
    Oui, pardon, il n'y a pas de methode onCreate(), je voulais dire dans le constructeur, il était tard hier ^^

    Je pense que après ton labView.setTabLaby(laby.getLaby()); il te suffit de demander a ta vue de se redessiner :
    "Quand la lune n'est pas là, la nuit mène une existence obscure"

  20. #20
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 584
    Points : 181
    Points
    181
    Par défaut
    Oui il était un peu tard, et je commençais à faire un peu n'importe quoi.
    J'avais aussi essayé de le mettre dans tous les constructeurs, ça ne crashait pas, mais rien ne se dessinait. Du coup j'avais pas cherché plus loin.
    J'essaie donc avec invalidate();

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB6] [Graphisme] Arc de cercle dans un picturebox
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 04/11/2002, 17h55
  2. [VB6] [Graphisme] Transfert d'image pixel par pixel
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/10/2002, 09h53
  3. [VB6][Graphisme] Zoom
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/10/2002, 17h30
  4. RTL60 ( la jsuis un peu confused)
    Par magdoz dans le forum Outils
    Réponses: 7
    Dernier message: 23/07/2002, 11h20
  5. DirectX 6, un peu en retard ... :\
    Par multani dans le forum DirectX
    Réponses: 3
    Dernier message: 28/05/2002, 19h19

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