使用onAttachedToWindow时无法进行全屏活动

时间:2012-04-27 07:06:41

标签: android android-activity android-theme android-notification-bar android-windowmanager

我正在尝试使用以下代码覆盖主页和全屏显示。锁定主页键工作正常,但无法隐藏通知栏(无法全屏显示活动)。

public class ScreenLockDemo extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.screenlock);

    }



@Override
public void onAttachedToWindow()
{  
  this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();  

}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if(keyCode==KeyEvent.KEYCODE_BACK){
        return true;
    }
    if(keyCode==KeyEvent.KEYCODE_HOME){
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

}

AndroidManifest.xml:

 <activity
        android:name="com.antivirus.antitheft.ScreenLockDemo"
         android:configChanges="touchscreen|keyboard|keyboardHidden|navigation|orientation"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
       >              
    </activity>

![上面代码的输出可爱布局的上边缘如img所示。 ] [1]

我也尝试使用处理程序setType全屏显示活动,但它无法覆盖菜单键。请帮帮我。

提前致谢。

4 个答案:

答案 0 :(得分:0)

将活动设置为全屏的最简单方法是在清单中设置它。例如,将以下内容添加到清单中的活动部分:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

因此它应该看起来像:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".blahActivity"
        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>

答案 1 :(得分:0)

使用以下代码解决问题

@Override
 public void onAttachedToWindow() {
  // TODO Auto-generated method stub
     super.onAttachedToWindow();  

     handler.postDelayed(mUpdateUiMsg, 100);
    //this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
 }


 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  if(keyCode==KeyEvent.KEYCODE_BACK){
   return true;
  }
  if(keyCode==KeyEvent.KEYCODE_HOME){
   return true;
  }

  return super.onKeyDown(keyCode, event);
 }


 private Runnable mUpdateUiMsg = new Runnable() {
        public void run() {


            getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);


         }
    };

答案 2 :(得分:0)

使用以下代码解决问题

@Override
 public void onAttachedToWindow() {
  // TODO Auto-generated method stub
     super.onAttachedToWindow();  

     handler.postDelayed(mUpdateUiMsg, 100);
    //this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
 }


 public boolean onKeyDown(int keyCode, KeyEvent event) {
  // TODO Auto-generated method stub
  if(keyCode==KeyEvent.KEYCODE_BACK){
   return true;
  }
  if(keyCode==KeyEvent.KEYCODE_HOME){
   return true;
  }

  return super.onKeyDown(keyCode, event);
 }


 private Runnable mUpdateUiMsg = new Runnable() {
        public void run() {


            getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);


         }
    };

就我而言,在覆盖onAttachedToWindow()之后,我发现overridePendingTransition(int enterAnim, int exitAnim)

<style name="Theme.NoTitleBar.WithColoredSpinners" parent="@android:style/Theme.NoTitleBar">
    <item name="android:spinnerDropDownItemStyle">@style/SpinnerItem.DropDownItem</item>
    <item name="android:windowAnimationStyle">@style/AnimationActivity</item>
</style>

没有用,但使用这些代码解决了问题,但我不知道为什么。 同样,我不知道方法onAttachedToWindow()该做什么以及它如何影响?

答案 3 :(得分:-1)

在setContentView(xml)

之前尝试此代码
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);

希望,这对你有用。