计时器使用另一个线程,所以它不会解决..
lnlaulya1#
有一种更简单的方法:使用View.postDelayed(可运行,延迟)
View view = yourView; view.postDelayed(new Runnable() { public void run() { view.setVisibility(View.GONE); } }, 3000);
它不是很精确:可以在3.5或3.2秒内隐藏,因为它发送到UI线程的消息队列中。使用post()或runOnUiThread()作为setTimeout()。
ukdjmx9f2#
生成一个单独的线程,休眠3秒,然后调用runOnUiThread隐藏视图。
runOnUiThread
Thread thread = new Thread() { @Override public void run() { try { Thread.sleep(3000); } catch (InterruptedException e) { } runOnUiThread(new Runnable() { @Override public void run() { // Do some stuff } }); } }; thread.start(); //start the thread
abithluo3#
无需引用视图或休眠线程:
new Handler().postDelayed(new Runnable() { @Override public void run() { // do stuff } }, 3000);
tyg4sfes4#
我知道这有点牵强,但如果您碰巧使用协程,这里有一个答案:
lifecycleScope.launch { delay(3000) header.visibility = View.GONE }
fae0ux8s5#
您可以显示视图,然后以这种方式将其隐藏。
View view = yourView; view.setVisibility(View.VISIBLE); new Handler().postDelayed(() -> view.setVisibility(View.GONE), 3000);
9udxz4iz6#
最新Kotlin代码:
YourView.visibility = View.VISIBLE // removing the banner after 3 sec YourView.postDelayed({ YourView.visibility = View.GONE },3000)
lyfkaqu17#
我陷入了这样的问题。所以,我听说了协程。他们可以在不干扰主线程的情况下完成这类任务。lifeCycleScope.启动{延迟(2000)绑定.图像视图.可见性=视图.消失}
7条答案
按热度按时间lnlaulya1#
有一种更简单的方法:使用View.postDelayed(可运行,延迟)
它不是很精确:可以在3.5或3.2秒内隐藏,因为它发送到UI线程的消息队列中。
使用post()或runOnUiThread()作为setTimeout()。
ukdjmx9f2#
生成一个单独的线程,休眠3秒,然后调用
runOnUiThread
隐藏视图。abithluo3#
无需引用视图或休眠线程:
tyg4sfes4#
我知道这有点牵强,但如果您碰巧使用协程,这里有一个答案:
fae0ux8s5#
您可以显示视图,然后以这种方式将其隐藏。
9udxz4iz6#
最新Kotlin代码:
lyfkaqu17#
我陷入了这样的问题。所以,我听说了协程。他们可以在不干扰主线程的情况下完成这类任务。
lifeCycleScope.启动{延迟(2000)绑定.图像视图.可见性=视图.消失}