触摸布局时,按钮不会再次消失

时间:2014-05-19 12:45:25

标签: android android-layout timer

        final Thread timer = new Thread(){
            public void run (){
                try{
                    //sleep
                    sleep (2000);
                }catch(InterruptedException e){
                    e.printStackTrace();
                }finally{
                    nav2.setAnimation(alpha2);
                    nav2.setVisibility(View.INVISIBLE);
                }
            }
        };
        timer.start(); 

        nav1.setOnClickListener(new LinearLayout.OnClickListener(){

             @Override
             public void onClick(View arg0) {
                 nav2.setVisibility(View.VISIBLE);
                 nav2.setAnimation(inleft);
                 timer.start();

}});

我有一个代码会让按钮或linearlayout在定时器中2秒后消失,问题是它在最终执行后崩溃了。另外一个按钮(nav1)是整个线性布局,所以一旦触摸,nav2或按钮就会出现,定时器将再次重置

2 个答案:

答案 0 :(得分:1)

通常,您无法从后台线程触摸UI小部件。

对于您的用例,请考虑UI线程上的HandlerRunnable发布的postDelayed()

答案 1 :(得分:0)

尝试这个而不是线程,

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    nav2.setAnimation(alpha2);
                    nav2.setVisibility(View.INVISIBLE);
                } catch (Throwable e) {
                    e.printStackTrace();
                }
            }
        }, 2000);