使用定时器timer实现按钮闪烁的效果

直接晒代码吧:
private count  = 0;
private change = false;

import java.util.Timer;
import java.util.TimerTask;

//animation flash effect
private void forwardbtnAnimation(){
        count  = 0;
        change = false;
        timer = new Timer();
        task = new TimerTask() {
            public void run() {
                runOnUiThread(new Runnable() {
                    public void run() {
                        if (count < 10) {  //闪烁5次
                            if (change == true) {
                                change = false;
                                forwardbtn.setVisibility(View.VISIBLE);
                            } else {
                                change = true;
                                forwardbtn.setVisibility(View.INVISIBLE);
                            }
                            count++;
                        }
                    }
                });
            }
        };
        timer.schedule(task,0,100); //0表示立即开始,100为每100ms执行一次
    }


提示:android控件的都是线程不安全的,因此更新控件必须得放在Runnable()中。
参考:http://blog.csdn.net/mingxunzh/archive/2010/04/17/5497987.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是用 VB 编写的可以让窗口上一个按钮以固定频率闪烁绿色的代码: ```vb Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Private Const ID_TIMER As Long = 1 Private Const INTERVAL_MS As Long = 500 ' 闪烁间隔,单位为毫秒 Private WithEvents btnBlink As CommandButton Private blinking As Boolean Private Sub Form_Load() Set btnBlink = Command1 ' 将 Command1 按钮赋值给 btnBlink 对象 blinking = False ' 初始状态为不闪烁 End Sub Private Sub btnBlink_Click() If Not blinking Then ' 如果按钮没有在闪烁 SetTimer Me.hwnd, ID_TIMER, INTERVAL_MS, 0 ' 开始闪烁 blinking = True Else ' 如果按钮正在闪烁 KillTimer Me.hwnd, ID_TIMER ' 停止闪烁 btnBlink.BackColor = vbButtonFace ' 恢复按钮原来的颜色 blinking = False End If End Sub Private Sub Form_Unload(Cancel As Integer) KillTimer Me.hwnd, ID_TIMER ' 关闭定时器 End Sub Private Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long) If btnBlink.BackColor = vbGreen Then ' 如果按钮是绿色 btnBlink.BackColor = vbButtonFace ' 将按钮颜色恢复为原来的颜色 Else ' 如果按钮是原来的颜色 btnBlink.BackColor = vbGreen ' 将按钮颜色设置为绿色 End If End Sub ``` 该代码定义了一个名为 `btnBlink` 的按钮对象,当该按钮被单击时,将会开始或停止按钮闪烁闪烁的间隔可以通过 `INTERVAL_MS` 常量来设置,单位为毫秒。在闪烁的过程中,该按钮的背景颜色会在绿色和原来的颜色之间交替变换。闪烁实现是通过一个 Windows 定时器实现的,每次定时器触发时,将会调用名为 `TimerProc` 的事件处理程序来更新按钮的背景颜色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值