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 :

Remplir des ImageView dans un layout puis convertir ce layout


Sujet :

Composants graphiques Android

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    artisan
    Inscrit en
    Octobre 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : artisan
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2013
    Messages : 47
    Points : 30
    Points
    30
    Par défaut Remplir des ImageView dans un layout puis convertir ce layout
    Bonjour à tous,

    voici ce que j'essaie de faire:

    le relativeLayout multi_image.xml:
    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
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:id ="@+id/images">
     
        <ImageView
            android:id="@+id/image1"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/autre" />
     
        <ImageView
            android:id="@+id/image2"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignTop="@+id/imageView1"
            android:layout_alignLeft="@+id/imageView1"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:src="@drawable/add" />
     
         <ImageView
            android:id="@+id/image3"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_alignTop="@+id/imageView2"
            android:layout_alignLeft="@+id/imageView2"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="20dp"
            android:src="@drawable/add" />
     
    </RelativeLayout>
    mon activité qui n'est pas créee dans ce xml:
    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
     
    	  //.....
    	  //je suis ici dans une activité quelquonque 
    	  // je définie le layout comme ceci qui n'est pas celui de mon activité:
    	  RelativeLayout layout;
    	  layout=(RelativeLayout)findViewById(R.id.images);
    	  // je remplie les ImageView de mon layout avec la méthode setViewInLayout()
    	  setViewInLayout();
          //  je récupère le bitmap issue de la méthode convertToBitmap()
    	  bitmapAUtiliser = convertToBitmap(layout);
    	  // j'utilise le bitmapAUtiliser dans la suite du code...
    	  //......
     
     
    public void setViewInLayout(){
     
    	Bitmap b;
    	RelativeLayout layout;
    	layout=(RelativeLayout)findViewById(R.id.images);
    	ArrayList <Bitmap> bitmaps = new ArrayList <Bitmap>();
     
    	// je pense que le probleme est la...je n'arrive pas définir les ImageView image1,2,3 dans RelativeLayout Layout
    	ImageView image1 = (ImageView) findViewById(R.id.image1); 
    	ImageView image2 = (ImageView) findViewById(R.id.image2);
    	ImageView image3 = (ImageView) findViewById(R.id.image3);
    	View v;
     
    	//ici je récupère les trois premiers bitmaps dans une ArrayList d'items(gridArray) et je remplie une ArrayList de de bitmaps
    	int count = 0;
    	for (int i=0;i<gridArray.size()-1;i++){
    		if (gridArray.get(i).getCheck()){
    			b = gridArray.get(i).getBitmap(getBaseContext());
    			bitmaps.add(b);
    			count++;
    			if (count==3){
    				break;
    			}
    		}
    	}
    	//ici  je voudrais donc mettre les bitmaps dans les imageViews du fameux layout
    	int c = 0;
    	for (Bitmap subView : bitmaps){
    		switch (c){
    		case 0:
    			image1.setImageBitmap(subView);
    			c++;
    			break;
    		case 1:
    			image2.setImageBitmap(subView);
    			c++;
    			break;
    		case 2:
    			image3.setImageBitmap(subView);
    			break;
    		}
    	}
    }
     
    public Bitmap convertToBitmap(RelativeLayout layout) {
        Bitmap bmap;
        layout.setDrawingCacheEnabled(true);
        layout.buildDrawingCache();
        bmap=layout.getDrawingCache();
        return bmap; 
    }
    Donc je ne trouve pas le code qui me permet de définir image 1,2,3 par rapport au xml et/ou au layout??...et evidement j'ai un beau nullpointexception
    Si bien sure je rajoute //setContentView(R.layout.multi_image) dans ma methode setViewInLayout ca fonctionne...mais ca n'est pas ce que je veux.

    merci pour votre aide.

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Ok, après la lecture des commentaires, je comprends mieux.

    Pour faire ce que tu sembles vouloir réaliser, il faut que tu passes par un LayoutInflater, ou par View.inflate.

    Une fois ta vue réalisée, il ne te restera qu'à l'attacher à une que tu auras.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    artisan
    Inscrit en
    Octobre 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : artisan
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2013
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Bonsoir Hizin;

    j'ai donc essayé ça :
    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
    public View getViewInLayout(){
     
    	Bitmap b;
    	View row;
     
    	//setContentView(R.layout.multi_image);
    	//rl=(RelativeLayout)findViewById(R.id.images);
    	ArrayList <Bitmap> bitmaps = new ArrayList <Bitmap>();
     
    	//View v;
    	LayoutInflater inflater = LayoutInflater.from(getBaseContext());
    	row = inflater.inflate(R.layout.multi_image, null);
     
    	ImageView image1 = (ImageView) row.findViewById(R.id.image1); 
    	ImageView image2 = (ImageView) row.findViewById(R.id.image2);
    	ImageView image3 = (ImageView) row.findViewById(R.id.image3);
    	int count = 0;
    	for (int i=0;i<gridArray.size()-1;i++){
     
    		if (gridArray.get(i).getCheck()){
     
     
    			b = gridArray.get(i).getBitmap(getBaseContext());
    			bitmaps.add(b);
    			count++;
     
     
    			if (count==3){
    				break;
    			}
    		}
    	}
    	int c = 0;
     
    	for (Bitmap subView : bitmaps){
    		switch (c){
    		case 0:
    			image1.setImageBitmap(subView);
     
    			c++;
    			break;
    		case 1:
    			image2.setImageBitmap(subView);
    			c++;
    			break;
    		case 2:
    			image3.setImageBitmap(subView);
    			break;
     
     
    		}
    	}
    	return row;
     
     
     
    }
    Ca ne plante plus,mais la vue row retournée semble null??

    En tout cas je n'arrive pas à la convertir en bitmap pour la mettre dans une ImageView.
    Pourtant je sais que le switch qui remplie image1,2,3 fonctionne puisque tout à l'heure elle s'affichait en faisant setContentView(R.layout.multi_image)??.

    Pour la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LayoutInflater inflater = LayoutInflater.from(getBaseContext());
    	row = inflater.inflate(R.layout.multi_image, null);
    j'ai mis null pour l'argument ViewGroup. Je ne vois pas quoi donner en ViewGroup...

    Merci de me pardonner pour mes hérésies...

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    artisan
    Inscrit en
    Octobre 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : artisan
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2013
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Ce qui posait problème c'est la méthode de conversion View en Bitmap..

    il faut passer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    row.layout(0, 0, width, height);
    solution trouvéé ici:
    http://stackoverflow.com/questions/2...-it-in-android

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

Discussions similaires

  1. [AC-2003] Pré-remplir des champs dans un formulaire
    Par Magno dans le forum IHM
    Réponses: 5
    Dernier message: 25/03/2011, 11h18
  2. Stocker des id dans un Array puis les utiliser
    Par Rian83 dans le forum Langage
    Réponses: 2
    Dernier message: 27/08/2010, 22h18
  3. Réponses: 0
    Dernier message: 05/05/2010, 03h35
  4. Remplir des points dans une HBox
    Par tafkap dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 08/03/2010, 16h34
  5. Remplir des tables dans une base de donnée
    Par devkaty dans le forum Zend Framework
    Réponses: 1
    Dernier message: 22/10/2009, 17h46

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