1

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

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

    全屏出现奇怪的渐变

    相关布局在这里:

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

  2. 当我将方向从纵向更改为横向时,它会从头开始重新加载整个视频。在 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>

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

4

2 回答 2

1

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

我建议您强制应用程序保持水平模式,您可以更改活动中的跟随属性:

<activity android:screenOrientation="landscape" />

如果您想要活动更改方向,则必须处理更改。您可以阅读本文档如何处理运行时更改

于 2012-06-21T13:59:53.210 回答
0

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

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

于 2012-06-21T14:01:57.127 回答