Android:在定义的时间后使视图消失的最佳方式

时间:2013-11-23 17:56:45

标签: android android-layout android-asynctask android-animation textview

我希望在更改文本后定义一段时间后,textView会消失。

我不确定最好的方法是什么。

使用Thread.sleep(2000);的问题在于它显然会使整个UI线程处于睡眠状态。在Thread.sleep(2000);中使用AsyncTask似乎是错误的。此外,如果用户离开需要由AsyncTask更新的活动,则会导致问题。

必须有一种更清洁的方式来实现它。如果你知道的话:随意回答: - )

4 个答案:

答案 0 :(得分:3)

您无需创建处理程序:

view.postDelayed(new Runnable(){
  @Override
  public void run()
  {
    view.setVisibility(View.GONE);
  }
}, 10000);

答案 1 :(得分:1)

您可以使用Runnable

Handler myHandler = new Handler();
Runnable myRunnable = new Runnable() {
    @Override
    public void run() {
        //Hide your view
    }
};

然后在更改文本后,添加以下内容:

myHandler.postDelayed(myRunnable, TIME_IN_MILLISECONDS);

希望它有所帮助。

答案 2 :(得分:1)

你能做这样的事吗?

在您的活动中,创建一个处理程序:

Handler handler = new Handler()
{
  @Override
  public void handleMessage (Message msg)
  {
    if (msg.what == HIDE_VIEW)
      hideView();  // defined elsewhere in your activitry
  }
}

在您想要启动计时器时,请执行以下操作:

postDelayed (new Runnable()
{
  @Override
  public void run()
  {
    Message msg = handler.obtainMessage();
    msg.what = HIDE_VIEW;
    msg.obj = null;
    handler.sendMessage (msg);
  }
}, 10000);

不确定您是否需要此级别的异步性。

答案 3 :(得分:0)

对于对问题的错误解释感到抱歉,

使用 textView .setVisibility(View.INVISIBLE)

在处理程序中