延时显示文本,不想延时的也延时了

我设置了一个按钮(显示)和两个文本(不显示),设计是这样的:
按下按钮,按钮消失,先显示文本1,延时2秒之后显示文本2
代码如下:
public void Btn1_Click(View view)
{
Btn1.setVisibility(View.GONE);
//textView1.setVisibility(View.VISIBLE);

try {
textView1.setVisibility(View.VISIBLE);
Thread.sleep(2000);
textView2.setVisibility(View.VISIBLE);

}catch(InterruptedException e)
{
;
}

}

按钮是可以立刻消失的。然而无论怎样设置,显示文本1的那行在try里还是外面,两个文本都是在两秒之后同时显示。

有没有高手知道怎么回事的
2017-03-28 01:05 添加评论 分享
已邀请:

最佳回复

1

SimplySu - 90 IT SimplySu

赞同来自: ask

Thread.sleep(2000);
写在主线程,会让UI显示停滞,这样的写法会阻塞主线程显示UI。
例如下面的写法,使用view的postDelayed发送handler显示:

textView1.setVisibility(View.VISIBLE);

     // post Delayed
    textView2.postDelayed(new Runnable()
    {
        @Override
        public void run()
        {
            textView2.setVisibility(View.VISIBLE);
        }
    }, 2000);
0

达令张 - 90后it男

赞同来自:

楼上是对的
延迟发消息显示就可以了,干嘛在主线程sleep,关于ui的都要在主线程中,但是耗时操作最好放在子线程中

要回复问题请先登录注册

退出全屏模式 全屏模式 回复