【问题标题】:Fullscreen video on orientation change关于方向更改的全屏视频
【发布时间】:2014-01-06 15:38:03
【问题描述】:

我有一个可以播放视频的应用。在portrait 模式下,视频占据屏幕的 1/3,当更改为landscape 时,我将其更改为全屏。这在手持电话布局中运行良好。我使用setLayoutParams 在 onConfigurationChanged 处理程序上将 videoview 容器的布局更改为全屏。我这样做而不是声明另一个布局,因为我不希望视频视图在更改方向时重新缓冲。

但我有另一种使用 2 个片段的平板电脑布局。视频在底部片段中播放。当我改变方向时,如何设置layoutparams 占据整个屏幕并覆盖另一个片段。如果有一种方法适用于手持设备和平板电脑布局,那就太好了,因为此功能由两者共享的 detailsFragment 类处理。

更新: 这是我的布局的简明版本。
main_activity.xml

<LinearLayout>
   <FrameLayout id="listFragment" weight=1/>
   <FrameLayout id="detailFragment" weight=2/>
</LinearLayout>

detailFragment.xml

<RelativeLayout>
   <TextView/>
   <RelativeLayout>
      <VideoView>
   <RelativeLayout>
   <Button/>
</RelativeLayout>

当调用 onConfigurationChanged 时,我创建了一个 RelativeLayout.LayoutParams 并使用 videoview.setLayoutParams(lp); 将其设置为视频视图。这意味着这会调整视频视图的父级的大小。当我暂时分离listfragment时,detailFragment仍然占据相同的高度,并且我仍然有listFragment的空间。我认为这是因为 listFragment 的 FrameLayout 仍然存在并且占据了屏幕的 1/3。当 listFragment 从视图中分离时,如何让 detailFragment 占据整个屏幕。

【问题讨论】:

    标签: android fragment android-videoview landscape


    【解决方案1】:

    您可以再次在ActivityonConfigurationChanged() 回调中处理此问题;在纵向模式下分离另一个Fragment,在横向模式下重新附加。

    【讨论】:

    • 这看起来像我正在寻找的解决方案,但我的布局有点复杂。我已更新我的问题以包含更多信息。
    • @JohnNg:您可以将Fragments 直接添加到 XML 布局资源中的容器位置,然后使用我的解决方案,或者如果您不想这样做,则隐藏顶部容器,而不是在其上调用 setVisibility(View.GONE)
    • 非常感谢!我用 setVisibility() 代替。
    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多