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 :

Ajouter des élements dans une surface view


Sujet :

Composants graphiques Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 115
    Par défaut Ajouter des élements dans une surface view
    Salut à tous!

    Je suis actuellement entrain de m'amuser a crée un petit jeu.
    Et la je bloque sur le fait que quand je fait pause je voudrais faire apparaitre des bouton ou autre tout en gardant en arrière la l'état du jeux.

    Pour le moment en fait quand je fait pause je dit a l'activité de faire un autre setContentView mais le problème c'est que du coup la vue n'est plus la surfaceView est donc je ne vois pas l'état du jeux.

    Je voudrais donc savoir si c'était possible de rajouter des boutons et tous sur la surfaceView?

    L'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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    public class GameActivity extends Activity implements OnLooseListener,OnPauseListener
    {
    	ViewGame view ;
     
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
     
    		view = new ViewGame(this);
    		setContentView(view);
     
    		view.setLooseListener(this);
    		view.setOnPauseListener(this);
    	}
     
    	@Override
    	protected void onPause() 
    	{
    		super.onPause();
    		this.view.getThread().pause();
    	}
     
     
    	/**
             * Call when game loosed
             */
    	public void onLoosed(int point) 
    	{
    		Intent intent = new Intent(this,LooseActivity.class);
    		intent.putExtra("point", point+"");
     
    		startActivity(intent);
     
    	}
     
     
    	public void onPauseClicked()
    	{		
    		setContentView(R.layout.pause);
     
     
    	}
     
     
    }
    La surface 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
    public class ViewGame extends SurfaceView implements SurfaceHolder.Callback , Constantes
    {
     
    	private GameThread thread;//game thread
     
    	//listener
    	private OnLooseListener listener;
    	private OnPauseListener pauseListener;
     
     
    	public ViewGame(Context context) 
    	{
    		super(context);
     
    		SurfaceHolder holder = getHolder();
    		this.thread = new GameThread(holder, context);
    		holder.addCallback(this);
    		setFocusable(true);
     
    	}
     
    	/**
             * 
             * @param listener
             */
    	public void setLooseListener(OnLooseListener listener)
    	{
    		this.listener = listener;
     
    	}
     
    	/**
             * 
             * @param listener
             */
    	public void setOnPauseListener(OnPauseListener listener)
    	{
    		this.pauseListener = listener;
     
    	}
     
     
    	@Override
    	public boolean onTouchEvent(MotionEvent event) 
    	{
     
    		float y = event.getY();
    		float x = event.getX();
     
    		if(isPause(x,y)) 
    		{
    			if(this.thread.getStateGame() == STATE_RUNNING) //Si on est a jouer on met pause
    			{
    				Log.d("WORKFEL", "pause");
    			this.thread.pause();
    			this.pauseListener.onPauseClicked();
    			//onPause();
    			}
    			return true;
    			//this.thread.unpause();							
    		}
       //...............
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Par défaut
    Bonjour,
    Met un RelativeLayout comme parent principal avec comme fils ta SurfaceView et tes boutons
    Tu pourras "empiler" tes boutons sur ta SurfaceView.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 115
    Par défaut
    Merci .
    Mais je vois pas comment faire je pense que c'est pas bon comme je fais.


    Le Layout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/layoutGame" >
     
     
     
    </RelativeLayout>
    L'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
    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
     
    public class GameActivity extends Activity implements OnLooseListener,OnPauseListener
    {
    	ViewGame view ;
    	RelativeLayout layoutGame;
    	RelativeLayout layoutPause;
     
    	@Override
    	protected void onCreate(Bundle savedInstanceState) 
    	{
    		super.onCreate(savedInstanceState);
     
    		view = new ViewGame(this);
    		setContentView(R.layout.game);
     
    		layoutGame = (RelativeLayout) findViewById(R.id.layoutGame);
     
     
    		layoutGame.addView(view);
     
     
    		view.setLooseListener(this);
    		view.setOnPauseListener(this);
     
    	}
     
    	@Override
    	protected void onPause() 
    	{
    		super.onPause();
    		this.view.getThread().pause();
    	}
     
     
    	/**
             * Call when game loosed
             */
    	public void onLoosed(int point) 
    	{
    		Intent intent = new Intent(this,LooseActivity.class);
    		intent.putExtra("point", point+"");
     
    		startActivity(intent);
     
    	}
     
     
    	public void onPauseClicked()
    	{		
    		//setContentView(R.layout.pause);
    		//Déclaration du layout et instanciation de celui-ci.
     
    		LinearLayout lilPost = new LinearLayout( this );
     
    		//Définition de son orientation.
     
    		lilPost .setOrientation(LinearLayout. VERTICAL );
     
    		//Définition de son padding (le padding est la distance en pixels, entre le bord du composant et son contenu).
     
    		lilPost .setPadding(0, 15, 0, 0);
     
    		//Définition de la couleur de fond du layout.
     
    		lilPost .setBackgroundColor(0xFF007AAD);
    		Button EndGameButton = new Button(this);
     
    		EndGameButton.setWidth(300);
    		EndGameButton.setText("Le bouton");
     
    		lilPost.addView(EndGameButton);
     
    		layoutGame.addView(lilPost);
     
    	}
    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 115
    Par défaut
    J'ai modifier le fichier xml en ajoutant les bouton dans le layout.
    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
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/layoutGame" >
     
        <ImageView
            android:id="@+id/resume"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="35dp"
            android:src="@drawable/green" />
     
        <ImageView
            android:id="@+id/home"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/resume"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="20dp"
            android:src="@drawable/red" />
     
        <ImageView
            android:id="@+id/sound"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignTop="@+id/home"
            android:layout_marginLeft="29dp"
            android:src="@drawable/play" />
     
     
     
    </RelativeLayout>
    Maitenant le problème c'est que je n'arrive pas a la faire apparaitre il y a toujour la surfaceView qui prend le dessus est je ne sais pas comment on peut empiler le bouton sur la surface ?!


    Merci encore

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Par défaut
    Et si tu ajoutes la SurfaceView dans le xml que tu recuperes par findViewById et que t'associes a ta GameView ?

    La SurfaceView comme premier fils, sinon les boutons seront caché en dessous !

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 115
    Par défaut
    J'ai essayer mais ca me génere une erreur binaire sur le fichier xml...
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.workfel.reflex/com.workfel.reflex.GameActivity}: android.view.InflateException: Binary XML file line #33: Error inflating class com.workfel.reflex.ViewGame

    Ligne 33
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <com.workfel.reflex.ViewGame
            android:id="@+id/viewGame1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true" />

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 43
    Par défaut
    En regardant sur le net je suis tombé sur ca
    http://stackoverflow.com/questions/9...nflating-class
    Il faut peut etre un constructeur special a ta CustomView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ViewGame(Context, Attributeset)
    Sinon essaye de decortiquer tes LogCat il doit y avoir d'autre info

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 115
    Par défaut
    Merci c'était bien ça il manque le constructeur !!

    J'ai plus d'erreur mais j'ai plus rien qui s'affiche aussi ^^..

    Je vais essayer de voir pk

    Merci en tout cas

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

Discussions similaires

  1. comment ajouter des élements dans une liste ?
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 15/06/2007, 16h02
  2. ajouter des données dans une requête htttp en js
    Par jeromejanson dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/10/2005, 15h34
  3. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39
  4. ajouter des control dans une onglet de sstab sous VB6
    Par aymane_farissi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h44
  5. Réponses: 14
    Dernier message: 22/09/2005, 16h49

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