通过方向改变改变整个布局,android

通过方向改变改变整个布局,android,android,performance,Android,Performance,我为给定的片段设置了两个布局文件(一个用于纵向,一个用于横向)。横向布局仅由SimpleExoPlayer视图组成,而纵向布局由包含不同类型元素的recyclerview组成。我想要的是将方向锁定为纵向模式,除非屏幕上显示特定类型的元素(视图支架),否则只有横向才可能。我不知道什么是最好的(理论上)当设备方向改变时,我可以有两个完全不同的布局进行交换吗?我应该在同一个文件中有两个布局,并在屏幕旋转时更改可见性吗?我是否应该使用片段事务在版面之间来回切换? 禁用/启用方向更改似乎很简单。myRec

我为给定的片段设置了两个布局文件(一个用于纵向,一个用于横向)。横向布局仅由
SimpleExoPlayer
视图组成,而纵向布局由包含不同类型元素的
recyclerview
组成。我想要的是将方向锁定为纵向模式,除非屏幕上显示特定类型的元素(视图支架),否则只有横向才可能。我不知道什么是最好的(理论上)当设备方向改变时,我可以有两个完全不同的布局进行交换吗?我应该在同一个文件中有两个布局,并在屏幕旋转时更改可见性吗?我是否应该使用
片段事务
在版面之间来回切换?


禁用/启用方向更改似乎很简单。my
Recyclerview
中的
Recyclerview.ViewHolder
对象也是
LifeCyclerOwners
,我使用
MutableLiveData
对象直接与活动通信(活动知道在任何给定时间显示了多少指定类型的
ViewHolder
)。
ViewHolder
可以将视频url(和其他相关数据)传递给片段,这样,在屏幕旋转时,片段可以负责准备/播放它在
回收视图中停止的视频

将xml放在res>布局栏下

将xml放在res>布局栏下

创建两个不同的xml文件,一个用于纵向模式下的设计,另一个用于横向模式。将layout port和layout land文件夹放入res文件夹中

例如:

res/布局端口[纵向模式;默认值]
main.xml

res/布局用地[景观模式]
main1.xml


参考文档

创建两个不同的XML文件,一个用于纵向模式的设计,另一个用于横向模式。将layout port和layout land文件夹放入res文件夹中

例如:

res/布局端口[纵向模式;默认值]
main.xml

res/布局用地[景观模式]
main1.xml


参考文档

使用约束布局:它为您想要支持的每个方向和分辨率提供布局资源

<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent
        android:layout_height="match_content"/>

使用约束布局:它为您想要支持的每个方向和分辨率提供布局资源

<android.support.constraint.ConstraintLayout
        android:layout_width="match_parent
        android:layout_height="match_content"/>

事情是这样的,我也使用了数据绑定库,当我创建第二个布局(用于横向模式)时,我无法获得对
SimpleExoPlayerView
的引用,因此我只是将其添加到主布局中,以切换可见性。为什么您不能引用
SimpleExoPlayerView
?XML布局在技术上是相同的,只是方向有所改变。在问题中添加相关代码作为编辑。问题是,在创建第二个布局(用于横向模式)时,我也使用了数据绑定库我无法获得对
SimpleExoPlayerView
的引用,因此我只是将其添加到主布局中,以切换可见性。为什么您不能引用
SimpleExoPlayerView
?XML布局在技术上是相同的,只是方向有所改变。在问题中添加相关代码作为编辑。