2013-05-31 3 views
0

Я хочу скрыть панель действий при запуске действия и когда пользователь коснется экрана, покажет его на несколько секунд, а затем снова спрячет его.Задержка скрыть и показать ActionBar?

То, что я придумал, находится чуть ниже, но я хочу знать, есть ли что-нибудь лучшее, что я мог бы сделать (игнорируя некоторые проблемы стиля: магические числа, дублирование логики и т. Д.).

И я использую actionbarsherlock.

Благодаря

 

Runnable hideActionbarRunnable = new Runnable() { 
     @Override 
     public void run() { 
      ActionBar bar = getSupportActionBar(); 
      bar.hide(); 
     } 
    }; 

    Runnable showActionbarRunnable = new Runnable() { 
     @Override 
     public void run() { 
      ActionBar bar = getSupportActionBar(); 
      bar.show(); 
     } 
    }; 

    Runnable animateActionBarHide = new Runnable() { 
     @Override 
     public void run() { 
      handler.postDelayed(hideActionbarRunnable,3000); 
     } 
    }; 

    Runnable animateActionBarShow = new Runnable() { 
     @Override 
     public void run() { 
      handler.post(showActionbarRunnable); 
      handler.postDelayed(hideActionbarRunnable,3000); 
     } 
    }; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     Log.i(MainActivity.TAG,"CameraActivity: onResume called"); 

     Thread t = new Thread(animateActionBarHide); 
     t.start(); 
    } 
@Override 
    public boolean onTouchEvent(MotionEvent event) { 


     ActionBar bar = getSupportActionBar(); 
     if(event.getAction() == MotionEvent.ACTION_DOWN) 
     { 
      Thread t = new Thread(animateActionBarShow); 
      t.start(); 
     } 
     else 
     { 
      Thread t = new Thread(animateActionBarHide); 
      t.start(); 
     } 
     return super.onTouchEvent(event); 
    } 

ответ

3

Обработчик класс имеет метод postDelayed(Runnable r, long delayMillis). Это сделает его намного короче и намного элегантнее.

+0

awesome.thanks. полностью забыл об этом методе. – cbrulak

Смежные вопросы