I tried with threads, but android throws "CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.".
So how can I wait 3 seconds and then hide the view, letting the GUI responsive?
--
A Timer uses another thread either, so it will not solve..
There is an easier way to do it: use View.postDelayed(runnable, delay)
View view = yourView; view.postDelayed(new Runnable() {         public void run() {             view.setVisibility(View.GONE);         }     }, 3000); It's not very precise: may be hidden in 3.5 or 3.2 seconds, because it posts into the ui thread's message queue.
Use post() or runOnUiThread() just something as setTimeout().
Spawn a separate thread that sleeps for 3 seconds then call runOnUiThread to hide the view.
    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
Without the need to have a reference to a view or sleep a thread:
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            // do stuff
        }
    }, 3000);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With