显示全屏视频查看和更改方向时出现问题

Posted

技术标签:

【中文标题】显示全屏视频查看和更改方向时出现问题【英文标题】:Problems while showing a full screen videoView & changing orientation 【发布时间】:2012-06-21 13:18:57 【问题描述】:

我有一个显示全屏 videoView 的活动(但保持纵横比)。它在 android 2.3.7 上运行良好,但我在 Android 4 上遇到了一些奇怪的问题(可能是 3,我还没有检查):

    由于某种原因,如果我将主题设置为全屏,没有标题栏(或操作栏),我会在 videoView 下方获得蓝色(或白色?)渐变,如下所示:

    相关布局在这里:

    编辑:在 android 3 上,它不会发生。

    当我将方向从纵向更改为横向时,它会从头重新加载整个视频。在 Android 2.3.7 上,它没有任何延迟地继续,好像什么都没有改变。

相关的清单部分在这里:

<activity android:name=".activities.player_activity.PlayerActivity" android:configChanges="keyboardHidden|orientation"
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" android:screenOrientation="sensor"/>

请注意,在 Android 3 上,旋转平板电脑不会做任何事情,因此不会改变方向。

我应该如何处理这些问题? API 演示似乎没有更新以处理这些情况。

我的项目在:nexus one (android 2.3.7)、xoom (android 3)、galaxy S3 (android 4) 上进行了测试。


为了解决数字 1,我只是简单地更改了没有任何背景的主题。奇怪的是它在设备上是这样的。想知道在其他 Android 4 设备上是否也是这样。为了创建主题,我在“res/values/”文件夹中创建了一个文件“theme.xml”,并在其中写道:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.FullScreenNobarsNoBackground" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen">
    <item name="android:windowBackground">@null</item>
  </style>
</resources>

当然,我也更新了清单以使用新主题。

【问题讨论】:

【参考方案1】:

当您更改设备方向时,Dalvik 会终止该活动并创建另一个活动,并且垃圾收集器会清理所有旧的东西。

我建议你强制应用程序保持水平模式,你可以在 activity 中更改以下属性:

<activity android:screenOrientation="landscape" />

如果您想要活动更改方向,则必须处理更改。您可以阅读此文档how to handling runtime changes。

【讨论】:

但是以纵向模式持有的设备呢?我不想强迫用户使用横向模式。【参考方案2】:

恐怕我在这张图片上看不到您所说的渐变。但如果它在整个屏幕上,那么这可能是 Holo 主题的标准背景,您可以使用自定义主题将其删除。

至于轮换重启,您可以将当前时间保存在 onConfigurationChanged(..) 中,然后使用 VideoView.seekTo(..) 在代码的适当部分将其恢复到正确的时间。但是,我不知道为什么在 ICS 中会发生这种情况,因为您没有破坏 Activity。

【讨论】:

关于背景,好像是SGS3的“问题”。关于视频问题,你检查了吗?

以上是关于显示全屏视频查看和更改方向时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

使用delphi在Android下的TWebbrowser中全屏观看youtube或其他视频时出现问题

在全屏 webview 诺基亚 x 中输入视频时出现 NullPointerException

在模拟器中更改方向时出现颤振调试问题

查看 janus webrtc 视频流时出现问题

更改屏幕方向时视频不会同时播放

在全屏独占模式下输入 JtextField 时出现问题