使用Handler+Thread实现Loading...开始界面循环提示动画

    突然想实现类似于软件启动时的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 ++;
			}
		}
	}
}

 

你可能感兴趣的:(handler,loading,启动界面,Thrad)