单击按钮10秒后如何使imageView可见?

时间:2015-04-08 16:20:36

标签: android imageview android-imageview

我需要在我的buttonclick操作10秒后看到我的imageview。我让我的imageview不可见。但是当我尝试在线程睡眠(10000)后将其设置为可见时,我的应用程序崩溃了。我该如何解决这个问题?请帮忙!

3 个答案:

答案 0 :(得分:2)

这个很短,不会阻止应用程序:

yourButton.setOnClickListener(new View.OnClickListener(){ 
    @Override
    public void onClick(View v) {
        yourImageView.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (yourImageView != null) {
                    yourImageView.setVisibility(View.VISIBLE);
                }
            }
        }, 10000);
    }         
});

某些上下文:postDelayed向主线程发布消息,该消息将在10000毫秒内执行,即10秒。当10秒过去时,主线程将接收消息,并尝试执行runnable。该按钮可能不再存在,因为您离开了屏幕,这就是为什么需要进行空检查。

答案 1 :(得分:0)

我认为你在主线程上做了Thread.sleep(),这不是一个正确的方法。

相反,您可以使用AsyncTask或Handler来延迟某些代码的执行。

button.setOnClickListener(new Button.OnClickListener(){ 
    @Override
    public void onClick(View v) {
        new AsyncTask<Void, Void, Void>() {

            @Override
            protected Void doInBackground(Void... params) {
                Thread.sleep(10000);
                return null;
            }

            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
                yourView.setVisibility(VISIBLE);
            }
        }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    }         
});    

答案 2 :(得分:0)

你不能阻止你的主线程不超过5秒,以及你的线程也是如此。而不是使用线程然后让睡眠,更好的用户Timer。

class MyTimerTask extends TimerTask {

    @Override
    public void run() {

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                Intent intent = new Intent(SplashScreen.this,
                        MainActivity.class);
                startActivity(intent);

                finish();

            }
        });
    }

}

了解更多内容请阅读here