package com.jxs.app.gridview.utils; import android.os.Handler; import android.os.Message; import android.widget.TextView; /** * * @Author Jiangxs * @Date 2011-7-21 上午12:06:24 * @Des 本类为跑马灯工具类 只要提供给一个要显示的字符串,一个TextView,就可以在这个TextView中实现跑马灯。 */ public class Marquee { private final int TEXT_OUT = 4; private final int TEXT_IN = 5; private String titleStr;// 跑马灯字符串 private int place = 1;// replace count private TextView titleTextView; public Marquee(String titleStr, TextView titleTextView) { this.titleStr = titleStr; this.titleTextView = titleTextView; } private Handler myHandler = new Handler() { @Override public void handleMessage(Message msg) {// 重写的方法用于接收Handler消息 super.handleMessage(msg); if (msg.what == TEXT_OUT) {// 跑马灯向外出来时 titleTextView.setText(titleStr.substring(0, place)); } else if (msg.what == TEXT_IN) {// 跑马灯向里进去时 titleTextView.setText(titleStr.substring(place, titleStr .length())); } } }; public void menuThread() { new Thread() {// 该线程用于标题栏跑马灯的实现 public void run() { boolean control = true; while (true) { if (control) {// 出来时 myHandler.sendEmptyMessage(TEXT_OUT); try { Thread.sleep(300);// 睡觉300毫秒 } catch (Exception e) {// 捕获异常 e.printStackTrace();// 打印异常 } if (place >= titleStr.length()) { place = 1; control = false; } else { place++; } } else {// 进去 myHandler.sendEmptyMessage(TEXT_IN);// 发送Handler消息 try { Thread.sleep(200);// 睡觉300毫秒 } catch (Exception e) {// 捕获异常 e.printStackTrace();// 打印异常 } if (place >= titleStr.length()) { place = 1; control = true; } else { place++;// 将place加一 } } } } }.start(); } }