突然想实现类似于软件启动时的Loading...循环提示信息,写了一下基本实现了这个功能,但由于是动画效果就不截图了,下面是代码:
package com.wly.summary.mechanism;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
/**
* 使用Thread + Handler实现Loading...循环动画效果
* 1、在onCreate中实例化线程对象,并实例化一个Handler对象,同时实现Handler对象中的handleMessage()方法
* 2、新建一个Thread继承类MyThread,在构造方法中实现外部Handler对象的引用(即第一步中实例化的那个Handler)
* ,在线程的run()方法中不断的发送Message,第一步中实例化的Handler对象就可以使用传进来的Message来修改TextView的值了
* @author WLY
*/
public class Loading extends Activity {
TextView textView;
int i = 1;
String info;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textView = new TextView(this);
info = "loading";
textView.setText(info);
textView.setTextSize(30);
setContentView(textView);
MyThread myThread = new MyThread(myHandler);
myThread.start();
}
Handler myHandler = new Handler() {
@Override
public void handleMessage(Message msg) { //实现handlerMessage来获取传入的Message对象
super.handleMessage(msg);
for(int j=0;j<(msg.what % 6);j++) {
info += ".";
}
textView.setText(info);
info = "loading";
}
};
class MyThread extends Thread {
Handler myHandler = new Handler();
public MyThread() {
}
public MyThread(Handler handler) { //使用构造方法将该Handler对象引入
myHandler = handler;
}
@Override
public void run() {
while(true) {
Message msg = new Message();
msg.what = i;
myHandler.sendMessage(msg); //向得到的Handler对象发送消息
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
i ++;
}
}
}
}