Bonjour,

J'essaye de faire des pauses Thread.sleep() dans une boucle (for) pour que mon ScrollView scroll tout seul, donc faire un AutoScroll ou texte auto-défilant.

J'ai googlé presque tout ce qui est possible à ce sujet. J'ai beaucoup lu sur les Threads.sleep() mais rien n'aboutit.

Voici mon code, je l'ai réduit au plus simple. J'utilise API 7 comme minimum SDK.

Mon MainActivity :
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
package com.example.testsleep;
 
import com.example.testsleep.R.id;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;
import android.app.Activity;
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    Button Button_AutoScroll = (Button)findViewById(id.Button_AutoScroll);
    Button_AutoScroll.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
 
            TextView Text_Scrolable = (TextView) findViewById(id.Text_Scrollable);                
            ScrollView Scroll_Window = (ScrollView)findViewById(id.Scroll_Window);
 
           for (int ScrollPos = 0; ScrollPos < Text_Scrolable.getHeight();++ScrollPos)
                {
                try {Thread.sleep(10000);}     ////ici ca plante 
                catch (InterruptedException e) {return;}
 
            Scroll_Window.smoothScrollTo(0, ScrollPos);                                        
            }
            }
        });
    }
}
Et mon fichier XML activity_main
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Layout_MainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <ScrollView 
        android:id="@+id/Scroll_Window"
        android:layout_width="300dp"
        android:layout_height="175dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" >
 
                <TextView
                android:id="@+id/Text_Scrollable"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="blablablblablalblablalblabllablalblablalbla
                lbalbalblbllablalblablalblablablablalblablalbalblablalbla
                blablablalbalblablablalbalblablablalblablalblabllbalalbal
                lblablalbbalblablablblblablablablalbbalblablbalblblalbbla
                blablablblbalbablbalalbalbblablbalbblalblablalblalalbblbl
                lblbalblablalblablablalblablablalbalblablablalblablablblb
                lblablalbalblablablablablblablablalablalblablablalblablba
                lblabllablalblablalblablalblalblablalblalblblablalblalblb
                lbalbalblbllablalblablalblablablablalblablalbalblablalbla
                blablablalbalblablablalbalblablablalblablalblabllbalalbal
                lblablalbbalblablablblblablablablalbbalblablbalblblalbbla
                blablablblbalbablbalalbalbblablbalbblalblablalblalalbblbl
                lblbalblablalblablablalblablablalbalblablablalblablablblb
                lblablalbalblablablablablblablablalablalblablablalblablba
                lblabllablalblablalblablalblalblablalblalblblablalblalblb
                lbalbalblbllablalblablalblablablablalblablalbalblablalbla
                blablablalbalblablablalbalblablablalblablalblabllbalalbal
                lblablalbbalblablablblblablablablalbbalblablbalblblalbbla
                blablablblbalbablbalalbalbblablbalbblalblablalblalalbblbl
                lblbalblablalblablablalblablablalbalblablablalblablablblb
                lblablalbalblablablablablblablablalablalblablablalblablba
                lblabllablalblablalblablalblalblablalblalblblablalblalbl"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textColor="#673F18" />
 
    </ScrollView>
 
    <Button
        android:id="@+id/Button_AutoScroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="AutoScroll" />
 
</RelativeLayout>
Quand je mets la portion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
try {Thread.sleep(10000);} catch (InterruptedException e {return;}
dans la boucle for ca plante. Comme s'il compilait le Thread.sleep() un par-dessus l'autre sans l'executer et faire une pause comme prévu et saturer la mémoire. Pourtant c'est ce que je vois partout sur le net pour faire une pause dans un for.

Quand je mets ces 2 lignes en dehors de la boucle for, avant ou après, il fait une pause de 10 sec avant d'effectuer la boucle for d'un coup. Mais rien à faire dans la boucle.

Qu'y a-t-il que j'aurais mal compris à propos des Threads ?

Merci d'avance pour votre aide.