J'écris une application Android comme un nombre de roues. J'ai utilisé TextSwitcher et une boucle pour changer le texte. Il est supposé que chaque nombre dans la boucle va glisser de gauche à droite. Mais le résultat n'est pas comme prévu. Seul le dernier numéro glisse, il semble qu'aucun numéro ne soit glissé. Quelqu'un peut-il aider avec ceci? Est-ce lié à la mise à jour de l'interface utilisateur?TextSwitcher setText dans une boucle ne fonctionne pas correctement?
Voici mes codes.
package net.pixelstech.counter;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Gravity;
import android.view.Menu;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher;
import android.view.View;
public class MainActivity extends Activity implements ViewSwitcher.ViewFactory{
private TextSwitcher mSwitcher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSwitcher=(TextSwitcher)findViewById(R.id.count_id);
mSwitcher.setFactory(this);
mSwitcher.setInAnimation(this,android.R.anim.slide_in_left);
mSwitcher.setOutAnimation(this,android.R.anim.slide_out_right);
GeneralCountAsyncTask cat=new GeneralCountAsyncTask();
cat.execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public View makeView() {
TextView t = new TextView(this);
t.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL);
t.setTextSize(70);
t.setTextColor(Color.RED);
return t;
}
private void startAnimate(final int from,final int to){
for(int i=from;i<to;++i){
mSwitcher.setText(String.valueOf(i));
}
}
public class GeneralCountAsyncTask extends AsyncTask<Void,String,Void>{
@Override
protected Void doInBackground(Void...v){
while(true){
try {
publishProgress("");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
protected void onProgressUpdate(String...values){
startAnimate(1,3);
}
}
}
Voici le xml J'utilise:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextSwitcher android:id="@+id/count_id"
android:layout_width="fill_parent"
android:layout_height="80dip"
android:layout_gravity="center"
>
</TextSwitcher>
quelqu'un Hope peut vous aider. Je vous remercie.
Oui, j'ai essayé ça. Le même résultat – PixelsTech