2011-07-18 17 views
0

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); 
} 

それは働いていない、ステータスバーが常に表示されます。 提案がありますか?ありがとう!

答えて

3

は、私は、コードを試してみました、それは完全に働いたこのコード

<?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> 
3

を試してみてください。テストのために、私は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); 
    } 
}; 

まあ、onCreate()内のスレッドを使用する必要はありません。あなたはスレッドなしでそれを行うことができます。 Thread.Sleep()を呼び出してHandlerにメッセージを送信するだけです。私はあなたが両方の違いを判断できることを願っています。

乾杯。

+0

ありがとうございます。 manfestファイルにandroid:minSdkVersion = 8と宣言しているため、コードが機能しません。 今、アンドロイド:minSdkVersion = 12を編集しても問題ありません。 – Levanphong7887

関連する問題