2016-04-16 16 views
0

ビューアにタブが付いているAndroidアプリケーションで作業しています。ビューページとツールバーが十分なスペースを占めるため、アプリがうまく見えません小さな携帯電話のように私は自動的にスクリーンスペースを保存するために画面から私のツールバーをアニメーション化することを考えていた3sの時間からユーザーがアプリを開いたり画面に触れたときにツールバーは、私は、Handlerを使用しているので、私はプログラムを処理する傾向があります。Handler私はremoveCallbacksAndMessages(null) and removeCallbacks(hideToolBar)メソッドを使用してみましたが、すべてのランナブルをハンドラから削除しますが、それでもすべてを処理します。ユーザーは3sの前または後に複数回前に画面にタッチしますツールバーを非表示にしてはいけませんが、非表示にして非表示にするなど、以下は私のコードです。Androidで特定の時間が経過した後にアニメーションを表示する

private void showToolBar() 
{ 
    if (toolbarHidden) { 
     toolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator()).start(); 
     toolbarHidden = false; 
    } 
} 

    private void hideToolBar() 
{ 

    hideRevealHandler = new Handler(); 
    hideToolBar = new Runnable() { 
     @Override 
     public void run() { 

       if (!toolbarHidden) { 
        toolbar.animate().translationY(-toolbar.getBottom()).setInterpolator(new AccelerateInterpolator()).start(); 
        toolbarHide = true; 
       } 

     } 
    }; 
    hideRevealHandler.postDelayed(hideToolBar, 3000); 

} 

が次にツールバーが非表示になった場合は、その明らかになるようにしても、画面上の任意のをキャプチャするためにdispatchTouchEvent(MotionEvent)をオーバーライドしています隠された場合にはツールバーを明らかにし

方法。

@Override 
public boolean dispatchTouchEvent(MotionEvent me) { 
    //Call onTouchEvent of SimpleGestureFilter class 
    if(!toolbarHideCommand) { 
     toolbarHideCommand = true; 
     try { 
      hideRevealHandler.removeCallbacks(hideToolBar); 
     } catch (NullPointerException w) { 
      w.printStackTrace(); 
     } 

    } 
    else 
     toolbarHideCommand = false; 


    showToolBar(); 
    hideToolBar(); 
    return super.dispatchTouchEvent(me); 
} 

答えて

0

これを試してください。

@Override 
public boolean dispatchTouchEvent(MotionEvent me) { 
//Call onTouchEvent of SimpleGestureFilter class 
if(!toolbarHideCommand) { 
    toolbarHideCommand = true; 
    try { 
     hideRevealHandler.removeCallbacks(hideToolBar); 
    } catch (NullPointerException w) { 
     w.printStackTrace(); 
    } 

} 
else 
    toolbarHideCommand = false; 


    showToolBar(); 
    // change in code is here. Now it will process only new one. 
    try { 
    hideRevealHandler.removeCallbacksAndMessages(null); 
    } catch (Exception w) { 
    w.printStackTrace(); 
    } 
    hideToolBar(); 
    return super.dispatchTouchEvent(me); 
} 
+0

感謝します。 – Chrometobia

関連する問題