【发布时间】:2013-11-26 15:32:11
【问题描述】:
我需要在 webview 中以正常方向播放嵌入的视频(就像 webview 一样,例如 PORTRAIT 或 LANDSCAPE),并在全屏视频中强制进入 LANDSCAPE 模式。 所以我做了以下步骤:
- 将清单文件中的活动配置更改为
android:configChanges="keyboardHidden|orientation|screenSize"。 -
在 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