【问题标题】:android setting Orientation locked the orientationandroid设置方向锁定方向
【发布时间】:2013-11-26 15:32:11
【问题描述】:

我需要在 webview 中以正常方向播放嵌入的视频(就像 webview 一样,例如 PORTRAIT 或 LANDSCAPE),并在全屏视频中强制进入 LANDSCAPE 模式。 所以我做了以下步骤:

  1. 将清单文件中的活动配置更改为android:configChanges="keyboardHidden|orientation|screenSize"。
  2. 在 WebView 的 WebChromeClient 类中,

        @Override
        public void onShowCustomView(View view, CustomViewCallback callback) {
            LogUtil.d(TAG, "onShowCustomView");
    
            super.onShowCustomView(view, callback);
            mHandler.post(new Runnable(){
    
                @Override
                public void run()
                {
                    Activity activity = getActivity();
                    if(activity == null){
                        return;
                    }
                    activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                }
    
            });
        }
    
        @Override
        public void onHideCustomView()
        {
            super.onHideCustomView();
            mHandler.post(new Runnable(){
    
                @Override
                public void run()
                {
                    Activity activity = getActivity();
                    if(activity == null){
                        return;
                    }
                    activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
                    activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);                        
                }
    
            });
        }
    

;; 完成此操作后,通常它可以正常工作。但它有一个缺点:在全屏播放视频之前,活动/片段可以根据手机方向旋转,但是在我从全屏(横向模式)返回到嵌入式(肖像模式)后,活动/片段永远不会改变它的方向.我该如何处理这种情况?我只想恢复到原始状态,而不是锁定方向。 谢谢

【问题讨论】:

  • 你试过setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 吗?这不是一个完美的解决方案,但在紧要关头非常方便。此外,android:configChanges 使用起来可能非常危险。
  • 是的,ActivityInfo.SCREEN_ORIENTATION_SENSOR 更合适 :) “危险”是什么意思?

标签: android screen-orientation


【解决方案1】:

设置方向后添加此行

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

这不是一个完美的解决方案,但在紧要关头非常方便。

android:configChanges 可能非常危险,因为它会阻止操作系统进行正常的清理和重新创建活动。

【讨论】:

    【解决方案2】:

    是的,你可以控制屏幕方向programmatically。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多