显示全屏视频查看和更改方向时出现问题
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或其他视频时出现问题