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

时间:2018-04-12 08:31:07

标签: android performance

我为给定的片段设置了两个布局文件(一个用于纵向,一个用于横向)。横向布局仅包含SimpleExoPlayer视图,而纵向布局包含包含不同类型元素的recyclerview。我想要的是将方向锁定为纵向模式,除非屏幕上显示特定类型的元素(视图持有者),然后才能进行横向渲染。我不知道的是什么是最好的(理论上)。 当设备方向发生变化时,我可以换出两种完全不同的布局吗?我是否应该在同一文件中同时具有两种布局并更改屏幕旋转时的可见性?我应该使用FragmentTransaction在布局之间来回切换吗?

禁用/启用方向更改似乎很简单。我Recyclerview.ViewHolder中的recyclerview个对象也是LifeCyclerOwners,我使用MutableLiveData对象直接与活动进行通信(活动知道指定类型{{1}的多少个在任何给定时间显示1}}。 ViewHolder可以将视频网址(以及其他相关数据)传递给片段,这样,在屏幕旋转时,片段可以负责在ViewHolder中从中断的位置准备/播放视频。

3 个答案:

答案 0 :(得分:1)

将xml放在res下>布局陆

答案 1 :(得分:1)

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

示例:

res/layout-port [Portrait Mode; default] main.xml

res/layout-land [Landscape Mode] main1.xml

参考文档http://developer.android.com/training/basics/supporting-devices/screens.html

答案 2 :(得分:0)

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

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

您不需要为不同的版面尺寸和分辨率创建尺寸。