1.保持屏幕常亮
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
2.横竖屏配置
AndroidManifest.xml文件中的配置
android:screenOrientation,属性取值landscape为固定横屏、portrait为固定纵屏幕。
代码:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE););//强制为横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖屏
延伸
屏幕会自动切换时,默认状态的应用程序,会重新调用onCreate,相当于重新启动了一次应用程序。同时,layout可能因为横屏带来不能合理适 配的问题。为了解决旋屏和键盘切换引起的程序重启问题,还需要增加一个属性:android:configChanges。这个属性可以理解为一个监听 器,它将拦截旋屏和键盘切换事件,阻止程序重启而变为回调onConfigurationChanged方法。这里常用的属性取值 为:keyboardHidden|orientation。
3.全屏配置
一、通过代码
在setContentView之前执行
requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//隐藏状态栏
这种方式会看到标题栏和状态栏一闪而过
二、调用Android自带的Theme
直接在AndroidManifest.xml中需要全屏显示的Activity属性中添加
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
三、自己定义全屏Theme
在style.xml文件中定义theme(如果没有style.xml,在res/values目录下创建)
<resources>
<style name="Theme.NoTitle_FullScreen">
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
</style>
</resources>
直接在AndroidManifest.xml中需要全屏显示的Activity属性中添加
android:theme="@style/Theme.NoTitle_FullScree”
4.窗体泄漏错误has leaked window android.widget
因Activity关闭,而通过WindowManager添加的控件未关闭,导致无法附着报类似has leaked window android.widget的错误,只需做如下处理
protected void onDestroy() {
super.onDestroy();
mWindowManager.removeView(mDialogText);
}
即,在app退出的生命周期函数里调用窗体的关闭方法关闭窗口即可
5.手动显示和隐藏软键盘
(1).方法一(如果输入法在窗口上已经显示,则隐藏,反之则显示)
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
(2).方法二(view为接受软键盘输入的视图,SHOW_FORCED表示强制显示)
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘
(3).调用隐藏系统默认的输入法
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); (WidgetSearchActivity是当前的Activity)
(4).获取输入法打开的状态
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();//isOpen若返回true,则表示输入法打开