Android 的跑马灯工具类

本文介绍了一种在Android应用中实现跑马灯效果的方法。通过创建一个名为Marquee的工具类,结合TextView组件和Handler机制,可以轻松地让文本在屏幕上滚动显示。此方法适用于希望在应用程序中加入动态文本展示功能的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java代码   收藏代码
  1. package com.jxs.app.gridview.utils;  
  2.   
  3. import android.os.Handler;  
  4. import android.os.Message;  
  5. import android.widget.TextView;  
  6. /** 
  7.  *  
  8.  * @Author Jiangxs 
  9.  * @Date 2011-7-21 上午12:06:24 
  10.  * @Des 本类为跑马灯工具类 只要提供给一个要显示的字符串,一个TextView,就可以在这个TextView中实现跑马灯。 
  11.  */  
  12. public class Marquee {  
  13.   
  14.     private final int TEXT_OUT = 4;  
  15.     private final int TEXT_IN = 5;  
  16.   
  17.     private String titleStr;// 跑马灯字符串  
  18.     private int place = 1;// replace count  
  19.     private TextView titleTextView;  
  20.   
  21.     public Marquee(String titleStr, TextView titleTextView) {  
  22.         this.titleStr = titleStr;  
  23.         this.titleTextView = titleTextView;  
  24.     }  
  25.   
  26.     private Handler myHandler = new Handler() {  
  27.         @Override  
  28.         public void handleMessage(Message msg) {// 重写的方法用于接收Handler消息  
  29.             super.handleMessage(msg);  
  30.             if (msg.what == TEXT_OUT) {// 跑马灯向外出来时  
  31.                 titleTextView.setText(titleStr.substring(0, place));  
  32.             } else if (msg.what == TEXT_IN) {// 跑马灯向里进去时  
  33.                 titleTextView.setText(titleStr.substring(place, titleStr  
  34.                         .length()));  
  35.             }  
  36.         }  
  37.     };  
  38.     public void menuThread() {  
  39.         new Thread() {// 该线程用于标题栏跑马灯的实现  
  40.             public void run() {  
  41.                 boolean control = true;  
  42.                 while (true) {  
  43.                     if (control) {// 出来时  
  44.                         myHandler.sendEmptyMessage(TEXT_OUT);  
  45.                         try {  
  46.                             Thread.sleep(300);// 睡觉300毫秒  
  47.                         } catch (Exception e) {// 捕获异常  
  48.                             e.printStackTrace();// 打印异常  
  49.                         }  
  50.                         if (place >= titleStr.length()) {  
  51.                             place = 1;  
  52.                             control = false;  
  53.                         } else {  
  54.                             place++;  
  55.                         }  
  56.                     } else {// 进去  
  57.                         myHandler.sendEmptyMessage(TEXT_IN);// 发送Handler消息  
  58.                         try {  
  59.                             Thread.sleep(200);// 睡觉300毫秒  
  60.                         } catch (Exception e) {// 捕获异常  
  61.                             e.printStackTrace();// 打印异常  
  62.                         }  
  63.                         if (place >= titleStr.length()) {  
  64.                             place = 1;  
  65.                             control = true;  
  66.                         } else {  
  67.                             place++;// 将place加一  
  68.                         }  
  69.                     }  
  70.                 }  
  71.             }  
  72.         }.start();  
  73.     }  
  74. }  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值