Не можете скрыть строку состояния? - PullRequest
0 голосов
/ 18 июля 2011

Я хочу скрыть строку состояния в Android 3.1. Когда пользователь касается экрана, строка состояния будет видна и через 2 секунды будет скрыта автоматически.

Вот мой код:

private static ViewFlipper flipper = null;
private static ImageView ivScreenSnapshot = null;

public static AbsoluteLayout managerField = null;

public void onCreate(Bundle savedInstanceState) 
{

    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    managerField = new AbsoluteLayout(this);

    flipper = new ViewFlipper(this)
    {  
        @Override
        public boolean onTouchEvent(MotionEvent event) 
        {
            flipper.setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
            Thread t = new Thread()
            {
                public void run()
                {
                    try {
                        sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    Global.handler.post(new Runnable()
                    {
                        public void run()
                        {
                            flipper.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
                        }
                    });
                }
            };
            t.start();
            return super.onTouchEvent(event);
        }
    };
    ivScreenSnapshot = new ImageView(this);
    flipper.addView(managerField);
    flipper.addView(ivScreenSnapshot);
    setContentView(flipper);
    flipper.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
}

Это не работает, строка состояния всегда видна. Любое предложение? Спасибо!

Ответы [ 2 ]

3 голосов
/ 18 июля 2011

Я попробовал код, и он работал отлично.Просто для тестирования я вызвал поток в onCreate () и отправил сообщение обработчику, чтобы скрыть строку состояния.Ниже приведен пример кода.Вы можете использовать его по своему усмотрению.

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test);

    Thread background = new Thread (new Runnable() 
    {
       public void run() 
        {
            try
            {
                Thread.sleep(4000);
                progressHandler.sendMessage(progressHandler.obtainMessage());

            } 
            catch (InterruptedException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
       }
    });

    // start the background thread
    background.start();
}

// handler for the background updating
Handler progressHandler = new Handler() 
{
    public void handleMessage(Message msg) 
    {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    }
};

Что ж, использование Thread внутри onCreate () не является необходимым.Вы можете сделать это без Нити.Просто вызвав Thread.Sleep () и отправив сообщение обработчику.Я надеюсь, что вы можете судить о разнице в обоих.

Приветствия.

3 голосов
/ 18 июля 2011

попробуйте этот код

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="de.vogella.android.temperature"
  android:versionCode="1"
  android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Convert"
              android:label="@string/app_name"
               android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...