Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Dégradé

Sujet résolu
    29 avril 2012 à 12:46:33

    Bonjour,

    Je développe un petit jeu et je souhaiterais avoir sur le fond de ma vue un dégradé.
    J'ai donc trouvé une méthode pour créer un dégradé :
    Paint degrade = new Paint();
    RectF monFond = new RectF(0, 0, w, h);
    Shader gradient = new SweepGradient (0,0, Color.parseColor("#595a96"), Color.parseColor("#36375e"));
    degrade.setShader(gradient);
    canvas.drawRect(monFond, degrade);
    

    Malheureusement cette méthode ralentit beaucoup trop l'application probablement à cause du dégradé recalculé à chaque fois.

    Je cherche donc une méthode pour enregistrer ce fond et le ré afficher (comme un Bitmap) sans le recalculer X fois.

    Quelqu'un aurait-il une idée?
    • Partager sur Facebook
    • Partager sur Twitter
      29 avril 2012 à 15:19:25

      Bonjour,

      Créer une image dégradée via n'importe quel outil (The Gimp, Photoshop...) et la mettre en background ferait l'affaire.
      • Partager sur Facebook
      • Partager sur Twitter
        29 avril 2012 à 15:57:31

        Merci de t'as réponse! c'est pas bête mais si quelqu'un a quand même une solution uniquement en code n'hésitez pas
        • Partager sur Facebook
        • Partager sur Twitter
          29 avril 2012 à 17:34:36

          Les smartphones et autres tablettes ayant un processeur et un RAM limités, il faut éviter de leur faire faire des calculs inutiles.

          Si tu veux faire du texturing procédural (un bien grand mot pour un simple dégradé :) ), trouve un musicien et fait une demo sur PC, pas un jeu sur téléphone. En effet, ce dernier aura bien d'autres choses à faire: afficher la scène, gérer les événements utilisateur, une éventuelle IA...
          • Partager sur Facebook
          • Partager sur Twitter
            8 mai 2012 à 23:59:45

            Citation : Ankara

            Merci de t'as réponse! c'est pas bête mais si quelqu'un a quand même une solution uniquement en code n'hésitez pas


            J’ai en effet une telle solution sous la nageoire.
            En plus de ça, elle est largement plus sympa qu’une solution basée sur du code Java ou sur une image !

            Crée un fichier XML dans ./res/drawables/, appelé, disons, background.xml, avec le contenu suivant :

            <?xml version="1.0" encoding="utf-8"?>
            <shape xmlns:android="http://schemas.android.com/apk/res/android">
                <gradient android:startColor="#595a96" android:endColor="#36375e" android:angle="270"/>`
                <!-- Pour savoir pourquoi un angle de 270° : lire la partie de la doc sur android:angle ! -->
            </shape>
            


            Puis dans ton code, tu utilises cette nouvelle forme avec un simple android:background="@drawable/background".
            J'ai testé avec le code minimal ci-dessous :

            <?xml version="1.0" encoding="utf-8"?>
            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/background">
            </LinearLayout>
            


            Image utilisateur

            C’est propre et c’est très léger. Pas besoin d’un bazooka pour tuer une mouche ! ^^
            Pour plus d’informations : <acronym title="Read The Fucking Manual">RTFM</acronym> ! :p
            • Partager sur Facebook
            • Partager sur Twitter

            Ancien validateur du SdZ.

              9 mai 2012 à 7:52:05

              Hmmm... Sympa la solution !

              Y a tellement de trucs dans Android... Perso, je m'étais arrêté au bouton custom (le background qui change quand on clique ou pas).
              Je garde ça dans un coin de ma tête.

              PS: Tu aurais pu faire un dégradé Orange Validateur ! ;)
              • Partager sur Facebook
              • Partager sur Twitter
                9 mai 2012 à 23:30:24

                Citation : Fumble

                Hmmm... Sympa la solution !

                Y a tellement de trucs dans Android... Perso, je m'étais arrêté au bouton custom (le background qui change quand on clique ou pas).
                Je garde ça dans un coin de ma tête.


                C’est un truc que j’ai appris dans un bouquin (je ne sais plus lequel, j’en ai 5-6 et j’ai la flemme de chercher :-° ), ils disent quand même que Google n’a jamais mis ça en avant et qu’il fallait vraiment connaître pour… savoir que ça existe ! (You don’t say?) Les formes XML sont une solution très élégante à ce genre de problèmes oui !

                Citation : Fumble

                PS: Tu aurais pu faire un dégradé Orange Validateur ! ;)


                Oui mais :
                1. Le violet, c’est ma couleur préférée ;
                2. Je n’ai fait que reprendre les couleurs que Ankara a placées dans son code Java plus haut ;
                3. Le violet est la couleur complémentaire du orange Orange Validateur, donc c’est pas grave !

                Bref, Ankara, es-tu satisfait ? ^^
                • Partager sur Facebook
                • Partager sur Twitter

                Ancien validateur du SdZ.

                [Android] Dégradé

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown