Bonjour,
je suis débutant sous Androïd et je cherche à créer un "Slide Show". Pour être plus précis je veux pouvoir changer une ImageView toutes les 5 secondes.
Pour cela j'utilise une classe qui gère tout cela. Ma première image s'affiche bien mais après un certain temps d'attente aucun changement n'est visible. J'ai vérifié mon Timer, et celui-ci fonctionne bien: la méthode qui doit modifier mon ImageView est bien appelée. J'en ai donc conclu que le problème venait du rafraichissement de mon image (pour information, lorsque je retourne sur le bureau d'Androïd et que je retourne à mon application, le changement est bien visible, ce qui, je pense, confirme mon hypothèse).
Serait-il possible de m'expliquer comment résoudre mon problème, ou au moins m'indiquer d'où vient l'erreur. Étant débutant dans cette technologie je suis tout à fait ouvert aux critiques et conseils que les plus expérimentés pourront m'apporter ^^.
Explication de ma classe:
- Dans le main je vais créer un nouveau SlideShow.
- Mon constructeur me crée mes objets "Event" qui possèdent les images à afficher
- L'attribut "elementAffiche" me permet de savoir quelle image est actuellement affichée
- J'appelle ensuite dans le main la méthode "startSlideShow"
- Celle-ci appelle loadAffiche qui sera chargée de modifier mon ImageView
- Je lance ensuite le Timer avec "startTimer"
- Je n'explique pas le fonctionnement du Timer, c'est du classique avec une classe interne. Tout ce qu'il faut savoir c'est que toutes les 5 secondes il appelle la classe "loadAffiche" avec comme argument le Drawable à placer dans notre ImageView.
- Comme je l'ai expliqué la méthode "loadAffiche" est bien appelée, l'ImageView est bien modifiée, mais cette modification n'est pas visible à l'écran.
Merci d'avance !
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 package com.example.ticketnetandroid; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.graphics.drawable.Drawable; import android.widget.ImageView; public class SlideShow { private Event event1; private Event event2; private Event event3; private Event event4; private Event event5; private Event event6; private ImageView affiche; private Timer t; private int elementAffiche; public SlideShow(Activity activity){ event1 = new Event(1); event2 = new Event(2); event3 = new Event(3); event4 = new Event(4); event5 = new Event(5); event6 = new Event(6); affiche = (ImageView)activity.findViewById(R.id.SlideShowAffiche); elementAffiche = 1; } public void startSlideShow(){ loadAffiche(event1.get_Image()); startTimer(); } private void loadAffiche(Drawable image){ affiche.setImageDrawable(image); } private void startTimer(){ t = new Timer(); t.schedule(new ActionRepeat(), 5000, 5000); } class ActionRepeat extends TimerTask{ public void run(){ switch(elementAffiche){ case 1: loadAffiche(event2.get_Image()); break; case 2: loadAffiche(event3.get_Image()); break; case 3: loadAffiche(event4.get_Image()); break; case 4: loadAffiche(event5.get_Image()); break; case 5: loadAffiche(event6.get_Image()); break; case 6: loadAffiche(event1.get_Image()); elementAffiche = 0; break; } elementAffiche++; } } }
Partager