Configuration cf= activity.getResources().getConfiguration(); // 获取设置的配置信息
int ori = cf.orientation; // 获取屏幕方向
if (ori == cf.ORIENTATION_LANDSCAPE) {
// 横屏
}
if (ori == cf.ORIENTATION_PORTRAIT) {
// 竖屏
}
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
mWidth = dm.widthPixels;
mHeight = dm.heightPixels;
// 比较宽高的大小判断屏幕方向(宽>高,则为横屏)
if (mWidth > mHeight) {
// 横屏
} else {
// 竖屏
}
orientation的取值为: - 横屏:Configuration.ORIENTATION_LANDSCAPE - 竖屏:Configuration.ORIENTATION_ PORTRAIT
在activity 中加入 android:screenOrientation="landscape" 属性。 该属性有两个值 portrait//竖屏 landscape//横屏
有些设备配置可能会在运行时发生变化(例如屏幕方向、键盘可用性及语言)。 发生这种变化时,Android 会重启正在运行的 Activity。重启行为旨在通过利用与新设备配置匹配的备用资源自动重新加载Activity,来帮助它适应新配置。但重启Activity并恢复大量数据不仅成本高昂,且用户体验差。 在这种情况下,有两种选择:在配置变更期间保留对象,或自行处理配置变更。 若在配置变更期间保留对象,可通过保留 Fragment 来减轻重新初始化 Activity 的负担。Fragment可持有对需要保留的状态对象的引用。 若声明由Activity自行处理配置变更,需在`AndroidManifest.xml`中activity的`configChanges`属性列出 Activity 将自行处理的配置更改。在运行时发生配置更改时,默认情况下会关闭 Activity 然后将其重新启动,但使用该属性声明配置将阻止 Activity 重新启动。Activity 会保持运行状态,并且系统会调用其 `onConfigurationChanged(Configuration newConfig)`方法,newConfig对象代表的是所有当前配置,而不仅仅是已经变更的配置。 经测试,若需切屏时不重启Activity,应设置属性为
configChanges="orientation|keyboardHidden|screenSize"
值 | 说明 |
---|---|
orientation | 屏幕方向发生了变化 - 用户旋转了设备。 |
keyboardHidden | 键盘可访问性改变 - 键盘已隐藏 |
screenSize | 当前可用屏幕尺寸发生了变化。(目标API>13时必需) |
参考:https://developer.android.com/guide/topics/resources/runtime-changes.htmlAndroid设备屏幕方向的一二事
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。