Android 延时切换红绿灯 timer 具体怎么使用
时间: 2023-04-03 10:02:54 浏览: 82
您好,关于 Android 延时切换红绿灯 timer 的使用,您可以使用 Handler 类来实现。具体实现方式可以参考以下代码:
// 定义 Handler 对象
private Handler mHandler = new Handler();
// 定义 Runnable 对象
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
// 在此处实现红绿灯的切换逻辑
mHandler.postDelayed(this, 5000); // 5 秒后再次执行
}
};
// 在需要启动红绿灯的地方调用以下代码
mHandler.postDelayed(mRunnable, 5000); // 5 秒后执行
以上代码中,我们通过 Handler 类的 postDelayed() 方法来实现延时执行红绿灯切换的逻辑。其中,第一个参数为需要执行的 Runnable 对象,第二个参数为延时的时间,单位为毫秒。在 Runnable 对象中,我们可以实现具体的红绿灯切换逻辑,并在最后再次调用 postDelayed() 方法来实现循环执行的效果。
相关问题
C#用timer和draw编写红绿灯代码程序
以下是使用C#的Timer和Draw方法编写红绿灯代码程序的示例:
首先,创建一个Windows窗体应用程序,并添加一个PictureBox控件到窗体上。
在窗体代码中,添加一个Timer控件和以下代码:
```csharp
private int lightState = 0; // 0表示红灯,1表示绿灯
private Timer timer;
public Form1()
{
InitializeComponent();
timer = new Timer();
timer.Interval = 2000; // 每2秒切换一次红绿灯
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
lightState = 1 - lightState; // 切换红绿灯状态
pictureBox1.Refresh(); // 刷新PictureBox控件
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
if (lightState == 0)
{
// 绘制红灯
g.FillEllipse(Brushes.Red, 10, 10, 80, 80);
g.FillEllipse(Brushes.Gray, 10, 100, 80, 80);
g.FillEllipse(Brushes.Gray, 10, 190, 80, 80);
}
else
{
// 绘制绿灯
g.FillEllipse(Brushes.Gray, 10, 10, 80, 80);
g.FillEllipse(Brushes.Gray, 10, 100, 80, 80);
g.FillEllipse(Brushes.Green, 10, 190, 80, 80);
}
}
```
在上述代码中,我们使用了一个变量lightState来表示当前红绿灯的状态。在定时器的Tick事件中,我们切换lightState的值,并调用pictureBox1的Refresh方法来刷新PictureBox控件。在PictureBox的Paint事件中,我们根据lightState的值来绘制红绿灯。
运行程序,你会看到红绿灯每隔2秒交替显示。
android Timer 定时器的使用
在 Android 开发中,可以使用 `Timer` 类来实现定时器的功能。下面是一个简单的例子:
```java
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// 在此处编写定时任务的逻辑代码
}
}, 0, 1000); // 参数2表示延迟多少毫秒后开始执行,参数3表示每隔多少毫秒执行一次
```
上述代码中,使用 `new Timer()` 创建了一个定时器对象,然后使用 `schedule()` 方法设置了一个定时任务,它会在延迟 0 毫秒后开始执行,并且每隔 1000 毫秒执行一次。在 `run()` 方法中编写实际的定时任务逻辑代码即可。
需要注意的是,如果需要在定时任务中更新 UI,需要使用 `runOnUiThread()` 在 UI 线程中更新 UI,否则会抛出异常。例如:
```java
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 在此处编写更新 UI 的逻辑代码
}
});
}
}, 0, 1000);
```