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 :
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
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
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.
Partager