利用PostDelay实现的简单好用的timer类(android)

本文介绍了一个基于Android的自定义Timer类实现方式,该类利用Handler和Runnable实现周期性的任务调度。通过设置间隔时间和回调方法,可以轻松实现如文本视图闪烁等效果。

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

利用PostDelay实现的Timer类,代码如下:
import android.os.Handler;

public class Timer { 
  private int _interval; 
  public int getInterval() { return _interval; } 
  public void setInterval(int delay) { _interval = delay; } 
  private Handler handler; 
  private Runnable _tickHandler; 
  private Runnable delegate; 
  private boolean ticking; 
  public boolean getIsTicking(){ return ticking; } 
  
  public Timer(int interval) 
  { 
    _interval = interval; 
    handler = new Handler(); 
  } 
  
  public Timer(int interval, Runnable onTickHandler) 
  { 
    _interval = interval; 
    setOnTickHandler(onTickHandler); 
    handler = new Handler(); 
  } 
  
  public void start(int interval, Runnable onTickHandler) 
  { 
    if (ticking) return; 
    _interval = interval; 
    setOnTickHandler(onTickHandler); 
    handler.postDelayed(delegate, _interval); 
    ticking = true; 
  } 
  
  public void start() 
  { 
    if (ticking) return; 
    handler.postDelayed(delegate, _interval); 
    ticking = true; 
  } 
  
  public void stop() 
  { 
    handler.removeCallbacks(delegate); 
    ticking = false; 
  } 
  
  public void setOnTickHandler(Runnable onTickHandler) 
  { 
    if (onTickHandler == null) 
      return; 
    
    _tickHandler = onTickHandler; 
    
    delegate = new Runnable() { 
      public void run() 
      { 
        if (_tickHandler == null) return; 
        _tickHandler.run(); 
        handler.postDelayed(delegate, _interval); 
      } 
    }; 
  } 
}
用法如下:
boolean blinkOn = false; 
  Timer tmrBlink = new Timer(500, new Runnable() { 

    public void run() { 
      if (blinkOn) 
      { 
        ((TextView) findViewById(R.id.widget46)).setVisibility(View.VISIBLE); 
      } 
      else 
      { 
        ((TextView) findViewById(R.id.widget46)).setVisibility(View.INVISIBLE); 
      } 
      blinkOn = !blinkOn; 
    } 
    
  });
  
  tmrBlink.start();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值