0

我想在活动开始时隐藏操作栏,当用户触摸屏幕时显示几秒钟,然后再次隐藏。

我想出的就在下面,但我想知道我是否可以做得更好(忽略一些风格问题:幻数、逻辑重复等)。

我正在使用actionbarsherlock。

谢谢

可运行 hideActionbarRunnable = new Runnable() {
        @覆盖
        公共无效运行(){
            ActionBar bar = getSupportActionBar();
            bar.hide();
        }
    };

    可运行 showActionbarRunnable = new Runnable() {
        @覆盖
        公共无效运行(){
            ActionBar bar = getSupportActionBar();
            bar.show();
        }
    };

    Runnable animateActionBarHide = new Runnable() {
        @覆盖
        公共无效运行(){
            handler.postDelayed(hideActionbarRunnable,3000);
        }
    };

    Runnable animateActionBarShow = new Runnable() {
        @覆盖
        公共无效运行(){
            handler.post(showActionbarRunnable);
            handler.postDelayed(hideActionbarRunnable,3000);
        }
    };

    @覆盖
    受保护的无效 onResume() {
        超级.onResume();
        Log.i(MainActivity.TAG,"CameraActivity: onResume 调用");

        线程 t = new Thread(animateActionBarHide);
        t.start();
    }
 @覆盖
    公共布尔 onTouchEvent(MotionEvent 事件){


        ActionBar bar = getSupportActionBar();
        if(event.getAction() == MotionEvent.ACTION_DOWN)
        {
            线程 t = 新线程(animateActionBarShow);
            t.start();
        }
        别的
        {
            线程 t = new Thread(animateActionBarHide);
            t.start();
        }
        返回 super.onTouchEvent(event);
    }

4

1 回答 1

3

Handler 类有一个方法postDelayed(Runnable r, long delayMillis)。这将使它更短,更优雅。

于 2013-05-31T21:22:46.193 回答