0

嗨,在我的 android 应用程序中,我想隐藏用户交互的操作栏,并在用户停止交互一段时间后再次显示它。现在我已经有了隐藏操作栏的代码:

    mViewPager.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            getActionBar().hide();
            return false;
        }
    });

我只是在我的主视图中添加了一个 onTouchListener

但我不知道如何实现该getActionBar.show();方法。我如何确定用户是否没有进行交互,比如说 2 秒,从而实现getActionBar().show();

提前致谢...

编辑:

    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        SystemClock.sleep(3000);

        if (isCancelled()) {
            break;
        }
        return null;
    }

此代码给出错误。break can only be used inside loop or switch. 如何实现 onCancelled()

4

3 回答 3

1

最终,您必须跟踪用户交互。看看这篇文章: tracking-user-idle-time-within-the-app-in-android

通过使用此概念,您可以跟踪时间并优先保存。

现在剩余的逻辑仅用于在用户在某个时间间隔(假设 2 秒)内不活动时显示操作栏。

为此,您可以在您的内部创建一个定期Thread您的情况下,每 2 秒)通过调用方法检查上次用户交互时间。如果大于您想要的时间(2 秒)。然后使用方法显示操作栏。ActivitygetElapsed()getElapsed()getActionBar().show()

于 2013-10-25T13:18:21.583 回答
0

您可能正在寻找一种 FullScreenActivity 行为,例如 FullScreenActivity 模板中提供的行为。阅读更多相关信息:http: //developer.android.com/tools/projects/templates.html#full-screen-activity

有了这个,您将免费获得经过良好测试的代码,其行为:自动隐藏操作栏并在有交互时将其显示回来。

于 2013-10-25T13:09:07.223 回答
0

您可以设置一个 AsyncTask,在显示 ActionBar 之前在其中放置一个睡眠,如果用户触摸其他任何内容,则取消该任务。有关取消任务,请参见此处。我会在睡眠之后和显示 ActionBar 之前进行 isCancelled() 检查

编辑:我会为你的问题做的是

protected String doInBackground(String... params) {
    // TODO Auto-generated method stub
    SystemClock.sleep(3000);

    if (!isCancelled()) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                //Show the actionbar code here
            }
        });
    }
    return null;
}
于 2013-10-25T13:30:07.330 回答