Android 手动设置屏幕方向后不能自动转屏问题
2016-06-12 00:00
197 查看
如题,Android在手动设置屏幕方向后不能使用自动转屏了,这是因为手动设置屏幕方向
如:
相当于在Manifest文件中Activity节点下配置了:
这会导致该Activity方向锁定,不能自动转屏。But,手动转屏是可以的,所以我们只需要加上方向改变监听,然后手动转屏,也就达到了自动转屏的目的:
然后再注册该监听器,比如在Activity的onCreate()方法中注册:
这样就可以实现自动转屏了。上面代码只实现了在3个方向上转屏,没有写逆向的竖直方向(一般都不会用到这个方向吧),如有需要可以自己加上,角度请自己计算,其方向常量为:
通过以上的代码,还可以再配合
就可达到自由控制屏幕显示方向的目的。
文章原地址:http://my.oschina.net/u/2500514/blog/690088
如:
[code=language-java]setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
相当于在Manifest文件中Activity节点下配置了:
[code=plain]android:screenOrientation="landscape"
这会导致该Activity方向锁定,不能自动转屏。But,手动转屏是可以的,所以我们只需要加上方向改变监听,然后手动转屏,也就达到了自动转屏的目的:
[code=language-java]class OrientationEventListenerImpl extends OrientationEventListener { public OrientationEventListenerImpl(Context context) { super(context); } @Override public void onOrientationChanged(int rotation) { Log.i("旋转角度:","rotation = "+rotation); // 设置为竖屏 if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } // 设置为横屏 if(((rotation >= 225) && (rotation <= 315))) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } //设置为横屏(逆向) if(((rotation >= 45) && (rotation <= 135))) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); } } }
然后再注册该监听器,比如在Activity的onCreate()方法中注册:
[code=plain]OrientationEventListenerImpl orientationEventListenerImpl = new OrientationEventListenerImpl(this); orientationEventListenerImpl.enable();
这样就可以实现自动转屏了。上面代码只实现了在3个方向上转屏,没有写逆向的竖直方向(一般都不会用到这个方向吧),如有需要可以自己加上,角度请自己计算,其方向常量为:
[code=language-java]ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT
通过以上的代码,还可以再配合
[code=plain]@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); }
就可达到自由控制屏幕显示方向的目的。
文章原地址:http://my.oschina.net/u/2500514/blog/690088
相关文章推荐
- android 抽屉关闭时的卡顿
- Android手柄焦点控制
- Android地图应用开发之--百度地图集成及应用_baidumap
- 2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)
- Android消息机制原理剖析—Handler篇
- Android——登录界面、SharedPreferences实现记住密码等账户信息
- Android之onWindowFocusChanged
- android studio 重新运行不了的问题
- android四大组件—Activity
- Android学习路线图
- Android PreferenceFragment实现设置界面
- android--1--SDK命令行搭建并运行Android
- Android Intent(一)
- Android蓝牙BLE(二)--使用蓝牙主机
- android关于屏幕适配的几点建议
- Android Fragment 的使用
- Android 闹钟设置详解
- Android四大组件--Broadcast Receiver
- Retrofit初体验
- ViewPager 详解(一)---基本入门