0

这个问题扩展了这个线程How to hide ActionBar and NavigationBar after a certain delay time?

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

顺便说一句,当您查看照片时,这是一个 photoViewer 应用程序(部分),例如 Android 上的 Gmail 应用程序。

Update1:​​我实际上有一个 touchListener 来再次显示()和隐藏()动作条。所以我想要的是当我在 imageView 布局中时,actionBar 将在 3000 毫秒内消失,然后我点击显示(),然后在 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

2 回答 2

0

我认为您应该将计时器线程的创建移到您的 onClick() 中,以便每次单击时都会启动一个新计时器。

于 2013-11-07T20:06:23.257 回答
0

将您的计时器放在 OnCreate 中可确保它运行一次且仅运行一次。如果您希望它在每次用户旋转屏幕、暂停或其他任何位置时运行,请将其放入 onResume。但是,正如 popovitsj 所建议的那样,安装 onClick 可能是您想要的

于 2013-11-07T20:16:03.730 回答