我正在制作一个15拼图(http://en.wikipedia.org/wiki/Fifteen_puzzle)游戏,我有一个活动供用户选择背景图像,然后我将该图像传递给新活动为了缩放和裁剪它。
现在我想首先向用户展示解决方案3秒,然后它会随机播放,我正在使用这样的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//...skip the code that gets the image and scales it
start();
}
然后在我的开始()函数中:
public void start() {
//the createPuzzle function would create all the Views(tiles)
//and add them to the root LinearLayout using addView() function
createPuzzle(game.getBoardConfig(), dimension);
//i was trying to sleep here
shuffle();
}
我用过:
try {
Thread.sleep(3000);
} catch (InterruptedException e) {}
或:
SystemClock.sleep(3000);
但它们都没有正常工作,他们在我选择图像后立即暂停了线程,当它暂停时我看不到新活动和我创建的图块。当线程恢复时,它已经显示出混乱的拼图。
我一直在查看文档很长一段时间,但仍无法弄清楚我的代码有什么问题,感谢您的帮助!
答案 0 :(得分:7)
不要让UI线程休眠,因为这会锁定整个UI线程,这是禁忌。相反,使用Handler发布延迟的runnable ......比如
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
shuffle();
}
}, 3000);