我正在尝试使用以下代码覆盖主页和全屏显示。锁定主页键工作正常,但无法隐藏通知栏(无法全屏显示活动)。
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全屏显示活动,但它无法覆盖菜单键。请帮帮我。
提前致谢。
答案 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);
希望,这对你有用。