android设置方向锁定方向

时间:2013-11-26 15:32:11

标签: android screen-orientation

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

  1. 将清单文件中的活动配置更改为android:configChanges="keyboardHidden|orientation|screenSize"
  2. WebView的WebChromeClient类中的
  3.     @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);                        
                }
    
            });
        }
    
  4. ;; 这样做之后,通常它工作正常。但它有一个错误:在全屏播放视频之前,活动/片段可以根据电话方向旋转,但是当我从全屏(LANDSCAPE模式)返回到嵌入式(PORTRAIT模式)后,活动/片段永远不会改变其方向。我该如何处理这个案子?我只想恢复到原始状态,而不是锁定方向。 感谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

设置方向后添加此行

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

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

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