2015-06-02 94 views
2

我爲我的Android應用程序使用AppCompat ActionBar(Theme.AppCompat.Light.DarkActionBar)。淡入/淡出Android ActionBar

啓動應用後,在ActionBar 6秒(onCreate方法)之後淡出:

h.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     getSupportActionBar().hide(); 
    } 
}, 6000); 

所以,我怎樣才能淡入在ActionBar帶有觸摸手勢從屏幕的頂部到中間...並在10秒後再次淡出?

enter image description here

我認爲問題是,該動作條沒有OnTouchListener。

+2

您可以在'Activity'上使用'onTouchEvent()'。 –

回答

1

嘗試類似這樣的事情。 要在課堂上使用該手勢:

private GestureDetectorCompat gestureDetectorCompat; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    gestureDetectorCompat = new GestureDetectorCompat(this, new MyGestureListener()); 

    //Stuff in onCreate() 

} 



@Override 
public boolean onTouchEvent(MotionEvent event) { 
    this.gestureDetectorCompat.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 
class MyGestureListener extends GestureDetector.SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { 

     //Swipe from the top to the bottom 
     if(event2.getY() > event1.getY()){ 

      getSupportActionBar().show(); 

      h.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        getSupportActionBar().hide(); 
       } 
      }, 6000); 

     } 
     return true; 
    } 
} 
+0

有沒有一種方法來檢查,如果操作欄的下拉菜單是opend?我想中止淡出,如果下拉菜單打開 – Maddy

+1

@Maddy嘗試使用布爾變量:當你打開下拉菜單設置爲true,當你關閉它將其設置爲false,並添加一個條件到'getSupportActionBar( ).hide()'以避免在變量爲true時執行它。 – Ruocco

+0

但我如何檢測,下拉菜單是否打開? – Maddy