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 :

Bitmap/Matrix : que fait ce code ?


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut Bitmap/Matrix : que fait ce code ?
    Salut,

    Je n'arrive pas à comprendre que fait cette fonction :

    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
     
    private static Bitmap getImageFromArrayForSize(Resources res, int[] resIds, int[] sizes, int size) {
    		Bitmap bmp = null;
    		for (int i = 0; i < sizes.length; i++) {
    			if (sizes[i] == size) {
    				bmp = BitmapFactory.decodeResource(res, resIds[i]);
    				break;
    			}
    		}
    		if (bmp == null) {
    			Matrix matrix = new Matrix();
    			float scale = ((float) size) / sizes[0];
    			matrix.postScale(scale, scale);
    			bmp = BitmapFactory.decodeResource(res, resIds[0]);
    			bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true);
    		}
    		return bmp;
    	}
    En sachant que c'est le code suivant qui l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    			Resources res = getResources();
    			int[] bulleType1Bitmaps = { R.drawable.bulle_1280,
                                     R.drawable.bulle_800,
                                     R.drawable.bulle_480,
                                     R.drawable.bulle_320,};
    			int[] sizes = { 1280, 800, 480, 320 };
    			int size = getWidth();
    			bulleType1Bitmap = getImageFromArrayForSize(res, bulleType1Bitmaps, sizes, size);
    		}
    Ce code me permet d'obtenir un bitmap de la taille souhaitée mais je ne comprends pas comment la fonction fait ça. Que fait exactement la fonction createBitmap avec la Matrix passée en paramètre , et surout qu'est-ce exactement que cette matrice ?

  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,

    Ben en gros il recherche déjà la bonne image en fonction de la taille
    de l'écran ou de la vue (Tout dépends de ce qu'est la fonction getWidth()) dans cette partie de code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (sizes[i] == size) {
    				bmp = BitmapFactory.decodeResource(res, resIds[i]);
    				break;
    			}
    Ensuite il redimensionne l'image avec cette échelle
    float scale = ((float) size) / sizes[0];

    Donc en gros si l'image a une taille de 1200 il ne la touche pas, si elle est de 800 ben il aura une échelle de 800 / 1200, et ainsi de suite..

    Cela lui permet d'adapter sont image créer pour du 1200 a n'importe quelle autre taille d'écran.

    Après je vais dire que normalement cela se fait dans les ressources, ou bien lors de la récupération du serveur lui passer la densité de l'écran pour ne pas avoir justement se recalcul dans l'application cliente.

  3. #3
    Expert confirmé

    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
    Billets dans le blog
    3
    Par défaut
    Oui c'est ce que j'allais dire aussi... le système le fait tout seul normalement !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Par défaut
    Ok je comprends , merci.

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

Discussions similaires

  1. Que fait ce code ?
    Par vieuxmonsieur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/09/2012, 13h17
  2. Que fait ce code ?
    Par teol91 dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 24/10/2011, 10h38
  3. que fait ce code
    Par improcess dans le forum Images
    Réponses: 4
    Dernier message: 02/10/2011, 14h39
  4. que fait ce code !
    Par guitariste dans le forum C++
    Réponses: 11
    Dernier message: 01/05/2008, 15h29
  5. que fait ce code (et surtout pourquoi??)
    Par elekis dans le forum C++
    Réponses: 3
    Dernier message: 13/09/2005, 10h47

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