0

アクティビティが開始されたときにアクションバーを非表示にし、ユーザーが画面に触れたときに数秒間表示してから、再び非表示にしたい。

私が思いついたのはすぐ下ですが、もっと良いことができるかどうか知りたいです(いくつかのスタイルの問題を無視します:マジックナンバー、ロジックの重複など)。

そして私はactionbarsherlockを使用しています。

ありがとう

ランナブル hideActionbarRunnable = new Runnable() {
        @オーバーライド
        public void run() {
            ActionBar バー = getSupportActionBar();
            bar.hide();
        }
    };

    ランナブル showActionbarRunnable = new Runnable() {
        @オーバーライド
        public void run() {
            ActionBar バー = getSupportActionBar();
            bar.show();
        }
    };

    ランナブル animateActionBarHide = new Runnable() {
        @オーバーライド
        public void run() {
            handler.postDelayed (hideActionbarRunnable,3000);
        }
    };

    ランナブル animateActionBarShow = new Runnable() {
        @オーバーライド
        public void run() {
            handler.post(showActionbarRunnable);
            handler.postDelayed (hideActionbarRunnable,3000);
        }
    };

    @オーバーライド
    保護されたボイド onResume() {
        super.onResume();
        Log.i(MainActivity.TAG,"CameraActivity: onResume が呼び出されました");

        スレッド t = 新しいスレッド (animateActionBarHide);
        t.start();
    }
 @オーバーライド
    public boolean onTouchEvent(MotionEvent イベント) {


        ActionBar バー = getSupportActionBar();
        if(event.getAction() == MotionEvent.ACTION_DOWN)
        {
            スレッド t = 新しいスレッド (animateActionBarShow);
            t.start();
        }
        そうしないと
        {
            スレッド t = 新しいスレッド (animateActionBarHide);
            t.start();
        }
        super.onTouchEvent(イベント)を返します。
    }

4

1 に答える 1

3

Handler クラスにはメソッドがありpostDelayed(Runnable r, long delayMillis)ます。これにより、はるかに短く、よりエレガントになります。

于 2013-05-31T21:22:46.193 に答える