隐藏actionBar时循环延迟时间

时间:2013-11-07 08:29:53

标签: android handler

此问题扩展了此帖子How to hide ActionBar and NavigationBar after a certain delay time?

这适用于我的应用程序。但它只运行一次。如何让它继续执行直到按下按钮(后退按钮)

顺便说一下,当你查看照片时,这是一个photoViewer应用程序(部分),就像Android上的Gmail应用程序一样。

Update1:​​我实际上有一个touchListener来显示()并再次隐藏()动作栏。所以我想要的是当我处于imageView布局时,actionBar将在3000ms内消失,然后我点击show(),然后在3000ms后它将再次消失。再次,就像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();                
        }
    });

1 个答案:

答案 0 :(得分: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
    }
}