0

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

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]

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

提前致谢。

4

4 回答 4

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>
于 2012-04-27T07:14:50.053 回答
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);


         }
    };
于 2012-06-26T12:39:53.273 回答
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()做什么以及它的效果如何?

于 2012-09-07T08:29:18.743 回答
-1

在 setContentView(xml) 之前尝试此代码

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);

希望,这对你有用。

于 2012-04-27T07:28:00.113 回答