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 :

Réalisation d'une galerie d'images [Tutoriel]


Sujet :

Android

  1. #21
    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
    Yep c'est possible tu as le code source .

    https://github.com/nostra13/Android-...l-Image-Loader
    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.

  2. #22
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    je rectifie : mes competences ne le permettent pas

  3. #23
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    je crois que j'ai trouve...un truc de fou....
    2mn je verifie

  4. #24
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    bon non c'est pas ce que je pensais
    j'ai vu sur le net que ca pouvait venir d'une image corrompue, mais j'ai mis une image vérifiée, et meme probleme

  5. #25
    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
    Si tu essai avec une autre image ?
    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.

  6. #26
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    essayé aussi
    pareil

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 51
    Points
    51
    Par défaut
    Bonjour à tous,
    J'ai voulu utiliser les codes du tutos, mais j'obtiens des erreurs quand je l’intègre dans mon appli :
    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
    Process: gisclace, PID: 17482
        android.os.NetworkOnMainThreadException
                at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
                at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
                at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
                at java.net.InetAddress.getAllByName(InetAddress.java:214)
                at com.android.okhttp.internal.Dns$1.getAllByName(Dns.java:28)
                at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:216)
                at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:122)
                at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:292)
                at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
                at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
                at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
                at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:89)
                at gisclace.menu8_Fragment.setImage(menu8_Fragment.java:165)
                at gisclace.menu8_Fragment.onCreateView(menu8_Fragment.java:65)
                at android.app.Fragment.performCreateView(Fragment.java:1700)
                at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
                at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
                at android.app.BackStackRecord.run(BackStackRecord.java:684)
                at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
                at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
                at android.os.Handler.handleCallback(Handler.java:733)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:136)
                at android.app.ActivityThread.main(ActivityThread.java:5172)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:614)
                at dalvik.system.NativeStart.main(Native Method)
    C'est étrange, le même code dans une application sans fragments fonctionne, il doit y avoir quelque chose à modifier, mais je ne sais pas quoi.

    Et le code :
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    public class menu8_Fragment extends Fragment {
     
        //Adresse où se trouve l'ensemble des images gif (numérotées de 1 à 21).
        private final static String SERVER_IM = "http://mickael-lt.developpez.com//tutoriels/android/imagesfaq/";
        // GUI
        private Gallery gallery;
        private ImageView imgView;
        //Data
        private ArrayList<URL> mListImages;
        private Drawable mNoImage;
     
        View rootview;
        @Nullable
        @Override
     
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            rootview = inflater.inflate(R.layout.galerie, container, false);
     
            //Récupération d'une image par défaut à afficher en cas d'erreur ou de liste vide
            mNoImage = this.getResources().getDrawable(R.drawable.no_photo);
     
            //Construction des URL pour les images
            mListImages = buildListImages();
     
            //Récupération du composant affichant l'image en grand
            imgView = (ImageView)rootview.findViewById(R.id.imageview);
     
            //On lui met une image par défaut (la premiere de la liste ou à défaut l'image d'erreur)
            if (mListImages.size() <= 0) {
                imgView.setImageDrawable(mNoImage);
            } else {
                setImage(imgView, mListImages.get(0));
            }
            //Récupération du composant affichant la liste des vignettes
            gallery = (Gallery) rootview.findViewById(R.id.gallery);
            //On lui donne notre adapter qui s'occupéra de l'alimenter en vignette
            gallery.setAdapter(new AddImgAdp(getActivity()));
            //Espacement entre les vignette
            gallery.setSpacing(10);
     
            //Lors d'un clic sur une des vignettes, on affiche l'image correspondante en grand
            gallery.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView parent, View v, int position, long id) {
                    setImage(imgView, mListImages.get(position));
                }
            });
     
            return rootview;
        }
     
     
        /**
         * Permet de construire la liste des urls pour les images
         * @return
         */
        private ArrayList<URL> buildListImages() {
            int nbTotalImage = 21;
            ArrayList<URL> listFic = new ArrayList<URL>();
            for(int i = 1; i <= nbTotalImage; i++) {
                try {
                    listFic.add(new URL(SERVER_IM + "/" + i + ".gif"));
                } catch (MalformedURLException e) {
                    Log.e("DVP Gallery", "Erreur format URL : " + SERVER_IM + "/" + i + ".gif");
                    e.printStackTrace();
                }
            }
     
            return listFic;
        }
     
     
    /**
     * Notre adapter qui gère la liste des vignettes
     * @author Mickaël Le Trocquer
     */
    public class AddImgAdp extends BaseAdapter {
        int GalItemBg;
        private Context cont;
     
        public AddImgAdp(Context c) {
            cont = c;
            TypedArray typArray = c.obtainStyledAttributes(R.styleable.GalleryTheme);
            GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0);
            typArray.recycle();
        }
     
        public int getCount() {
            return mListImages.size();
        }
     
        public Object getItem(int position) {
            return position;
        }
     
        public long getItemId(int position) {
            return position;
        }
     
        public View getView(final int position, View convertView, ViewGroup parent) {
            ImageView imgView = null;
            //Récyclage du composant
            if (convertView == null) {
                imgView = new ImageView(cont);
            } else {
                imgView = (ImageView)convertView;
            }
            //On affecte notre image à la vignette
            if (mListImages.size() <= 0) {
                imgView.setImageDrawable(mNoImage);
            } else {
                setImage(imgView, mListImages.get(position));
            }
            //On défini la taille de l'image
            imgView.setLayoutParams(new Gallery.LayoutParams(150, 150));
            imgView.setScaleType(ImageView.ScaleType.FIT_XY);
            //On fixe un arrière plan plus sympa
            imgView.setBackgroundResource(GalItemBg);
     
            return imgView;
        }
    }
     
     
        /**
         * Méthode permettant de télécharger une image depuis une URL et de l'affecter à un composant de type ImageView
         * @param aView
         * @param aURL
         */
        public void setImage(ImageView aView, URL aURL) {
            try {
                URLConnection conn = aURL.openConnection();
                conn.connect();
                InputStream is = conn.getInputStream();
     
                // Bufferisation pour le téléchargement
                BufferedInputStream bis = new BufferedInputStream(is, 8192);
     
                // Création de l'image depuis le flux des données entrant
                Bitmap bm = BitmapFactory.decodeStream(bis);
                bis.close();
                is.close();
     
                // Fixe l'image sur le composant ImageView
                aView.setImageBitmap(bm);
     
            } catch (IOException e) {
                aView.setImageDrawable(mNoImage);
                Log.e("DVP Gallery", "Erreur téléchargement image URL : " + aURL.toString());
                e.printStackTrace();
            }
        }
    }
    Merci par avance si l'un de vous a la solution.

  8. #28
    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
    Tu ne peux pas exécuter tes requetes Http depuis ton Thread UI pour cela tu dois passer par un nouveau Thread.

    la class AsyncTask est prévu pou cet effet
    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.

Discussions similaires

  1. Pagination d'une galerie d'image sans recharger
    Par luffy59 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/07/2008, 15h38
  2. [FPDF] Faire une galerie d'images en PDF
    Par BernardT dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/06/2008, 12h04
  3. [AJAX] Construction d'une galerie d'images avec Ajax
    Par Pmko01 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/01/2008, 16h32
  4. [Galerie] Recherche une galerie d'images
    Par Chickenkiller dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 19/09/2006, 17h03
  5. une galerie d'images
    Par Le Mage Noir dans le forum Langage
    Réponses: 9
    Dernier message: 19/03/2006, 21h57

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