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 :

Trouver la taille d'une image ! [Débutant(e)]


Sujet :

Android

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Trouver la taille d'une image !
    Salutations à tous !

    Je reviens du Chat ou personne n'a pu m'aider !

    Un problème très simple que voici :

    J'ai une vue, qui contient un layout collé au bords de l'écran.
    Dans le layout, j'ai une imageview collée au bord du 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
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
     
        <ImageView
            android:id="@+id/imageView1g"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="2.13"
            android:src="@drawable/home" />
     
    </LinearLayout>
    Lorsque je souhaite afficher la largeur de cette imageview, ça ne fonctionne pas (revois 0 [zero]). Pourtant, quand je lui demande la même chose mais dans un évenement onTouch de cette image, ça fonctionne.

    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
    package com.test;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.*;
     
     
    public class MainActivity extends Activity {
     
    	private ImageView imageViewCarte;
     
     
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
     
            this.imageViewCarte = (ImageView) findViewById(R.id.imageView1g);
            Toast.makeText(this,"Fonctionne pas : "+ imageViewCarte.getWidth(), Toast.LENGTH_SHORT).show();
     
     
            this.imageViewCarte.setOnTouchListener(new View.OnTouchListener() {
    			public boolean onTouch(View v, MotionEvent e) {
    				MainActivity.this.imageViewCarte = (ImageView) findViewById(R.id.imageView1g);
    		        Toast.makeText(MainActivity.this,"Fonctionne : "+ imageViewCarte.getWidth(), Toast.LENGTH_SHORT).show();
    				return false;
    			}
            });
     
     
    }
    }
    Pourquoi ?

  2. #2
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Essaye plutôt avec getMeasuredWidth() et getMeasuredHeight()

    http://developer.android.com/referen...easuredWidth()
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci,

    Dans l'idée j'ai contourné le problème en prenant la taille de l'écran directement.

    La question porte plus sur "pourquoi" ça ne fonctionne pas ?
    Le code me parait juste, l'endroit aussi ( dans le doute j'ai testé dans le onStart, même résultat ) donc pourquoi ça ne fonctionnerais pas ?

    Merci pour vos précisions !


    edit : après test, ta solution renvois également zero :/

  4. #4
    Expert éminent

    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
    Points : 9 149
    Points
    9 149
    Par défaut
    Alors pour expliquer le getWidth.

    La construction de ton layout se fait à partir de ton onResume, donc tu n'auras la taille qu'a ce moment et non avant .

    Par contre je croyais que getMeasuredWidth() pré-calculé une taille mais je me suis trompé :-/

    Après comme tu l'as signalé tu peux soit récupérer la taille de l'écran soit définir une taille fixe dans ton xml pour ta View . et le récupérer par les Dimensions .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci de ta réponse,
    Je pensais que le onCreate faisait justement la création de la vue et donc du layout !

    Maintenant j'en sais un peu plus

    Bonne journée et merci

  6. #6
    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
    onCreate établit la hierarchie des views, et fait effectivement le inflate des layout... (ce qui permet de changer le texte / la gestion des évenements depuis le onCreate).
    Par contre, rien n'est affiché avant le onResume... Donc tout ce qui est "matchParent" / "fill_parent" a une taille de 0 jusqu'à ce que le l'affichage ne décide à s'y coller...

    La question est pourquoi prendre la taille de l'écran ? Ca ne collera pas forcément (rien n'empeche une UI android de prendre plus de place dans les barres de notification, ou en bas...). Pourquoi as tu besoin de cette taille ? et qu'en fais tu ?

    Par exemple, si l'idée est de chopper l'endroit de l'image ou est fait un 'touch' il est plus interessant de le faire au moment du touch justement (juste au cas ou la fenetre ai été redimensionnée entre temps).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Merci de ta réponse !

    J'ai besoin de la taille de l'image pour y ajouter des pointeurs ( tel google maps ) en ayant en donnée d'entrée que le pourcentage en X et le pourcentage en Y du pointeurs par rapport à l'image.

    p.ex.:
    Je sais qu'il sera à 30% depuis la gauche et 66% depuis le haut de l'image.

    J'aimerais que mon pointeur ( ou repère, ou flèche comme vous voulez ) s'affiche en même temps que le reste évidement. Sur ces pointeurs il y aura des évènements (p.ex.:onTouch).



    edit: Les informations des pointeurs viennent de multiples fichier XML, non modifiable.

  8. #8
    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
    C'est bien ce qu'il me semblait... Donc à moins que tu ne gères la surface directement, il semble plus judicieux de trouver un meilleur endroit que sur le onCreate...

    Il y a tout un tas d'évenements qui peuvent modifier le layout (le clavier par exemple)... Les onXXXXX correspondant à ces evenements (onResume par exemple, voir onPostResume) peuvent être un meilleur choix non ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. [Tableaux] trouver la taille d'une image au format binaire
    Par epeichette dans le forum Langage
    Réponses: 5
    Dernier message: 21/11/2008, 13h12
  2. Récupérer la taille d'une image dans un fichier (GIF/JPEG)
    Par SheikYerbouti dans le forum Multimédia
    Réponses: 4
    Dernier message: 12/05/2005, 14h17
  3. [Photoshop] Changement de taille d'une image
    Par sole dans le forum Imagerie
    Réponses: 4
    Dernier message: 29/04/2005, 16h13
  4. Recuperation de la taille d'une image avec la propriété SRC
    Par CDRIK dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/10/2004, 03h05
  5. [FLASH MX] taille d'une image
    Par matN59 dans le forum Flash
    Réponses: 2
    Dernier message: 10/06/2004, 10h51

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