Yep c'est possible tu as le code source .
https://github.com/nostra13/Android-...l-Image-Loader
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.
je rectifie : mes competences ne le permettent pas
je crois que j'ai trouve...un truc de fou....
2mn je verifie
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
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.
Bonjour à tous,
J'ai voulu utiliser les codes du tutos, mais j'obtiens des erreurs quand je l’intègre dans mon appli :
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.
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)
Et le code :
Merci par avance si l'un de vous a la solution.
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(); } } }
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager