我有一个显示全屏视频的活动(但保持宽高比)。它在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>
当然我也更新了清单以使用新主题。
答案 0 :(得分:1)
当您更改设备方向时,Dalvik会杀死活动并创建另一个活动,垃圾收集器会清除所有旧设备。
我建议您强制应用程序保持水平模式,您可以更改活动中的follow属性:
<activity android:screenOrientation="landscape" />
如果你想让活动改变方向,你必须处理改变。您可以阅读此文档how to handling runtime changes。
答案 1 :(得分:0)
我担心我无法看到你在那张照片上谈论的渐变。但如果它在整个屏幕上,那么这可能是Holo主题的标准背景,你可以使用自定义主题删除它。
对于重新启动旋转,您可以将当前时间保存在onConfigurationChanged(..)中,然后使用VideoView.seekTo(..)将其恢复到代码的相应部分中的正确时间。但是,我不知道为什么会在ICS中发生这种情况,因为您并没有破坏活动。