1

我已经实现了一个自定义视图。这个视图非常简单,只有 2 个状态(有边框和无边框),它们通过 ontouch 事件切换(按下时有边框,按下时没有边框)。

这是没有问题的。当我想向用户显示序列时会出现问题(因此,禁用触摸事件并手动设置视图状态更改)。

我的布局中有 4 个该类型的视图,我想要的只是切换这些视图的状态,以便对用户可见。

MyView v1 = (MyView)findViewById(...)
MyView v2 = (MyView)findViewById(...)
MyView v3 = (MyView)findViewById(...)
MyView v4 = (MyView)findViewById(...)

v1.switchMode()
v2.switchMode()
v3.switchMode()
v4.switchMode()

此开关应保持一段时间(1 秒)对用户可见。模式是通过一个布尔变量实现的。我的实现如下:

public void switchMode()
  this.mode = false;
  this.invalidate();
  try {
Thread.sleep(1000);
  } catch (InterruptedException e) {
e.printStackTrace();
  }
  this.mode = true;
  this.invalidate();
}

看来我的睡眠是全线程睡眠,所以我的视图没有重绘,我保持4秒没有任何响应并改变视图。

关于如何实现这个简单的状态切换的任何线索?

先感谢您

4

1 回答 1

1

我找到了解决这个问题的好方法。CountDownTimer 按我的意愿行事:它提供了一个接口来为任意操作设置计时器,以及一个刻度控制器来在该操作中引入一些可变性(就我而言,我可以一直设置 2 个刻度,以在所需时间内更改模式)。

于 2012-04-06T10:23:16.287 回答