我想问一下android中怎么使得TextView的文字自动循环变换

2025-03-11 06:00:43
推荐回答(4个)
回答1:

你需要通过异步线程更新UI。Android里实现异步线程的方法太多了,例如AsyncTask,给个示例给你吧:
private AsyncTask mTask = new AsyncTask(){

private int count = 0;

@Override
protected Double doInBackground(Object... params) {

//一秒更新一次
while (mRun) {
try {
Thread.sleep(1000);
publishProgress(++count);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}

@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
mTextView.setText(String.valueOf(values[0]));
}

@Override
protected void onPostExecute(Double result) {
//异步任务执行结束
}
};

回答2:

设置一个定时器Timer,然后设置一个任务,每隔几秒钟就切换一下TextView的显示的值.

系统有一个控件,叫做Chronometer已经是这样的效果了,就是计时器.

回答3:

  public class MainActivity extends Activity {
      private TextView tv_display;
      private boolean running = true;
      private int count = 0;
      private Handler handler=new Handler(){
          @Override
          public void handleMessage(Message msg) {
              tv_display.setText("" + count++);
          }
      };
      private Runnable r = new Runnable() {
          @Override
          public void run() {
              while(running){
                  handler.sendEmptyMessage(0);
                  try {
                      Thread.sleep(1000);
                  } catch (InterruptedException e) {
                      e.printStackTrace();
                  }
              }
          }
      };
      
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          tv_display = (TextView) findViewById(R.id.textView);
          new Thread(r).start();
      }
          
      @Override
      protected void onStop() {
          running = false;
          super.onStop();
      }
  }

回答4:

public class Demo extends Activity {

private TextView mTxt;
private Timer mTimer;
private TimerTask mTask;
private int mStauts=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTxt=(TextView) findViewById(R.id.mTxt);
init();
}
private void init(){
mTimer=new Timer();
mTask=new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub
mStauts++;
Message msg=new Message();
msg.what=0x112;
handler.sendMessage(msg);
}
};
mTimer.schedule(mTask, 1000, 1000);
}
private Handler handler=new Handler(){
@Override
public void handleMessage(Message msg)
{
if (msg.what == 0x112)
{
mTxt.setText(""+mStauts);
}
}
};
}