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 :

Rendre une activité semi-transparente pour l'empêcher de s'arréter


Sujet :

Android

  1. #1
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut Rendre une activité semi-transparente pour l'empêcher de s'arréter
    Bonjour,

    J'ai une activité comportant une GLSurfaceView qui dessine de l'OpenGL pendant qu'elle est au premier plan.

    J'ai également des préférences auxquelles je peux accéder par le menu et j'utilise la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setPreserveEGLContextOnPause(true);
    pour que le contexte ne soit pas détruit pendant la pause et que lorsque je change une préférence, je retrouve mon activité dans l'état où je l'ai laissé. Cela fonctionne correctement.

    Cependant j'ai une autre activité qui n'utilise pas le framework des préférences mais qui me permet de faire choisir à l'utilisateur un fond d'écran à travers un sélectionneur d'image personnalisé. Mon soucis est que lorsque cette activité également appelé depuis le menu passe au premier plan, mon activité principale qui comprends la GLSurfaceView est stoppé et je perds donc mon contexte et donc tout le code OpenGL déjà effectué. Il y aurait-il un moyen d’empêcher cette activité de faire un stop sur la précédente mais juste un pause. J'ai cru comprendre que l'activité resté en pause si elle était semi-transparente ce qui doit être le cas des Préférences mais je n'ai pas réussi à reproduire quelque chose de similaire dans mon cas.

    Merci pour votre aide.

  2. #2
    Expert confirmé

    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
    Par défaut
    Salut,

    Ma réponse va être bête mais passer par les Fragments peut être une solution.

    Sinon il faut que tu sauvegardes les informations nécessaire à la reconstruction de ton activité.

  3. #3
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Salut,

    Ma réponse va être bête mais passer par les Fragments peut être une solution.

    Sinon il faut que tu sauvegardes les informations nécessaire à la reconstruction de ton activité.
    Je vais regarder du coté des fragments.

    J'ai déjà essayer l'autre méthode, j'ai voulu sauvegardé le buffer de mon context openGL au moment du Activity.onPause() juste avant mon appel à GLSurfaceView.onPause() malheureusement il est déjà vide...

    Tu saurais à quel endroit je pourrais faire ça ?

  4. #4
    Expert confirmé

    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
    Par défaut
    Dans le onSaveInstanceState et le onRestoreInstanceState.

    http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

    et

    http://developer.android.com/referen...oid.os.Bundle)

    Appelé respectivement avant le onStop et après le onStart .

  5. #5
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Dans le onSaveInstanceState et le onRestoreInstanceState.

    http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

    et

    http://developer.android.com/referen...oid.os.Bundle)

    Appelé respectivement avant le onStop et après le onStart .
    Malheureusement lorsque je n'utilise pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setPreserveEGLContextOnPause(true);
    (j'aimerais être compatible avec l'API 9), le contexte de ma GLSurfaceView est déjà détruit à ce moment là, même avant mon appel à GLSurfaceVIew.pause(), est ce normal ?

  6. #6
    Expert confirmé

    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
    Par défaut
    Alors de ce que j'ai lu le context est détruit et reconstruit dans le onPause et onResume il est conseillé de ne pas sauvegardé le context mais bel et bien depuis le onSurfaceCreated de recharger tes ressources.

    http://android-developers.blogspot.f...rfaceview.html

    Sinon pour sauvegarder ton context je ne vois pas trop comment faire, si on regarde la classe sur la nouvelle API :
    http://grepcode.com/file/repository....xtLocked%28%29

    On peut voir que maintenant il la sauvegarde de base est font un release dessus. Donc le comportement a changé :/.

  7. #7
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Alors de ce que j'ai lu le context est détruit et reconstruit dans le onPause et onResume il est conseillé de ne pas sauvegardé le context mais bel et bien depuis le onSurfaceCreated de recharger tes ressources.

    http://android-developers.blogspot.f...rfaceview.html

    Sinon pour sauvegarder ton context je ne vois pas trop comment faire, si on regarde la classe sur la nouvelle API :
    http://grepcode.com/file/repository....xtLocked%28%29

    On peut voir que maintenant il la sauvegarde de base est font un release dessus. Donc le comportement a changé :/.
    Ce n'est pas vraiment le context en soit que je veux sauvegarder mais plutôt un screen shot du buffer et le recharger. J'ai tenté avant le GLSurfaceView.pause() mais c trop tard il est déjà noir.

    Merci pour tes conseils.

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Par défaut Empéché la fin d'une activité
    Tu peux aussi ajouter le champ android:alwaysRetainTaskState="true"
    dans la balise de ton activity dans le fichier Manifest.xml

Discussions similaires

  1. Rendre une conversation privée, même pour l'admin
    Par ouftitoi dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 19/12/2012, 17h14
  2. Simuler une activité pour empêcher une déconnection
    Par docjfnoel dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 28/05/2007, 11h05
  3. Comment rendre une form transparente à certains endroits ?
    Par ludo5532 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 21/08/2005, 16h28
  4. rendre une image transparente
    Par nabil dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 12/06/2005, 14h53
  5. rendre une image transparente
    Par matt92700 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 02/06/2005, 09h42

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