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 :

Affichage de plusieurs images au clic de la souris dans une application Android


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 62
    Par défaut Affichage de plusieurs images au clic de la souris dans une application Android
    Bonjour,

    Je cherche à permettre à mon application Android d'afficher plusieurs images via BitmapFactory et BitmapDrawable au clics successifs de ma souris.

    Voici mon code actuel "MainActivity.java" qui me permet d'afficher qu'un seul objet (je voudrais en afficher plusieurs) :

    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
    package com.example.picture;
     
    import java.io.InputStream;
     
    import com.example.picture.R;
     
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
     
     
    public class MainActivity extends Activity {
     
    	 ImageView imageview;
    	 Button button;
    	 InputStream inputstream;
    	 Bitmap bitmap;
    	 Drawable drawable;
    	 Integer[] ImageName = {R.drawable.dvd-bg};
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            LinearLayout picture = (LinearLayout) findViewById (R.id.picture_part);
            imageview = (ImageView)findViewById(R.id.imageView1);
    		picture.setOnClickListener(new View.OnClickListener() {
    		    @Override
    		    public void onClick(View v) {
     
    		    	inputstream = MainActivity.this.getResources().openRawResource(R.drawable.dvd-bg);
     
    		    	bitmap = BitmapFactory.decodeStream(inputstream);
     
    		    	drawable = new BitmapDrawable(getResources(),bitmap);
     
    		    	imageview.setImageDrawable(drawable);
     
     
    		    }
    		});
        }
     
    }
    et mon layout "activity_main.xml" :

    Code XML : 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
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.picture.MainActivity" >
     
        <ImageView
     android:id="@+id/imageView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentTop="true"
     android:layout_centerHorizontal="true"
     />
     
           <LinearLayout
            android:id="@+id/picture_part"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:clickable="true"
            android:orientation="vertical" >
     
        </LinearLayout>
     
    </RelativeLayout>

    mon image : Nom : dvd-bg.png
Affichages : 307
Taille : 36,5 Ko

    Est ce la bon méthode utilisée pour afficher des images ?

    Merci pour votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 62
    Par défaut
    Bonsoir,

    Connaissez-vous une méthode pour positionner l'image affichée au Clic à l'endroit du clic ?

    Je pense que c'est la solution au problème.

    Merci d'avance

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 62
    Par défaut
    Bonsoir,

    En recherchant sur le web, j'ai adapté mon projet avec la méthode onTouch au lieu de onClick qui permet de générer les coordonnées x et y du clic:

    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
    package com.example.picture;
     
    import java.io.InputStream;
     
    import com.example.picture.R;
     
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
     
     
    public class MainActivity extends Activity {
     
    	 ImageView imageview;
    	 Button button;
    	 InputStream inputstream;
    	 Bitmap bitmap;
    	 Drawable drawable;
    	 Integer[] ImageName = {R.drawable.dvd-bg};
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            LinearLayout picture = (LinearLayout) findViewById (R.id.picture_part);
            imageview = (ImageView)findViewById(R.id.imageView1);
    		picture.setOnTouchListener(new View.OnTouchListener() {
    		    @Override
    		    public boolean onTouch(View v, MotionEvent e) {
     
    		    	inputstream = MainActivity.this.getResources().openRawResource(R.drawable.dvd-bg);
     
    		    	bitmap = BitmapFactory.decodeStream(inputstream);
     
    		    	drawable = new BitmapDrawable(getResources(),bitmap);
     
                            imageview.setX(e.getX());
     
    		    	imageview.setY(e.getY());
     
    		    	imageview.setImageDrawable(drawable);
     
     
    		    }
    		});
        }
     
    }
    Seulement, une seule image est affichée à chaque clic (l'ancienne disparaît) donc les images ne se superposent pas.

    Avez-vous la solution ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 62
    Par défaut
    Bonsoir,

    J'ai créé un fichier ViewImg.java et un fichier Img.java :

    Fichier Img.java :

    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
    package com.example.picture;
     
    import android.app.Activity;
    import android.content.Context;
    import android.content.res.Resources;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Paint;
     
    public class Img extends Activity {
    	float radius = 20;      // Rayon de l'image
    	float x = radius;  // Centre de l'image (x,y)
    	float y = radius;
    	Context context = ViewImg.GlobalContext;
    	Resources res = context.getResources();
    	private Paint paint;
     
    	   // Constructeur
    	   public Img(float x, float y) {
    		   paint = new Paint();
    	   }
     
    	   public void draw(Canvas canvas) {
    		   // affichage objet à partir d'une image
    	       Bitmap monImage = BitmapFactory.decodeResource(res, R.drawable.dvdbg);
    	       canvas.drawBitmap(monImage, x, y, paint);
    	   }
     
     
    }
    Fichier ViewImg.java :

    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
    package com.example.picture;
     
    import com.example.picture.Img;
     
    import android.content.Context;
    import android.graphics.Canvas;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
     
    public class ViewImg extends View implements OnTouchListener {
           public static Context GlobalContext = null;
           private Img img;   
           private Img img1; 
           private Img img2; 
           private Img img3; 
           public static Img[] imgs = new Img[4];
     
    	// Constructeur
    	   public ViewImg(Context context) {
    	      super(context);
    		  GlobalContext = context;
    	      img = new Img(4,6); 
    	      img1 = new Img(8,7); 
    	      img2 = new Img(16,8); 
    	      img3 = new Img(30,9); 
    	      this.setOnTouchListener(this);
    	   }
     
    	@Override
    	public boolean onTouch(View v, MotionEvent e) {
    	    float x = e.getX();
    	    float y = e.getY();
     
        	return false;
    	}
     
    	@Override
    	protected void onDraw(Canvas canvas) {
     
    		img.draw(canvas);
    		img1.draw(canvas);
    		img2.draw(canvas);
    		img3.draw(canvas);
    	 	// Delay
    	       try {  
    	          Thread.sleep(30);  
    	       } catch (InterruptedException e) { }
     
    	       invalidate();
    		super.onDraw(canvas);
    	}
     
    }
    MainActivity.java :

    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
    package com.example.picture;
     
    import com.example.picture.ViewImg;
     
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.View;
     
     
     
    public class MainActivity extends Activity {
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            View ViewImg = new ViewImg(this);
            setContentView(ViewImg);
            ViewImg.setBackgroundColor(Color.WHITE);
     
        }
    }
    Mais mes 4 objets images ne s'affichent pas, seulement 1 je pense.

    Pouvez-vous m'aider à avancer ?

    Merci

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 62
    Par défaut
    Bonjour,

    Je viens de consulter une ancienne discussion ayant la même finalité : ici.

    J'ai créé une ScrollView dans mon layout.

    J'ai tenté de créer plusieurs instances de ViewImg : sans succès. Je ne sais pas le faire !

    L'affichage à l'écran du Dvd est apparement le dernier appelé dans ViewImg.

    Bonne année 2021 et merci par avance

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Par défaut
    Bonjour et bonne année à toi aussi.

    Tu aimerais qu'au clic sur l'écran, tu affiches une image à l'endroit du clic?

    Dans ce cas, il te suffit d'écouter le onTouch pour récupérer les positions x et y. Avec ceci, tu peux ajouter une simple ImageView dans laquelle tu lui définis une taille fixe (with et height), l'image et une position x et y qui correspond au touch. Ensuite, il faut pas oublié de l'ajouter à ton layout principal (dans ton exemple c'est une RelativeLayout). Tu appelles simplement la méthode addView du layout et ca devrait fonctionner. Par contre ta méthode pour l'ajout de ton ImageView doit être au Up ou au DOWN de la méthode onTouch.

Discussions similaires

  1. affichage de plusieurs images dans une même figure
    Par kawther dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 20/02/2009, 18h45
  2. [POO] Affichage de plusieurs images sur un meme emplacement, par clic.
    Par luke-skywalker dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/02/2009, 15h33
  3. [Stratégie] Affichage de plusieurs images : limiter le nb de connexions ?
    Par Bobsinglar dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 08/04/2008, 18h18
  4. Affichage de plusieurs images dans dans un Timage
    Par Petzouille57 dans le forum Delphi
    Réponses: 1
    Dernier message: 19/10/2006, 16h16
  5. [DirectDraw7] Affichage de plusieurs image bmp
    Par SteelBox dans le forum DirectX
    Réponses: 3
    Dernier message: 24/04/2004, 19h00

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