我已经实现了自定义视图。这个视图非常简单,只有2个状态(有边框和没有边框),并且它们会在ontouch事件中切换(按下时有边框,没有按下时)。
这没有问题。当我想向用户显示序列时(因此,禁用touchevents,并手动设置视图状态的更改),就会出现问题。
我的布局中有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秒没有任何响应并在视图上更改。
关于如何实现这种简单状态切换的任何线索?
提前谢谢
答案 0 :(得分:1)
我找到了解决这个问题的好方法。 CountDownTimer按我的意愿行事:它提供了一个界面来设置任意动作的计时器,并提供一个滴答控制器来引入该动作的一些可变性(对于我的情况,我可以设置2次刻度,以便在所需时间内更改模式) )。