屏幕旋转--自动及手动控制(视频播放中setRequestedOrientation之后手机屏幕的旋转不触发onConfigurationChanged方法)

1 篇文章 0 订阅
1 篇文章 0 订阅
在调用了setRequestedOrientation之后,手机屏幕的旋转不触发onConfigurationChanged方法,这个时候需要再调用一次

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);方法,让他开启自动旋转事件


如代码:

	/**
     * 开启监听器
     */
    private final void startListener() {
        mOrientationListener = new OrientationEventListener(this) {
            @Override
            public void onOrientationChanged(int rotation) {

            	if (startRotation == -2) {//初始化角度
					startRotation = rotation;
				}
            	//变化角度大于30时,开启自动旋转,并关闭监听
            	int r = Math.abs(startRotation - rotation);
            	r = r > 180 ? 360 - r : r;
            	if (r > 30) {
            		//开启自动旋转,响应屏幕旋转事件
            		setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
            		this.disable();
				}
            }
        };
    }
	


在手动旋转按钮监听事件中写下

			//设置完之后变成强制设定为横屏或纵屏,如同AndroidManifest.xml中设置了android:screenOrientation
			if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
				setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
			}else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
				setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
			}
			//2秒后开启屏幕旋转监听,用来开启自动旋转,响应屏幕旋转事件
			orientationHandler.sendEmptyMessageDelayed(0, 2000);


最后设置handler

	private OrientationEventListener mOrientationListener; // 屏幕方向改变监听器
	private int startRotation;
	Handler orientationHandler = new Handler(){
		public void handleMessage(Message msg) {
			startRotation = -2;
			mOrientationListener.enable();
		};
	};


  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值