2

この質問は、このスレッドを拡張します特定の遅延時間後に ActionBar と NavigationBar を非表示にする方法は?

これは私のアプリケーションで機能します。しかし、それは一度だけ実行されます。ボタンが押されるまで実行し続けるようにするにはどうすればよいですか (戻るボタン)

ところで、これは、写真を表示するときの Android の Gmail アプリのような photoViewer アプリ (の一部) です。

Update1: 実際には、actionBar を再び show() および hide() するための touchListener があります。だから私が欲しいのは、imageViewレイアウトにいるとき、アクションバーが3000ミリ秒で消えてから、タップしてshow()、3000ミリ秒後に再び消えるはずです。繰り返しますが、Gmail の Android アプリと同じように、メールから画像を読み込む場合

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); // overlay mode
        setContentView(R.layout.fullscreen_image);

        ActionBar actionBar = getActionBar();               
        actionBar.setCustomView(R.layout.actionbar_top);
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);         


        // time delay to hide actionBar
        Handler h = new Handler();
        h.postDelayed(new Runnable() {
            @Override
            public void run() {
                // DO DELAYED STUFF
                getActionBar().hide();
                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
            }
        }, 3000); // e.g. 3000 milliseconds
....

    Button back = (Button)findViewById(R.id.btnBack);
    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();                
        }
    });
4

1 に答える 1

0

これを試して:

Button back = (Button)findViewById(R.id.btnBack);
    back.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        onBackPressed();
        if(getActionBar.isShowing())
        {
            hideActionBar();
        }
        else
        {
            getActionBar.show();
            hideActionBar();
        }
    }
});

public void hideActionBar()
{
    h.postDelayed(new Runnable() {
        @Override
        public void run() {
            // DO DELAYED STUFF
            getActionBar().hide();
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
            }
        }, 3000); // e.g. 3000 milliseconds
    }
}
于 2014-05-18T12:02:34.193 に答える