【发布时间】:2017-05-14 19:38:50
【问题描述】:
标题说明了一切。我想看到一个随机可见性和不可见性的无限循环。我就是这样处理它的:-
首先我创建了两个方法来获取随机时间getRandomWaitTime() 和getRandomDisplayTime()。这些方法都经过了很好的定义和测试(在 Log 中),并且可以按预期工作。这两种方法都以毫秒为单位返回一个随机值 int
getRandomWaitTime() : 3000-6000
getRandomDisplayTime() : 3000-5000
现在我创建了一个 ImageView 水果 [0],最初将其设置为不可见,然后执行以下代码:
fruit[0].postDelayed(new Runnable() {
@Override
public void run() {
fruit[0].setVisibility(View.VISIBLE);
fruit[0].postDelayed(new Runnable() {
@Override
public void run() {
fruit[0].setVisibility(View.INVISIBLE);
}
}, getRandomDisplayTime());
fruit[0].postDelayed(this, getRandomWaitTime());
}
}, getRandomWaitTime());
代码也编译、执行,ImageView 经历了可见性和不可见性的无限循环但设置为可见或不可见的时间似乎没有最小值 3000 毫秒有时感觉它在 500 毫秒内可见,然后就消失了。我尝试了很多方法,例如使用 Handler.postDelayed 而不是 View.postDelayed 但这似乎不起作用。
当我从 postDelayed 方法中删除所有 getRandomWaitTime() 和 getRandomDisplayTime() 方法并用 3000 之类的常量替换时,会发生有趣的事情。
活动开始。首先fruit[0] 设置为不可见。 3000 毫秒后,它会出现并停留在那里。之后什么也没有发生。不再切换到隐形。我只是呆在那里。
那么所有这些巫术问题的可能原因是什么?
【问题讨论】:
-
fruit[0]是View的一种类型,对吧? -
是的。这是一个 ImageView
-
好的,看看我的答案,它在一个按钮上进行了测试。
标签: android handler visibility