方向更改的全屏视频

时间:2014-01-05 06:30:09

标签: android fragment android-videoview landscape

我有一个能播放视频的应用。在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);将其设置为videoview。这意味着这会调整视频视图的父级。当我暂时分离listfragment时,detailFragment仍然占据相同的高度,我仍然有listFragment的空间。我认为这是因为listFragment的FrameLayout仍然存在并占据屏幕的1/3。当listFragment与视图分离时,如何让detailFragment占据整个屏幕。

1 个答案:

答案 0 :(得分:1)

您再次可以在onConfigurationChanged()的{​​{1}}回调中处理此问题;在纵向模式下分离另一个Activity,并在横向模式下重新附加它。