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 :

Faire un layout avec un fond animé


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut Faire un layout avec un fond animé
    Bonjour tous le monde

    Voila, je suis en train de faire un jeu chez moi.

    Je souhaite, pour le menu avoir un fond animé (que je fais via un canvas personnalisé) avec des boutons pour les differents choix.

    J'ai réussi à faire le fond animé en créant une classe héritant de View ainsi qu'en surchargeant onDraw().

    Par contre, je n'arrive pas à comprendre comment y intégrer des boutons ainsi que d'autres accessoires dans la même view....

    Pourriez vous m'aider ?
    Merci.
    F.

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    J'ai une idée. Peut être qu'il y en a de meilleurs.

    Dans ton xml, si tu le déclares en RelativeLayout, tu peux superposer tes vues.

    Voila.

  3. #3
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Merci de ta réponse.

    En faite, ce qui me pose probleme, c'est que je mets dans mon "SetContentView", la view que j'ai crée moi meme.


    Tiens, une idée :
    Est possible de faire un truc dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CView myView = findViewById(R.layout.id);
    SetContentView(myView);
    avec CView :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Class CView implements View
    {
         CView()
        {
             super();
         }
         onDraw()
         {
              /* mon code d'affichage */
              super(); /* J'appelle le code de la view principale */
          }

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Non ce n'est pas possible. Ton findViewById se base sur ton setContentView.

    Par contre, je te conseille d'utiliser ta vue dans un fichier xml. Ca sera plus facile à manipuler et à ajouter tes boutons.

  5. #5
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Merci de ton renseignement,

    Par contre, je ne sais pas utiliser une view que j'ai crée dans un xml ....

    une idée

    Merci.
    F.

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    oui bien sur, il suffit de placer le nom de ta vue avec le nom du package dans une balise xml.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <com.myapplication.view.myView android:id="@+id/myView"
    android:width="fill_parent"
    android:height="fill_parent" 
    ...
    />

  7. #7
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par David55 Voir le message
    oui bien sur, il suffit de placer le nom de ta vue avec le nom du package dans une balise xml.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <com.myapplication.view.myView android:id="@+id/myView"
    android:width="fill_parent"
    android:height="fill_parent" 
    ...
    />
    Ah, je ne savais pas que c'etait si simple...

    Merci beaucoup !
    Je verrai cela ce soir.
    F.

  8. #8
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Bonsoir,

    Après quelques essais, j'ai fais ce code.
    Evidemment, ca ne marche pas comme je le fais (...failed to instantiate )

    Ci-dessous le code ci-joint :
    Y a sans doute une meilleure methode....

    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    package com.laby;
     
     
    import java.util.Random;
    import java.util.Timer;
    import java.util.TimerTask;
     
    import android.app.Activity;
     
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.os.Bundle;
    import android.util.AttributeSet;
    import android.view.View;
    import android.view.Window;
     
    public class LabyMenu extends Activity
    {
    	private int [][] Labyrinthe;
    	private int X = 0;
    	private int Y = 0;
     
    	int XX;
    	int YY;
     
    	int XXX;
    	int YYY;
     
    	View myview;
    	Timer tick;
     
    	public void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
     
    		X = 40;
    		Y = 40;
     
    		XX = (2*X)-1;
    		YY = (2*Y)-1;
     
    		XXX = (2*X)+1;
    		YYY = (2*Y)+1;
     
     
    		initialisation();
    		requestWindowFeature(Window.FEATURE_NO_TITLE);
    		setContentView(R.id.MainView1);
     
    		tick = new Timer();
    		tick.schedule(new TimerTask() 
    		{
    			public void run() 
    			{
    				TimerMethod();
    			}
     
    		}, 0, 10);
    	}	    
     
    	private void TimerMethod()
    	{
    		this.runOnUiThread(Timer_Tick);
    	}
     
    	private Runnable Timer_Tick = new Runnable() 
    	{
    		public void run() 
    		{
    			generate_Layrinthe();
    			findViewById(R.id.MainView1).invalidate();
     
     
    			if(isComplete())
    			{
    				initialisation();
    			}
    		}
    	};
     
    	public void onPause()
    	{
    		super.onPause();
     
    		tick.cancel();
    	}
     
    	public boolean initialisation()
    	{
    		int unite = 0;
     
    		if(Labyrinthe == null)
    		{
    			Labyrinthe = new int[XXX][YYY];
    		}
     
    		for(int i = 0; i < XXX; i++)
    		{
    			for(int j = 0; j < YYY; j++)
    			{
    				if (i==0 || j==0 || i==(2*X) || j==(2*Y) || i%2==0 || j%2==0)
    				{
    					Labyrinthe[i][j] = -1;
    				}
    				else
    				{
    					Labyrinthe[i][j] = unite++;
    				}
    			}
    		}
     
    		return false;
    	}
     
    	public boolean generate_Layrinthe()
    	{
     
    		final Random random = new Random();
    		int d;
    		int frompropagate = 0, topropagate = 0; 	
     
    		int x = 0;
    		int y = 0;
     
    		do
    		{
    			x = random.nextInt( XX )+1;
    			y = random.nextInt( YY )+1;
    		}
    		while( ((x-y)%2 == 0) || (Labyrinthe[x][y]!=-1) );
     
    		if( x%2 == 1)
    		{
    			d = Labyrinthe[x][y-1] - Labyrinthe[x][y+1];
     
    			if(d > 0)
    			{
    				Labyrinthe[x][y] = Labyrinthe[x][y+1];
    				frompropagate = Labyrinthe[x][y+1];
    				topropagate = Labyrinthe[x][y-1];
    			}else if(d!=0)
    			{
    				Labyrinthe[x][y] = Labyrinthe[x][y-1];
    				frompropagate = Labyrinthe[x][y-1];
    				topropagate = Labyrinthe[x][y+1];
    			}
    		}
    		else
    		{
    			d = Labyrinthe[x-1][y] - Labyrinthe[x+1][y];
     
    			if( d>0 )
    			{
    				Labyrinthe[x][y] = Labyrinthe[x+1][y];
    				frompropagate = Labyrinthe[x+1][y];
    				topropagate = Labyrinthe[x-1][y];
    			}else if( d!=0 )
    			{
    				Labyrinthe[x][y] = Labyrinthe[x-1][y];
    				frompropagate = Labyrinthe[x-1][y];
    				topropagate = Labyrinthe[x+1][y];
    			}
    		}
     
    		for(int i = 0; i <  XXX ; i++)
    		{
    			for(int j = 0; j < YYY; j++)
    			{
    				if(Labyrinthe[i][j] == topropagate)
    				{
    					Labyrinthe[i][j] = frompropagate;
    				}
    			}
    		}
     
    		return true;
    	}
     
    	public boolean isComplete()
    	{  	
    		for(int i = 0; i < XXX; i++)
    		{
    			for(int j = 0; j < YYY; j++)		
    			{
    				if(Labyrinthe[i][j] != 0 && Labyrinthe[i][j] != -1)
    				{
    					return false;
    				}
    			}
    		}
     
    		return true;
    	}
     
     
    	public class MenuView extends View
    	{
    		public float Offset_X;    
    		public float Offset_Y;
     
    		public int origin_x;
    		public int origin_y;
     
    		public int Largeur;
    		public int Hauteur;
     
    		Paint PinceauBlanc;
    		Paint PinceauNoir;
    		Paint PinceauRouge;
     
    		Context cont;
     
    		public MenuView(Context context) 
    		{
    			super(context);
    			cont = context;
    			Offset_X = 4;
    			Offset_Y = 4;
     
    			Largeur = 30;
    			Hauteur = 30;
     
    			PinceauBlanc = new Paint();
    			PinceauNoir  = new Paint();
    			PinceauRouge = new Paint();
     
    			PinceauBlanc.setARGB(255, 255, 255, 255);
    			PinceauNoir.setARGB(255, 0, 0, 0);
    			PinceauRouge.setARGB(255,255, 0, 0);
     
    			PinceauNoir.setStrokeWidth(2);
     
    			PinceauBlanc.setStyle(Style.FILL);
    			PinceauRouge.setStrokeWidth(3);
     
    			// TODO Auto-generated constructor stub
    		}
     
    		public MenuView(Context context, AttributeSet attrs, int defaultStyle)
    		{
    			super(context, attrs, defaultStyle);
    			cont = context;
    			Offset_X = 4;
    			Offset_Y = 4;
     
    			Largeur = 30;
    			Hauteur = 30;
     
    			PinceauBlanc = new Paint();
    			PinceauNoir  = new Paint();
    			PinceauRouge = new Paint();
     
    			PinceauBlanc.setARGB(255, 255, 255, 255);
    			PinceauNoir.setARGB(255, 0, 0, 0);
    			PinceauRouge.setARGB(255,255, 0, 0);
     
    			PinceauNoir.setStrokeWidth(2);
     
    			PinceauBlanc.setStyle(Style.FILL);
    			PinceauRouge.setStrokeWidth(3);
    		}
     
    		public MenuView(Context context, AttributeSet attrs)
    		{
    			super(context, attrs);
    			cont = context;
    			Offset_X = 4;
    			Offset_Y = 4;
     
    			Largeur = 30;
    			Hauteur = 30;
     
    			PinceauBlanc = new Paint();
    			PinceauNoir  = new Paint();
    			PinceauRouge = new Paint();
     
    			PinceauBlanc.setARGB(255, 255, 255, 255);
    			PinceauNoir.setARGB(255, 0, 0, 0);
    			PinceauRouge.setARGB(255,255, 0, 0);
     
    			PinceauNoir.setStrokeWidth(2);
     
    			PinceauBlanc.setStyle(Style.FILL);
    			PinceauRouge.setStrokeWidth(3);
    		}
     
    		public void onDraw(Canvas canvas)
    		{
    			canvas.drawColor(Color.BLACK);
     
    			int largeur = X;
    			int hauteur = Y;
     
    			canvas.translate(Offset_X, Offset_Y);
     
    			canvas.drawRect(0, 0, Largeur*largeur, Hauteur*hauteur, PinceauBlanc);
     
    			canvas.drawLine(0  , 0  , Hauteur*hauteur, 0  , PinceauNoir);
     
    			canvas.drawLine(Hauteur*hauteur, 0  , Hauteur*hauteur, Largeur*largeur, PinceauNoir);
    			canvas.drawLine( Hauteur*hauteur, Largeur*largeur, 0  , Largeur*largeur, PinceauNoir);
    			canvas.drawLine(0  ,  Largeur*largeur, 0  , 0  , PinceauNoir);
     
    			for(int j=0; j < largeur-1; j++)
    			{
    				for(int i= 1; i < hauteur*2+1; i+= 2)
    				{
    					if(Labyrinthe[(j+1)*2][i] == -1)
    					{
    						canvas.drawLine(((i-1)/2)*Largeur,  (j+1)*Hauteur, (((i-1)/2)+1)*Largeur, (j+1)*Hauteur, PinceauNoir);
    					}
    				}	
    			}
     
    			for(int j=0; j < hauteur-1; j++)
    			{
    				for(int i= 1; i < largeur*2+1; i+= 2)
    				{
    					if(Labyrinthe[i][(j+1)*2] == -1)
    					{
    						canvas.drawLine( (j+1)*Hauteur, ((i-1)/2)*Largeur,  (j+1)*Hauteur, (((i-1)/2)+1)*Largeur, PinceauNoir);
    					}
    				}	
    			}		
     
    		}		
    	}
     
    }
    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
    java.lang.NoSuchMethodException: com.laby.LabyMenu$MenuView.<init>(android.content.Context, android.util.AttributeSet)
    	at java.lang.Class.getConstructor0(Class.java:2810)
    	at java.lang.Class.getConstructor(Class.java:1718)
    	at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:347)
    	at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:179)
    	at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
    	at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
    	at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
    	at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:400)
    	at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:336)
    	at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:333)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:451)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1545)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1302)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1059)
    	at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateActivated(LayoutEditorDelegate.java:743)
    	at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.activated(CommonXmlEditor.java:416)
    	at com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutWindowCoordinator.partActivated(LayoutWindowCoordinator.java:379)
    	at org.eclipse.ui.internal.PartService$6.run(PartService.java:131)
    	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    	at org.eclipse.ui.internal.PartService.partActivated(PartService.java:129)
    	at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:4462)
    	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    	at org.eclipse.ui.internal.WorkbenchPage.firePartActivated(WorkbenchPage.java:4460)
    	at org.eclipse.ui.internal.WorkbenchPage.access$16(WorkbenchPage.java:4440)
    	at org.eclipse.ui.internal.WorkbenchPage$E4PartListener.partActivated(WorkbenchPage.java:173)
    	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$2.run(PartServiceImpl.java:193)
    	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.firePartActivated(PartServiceImpl.java:191)
    	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:596)
    	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:549)
    	at org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer.activate(AbstractPartRenderer.java:105)
    	at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$ActivationJob.run(StackRenderer.java:214)
    	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
    	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4144)
    	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
    	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
    	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
    	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
    	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:606)
    	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    	at org.eclipse.equinox.launcher.Main.run(Main.java:1438)

  9. #9
    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
    MenuView est une classe fille... cela ne peut pas marcher puisqu'elle nécessite d'être créée par la classe parente, ce qui ne sera pas le cas ici.

    Faire un fichier à part pour cette view...

    Par contre attention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private int [][] Labyrinthe;
    	private int X = 0;
    	private int Y = 0;
     
    	int XX;
    	int YY;
     
    	int XXX;
    	int YYY;
     
            ...
            private void TimerMethod()
    En JAVA, un "membre" (variable, méthode, ...) ne doit pas commencer par une majuscule, et doit toujours être explicite (on a le code-completion, et jusqu'à 256 caractères)... Là, je doute que dans 1 an tu te souvienne de la différence entre XX et XXX
    (et une typo est si vite arrivée).

    Seuls les types (classes, interfaces, enum) doivent commencer par une majuscule.

    Et le "_" est interdit.... "Offset_X" doit donc s'écire: "offsetX" tout simplement.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  10. #10
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par nicroman Voir le message
    MenuView est une classe fille... cela ne peut pas marcher puisqu'elle nécessite d'être créée par la classe parente, ce qui ne sera pas le cas ici.

    Faire un fichier à part pour cette view...

    Par contre attention:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private int [][] Labyrinthe;
    	private int X = 0;
    	private int Y = 0;
     
    	int XX;
    	int YY;
     
    	int XXX;
    	int YYY;
     
            ...
            private void TimerMethod()
    En JAVA, un "membre" (variable, méthode, ...) ne doit pas commencer par une majuscule, et doit toujours être explicite (on a le code-completion, et jusqu'à 256 caractères)... Là, je doute que dans 1 an tu te souvienne de la différence entre XX et XXX
    (et une typo est si vite arrivée).

    Seuls les types (classes, interfaces, enum) doivent commencer par une majuscule.

    Et le "_" est interdit.... "Offset_X" doit donc s'écire: "offsetX" tout simplement.
    Merci pour l'information, c'est vrai que je devrai faire ca tout de suite pour éviter les betises quand je ferai la version définitive du programme.

    sinon, je vais joueeeer mon relou.
    J'ai fais une custom view basic pour essayer l'instanciation.
    Ca me met dans le log :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    11-01 23:17:06.413: E/AndroidRuntime(28092): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.labyflo/com.example.labyflo.MenuMainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f080000 type #0x12 is not valid
    Le code du layout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <com.example.labyflo.MenuView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/menuView2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
     
    </com.example.labyflo.MenuView>
    Le code de la view:

    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
    98
    99
    100
    101
    102
    103
    104
    105
    package com.example.labyflo;
     
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.util.AttributeSet;
    import android.view.View;
     
    public class MenuView extends View
    {
    	Paint PinceauBlanc;
    	Paint PinceauNoir;
    	Paint PinceauRouge;
     
    	public MenuView(Context context) 
    	{
    		super(context);
     
    		PinceauBlanc = new Paint();
    		PinceauNoir  = new Paint();
    		PinceauRouge = new Paint();
     
    		PinceauBlanc.setARGB(255, 255, 255, 255);
    		PinceauNoir.setARGB(255, 0, 0, 0);
    		PinceauRouge.setARGB(255,255, 0, 0);
     
    		PinceauNoir.setStrokeWidth(2);
     
    		PinceauBlanc.setStyle(Style.FILL);
    		PinceauRouge.setStrokeWidth(3);
     
    		// TODO Auto-generated constructor stub
    	}
     
    	public MenuView(Context context, AttributeSet attrs, int defaultStyle)
    	{
    		super(context, attrs, defaultStyle);
     
    		PinceauBlanc = new Paint();
    		PinceauNoir  = new Paint();
    		PinceauRouge = new Paint();
     
    		PinceauBlanc.setARGB(255, 255, 255, 255);
    		PinceauNoir.setARGB(255, 0, 0, 0);
    		PinceauRouge.setARGB(255,255, 0, 0);
     
    		PinceauNoir.setStrokeWidth(2);
     
    		PinceauBlanc.setStyle(Style.FILL);
    		PinceauRouge.setStrokeWidth(3);
     
     
     
    	}
     
    	public MenuView(Context context, AttributeSet attrs)
    	{
    		super(context, attrs);
     
    		PinceauBlanc = new Paint();
    		PinceauNoir  = new Paint();
    		PinceauRouge = new Paint();
     
    		PinceauBlanc.setARGB(255, 255, 255, 255);
    		PinceauNoir.setARGB(255, 0, 0, 0);
    		PinceauRouge.setARGB(255,255, 0, 0);
     
    		PinceauNoir.setStrokeWidth(2);
     
    		PinceauBlanc.setStyle(Style.FILL);
    		PinceauRouge.setStrokeWidth(3);
            } 
     
     
    	protected void onMeasure(int wMeasureSpec, int hMeasureSpec)
    	{
    		int measuredHeight = measureHeight(hMeasureSpec);
    		int measuredWidth  = measureWidth(wMeasureSpec);
     
    		setMeasuredDimension(measuredHeight, measuredWidth);
    	}
     
    	private int measureHeight(int measureSpec)
    	{
    		int specMode = MeasureSpec.getMode(measureSpec);
    		int specSize = MeasureSpec.getSize(measureSpec);
     
    		return specSize;
    	}
     
    	private int measureWidth(int measureSpec)
    	{
    		int specMode = MeasureSpec.getMode(measureSpec);
    		int specSize = MeasureSpec.getSize(measureSpec);
     
    		return specSize; 
    	}
     
    	public void onDraw(Canvas canvas)
    	{
    	 // rien
    	}	
    }
    Code de l'activity:

    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
    package com.example.labyflo;
     
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
     
    public class MenuMainActivity extends Activity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.id.menuView2);
        }
     
     
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
     
    }

  11. #11
    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
    Là tu confonds ressource de layout (setContentView) et identifiant de view.

    Dans le XML: @+id/menuView2 équivaut dans le java à R.id.menuView2 c'est un identifiant de view dans un layout.

    Je ne sais pas comment se nomme le fichier du layout... mais setContentView doit prendre une ressource de type "layout", à savoir R.layout.xxxxx
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/04/2009, 16h19
  2. Comment faire un bloc de code encadré avec un fond?
    Par ®om dans le forum Mise en forme
    Réponses: 3
    Dernier message: 05/06/2008, 14h32
  3. Réponses: 3
    Dernier message: 07/11/2007, 12h23
  4. Réponses: 7
    Dernier message: 18/07/2007, 15h52
  5. Réponses: 4
    Dernier message: 27/02/2007, 10h17

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