通过约束布局动态更改横竖屏切换后View视图变动

最近在项目中开发视频会议模块总结一下遇到的问题,

  1. 每个用户的流控和视图SurfaceView一一绑定的,所以切换C位视图的时候需要动态的切换View视图以及数据。
  2. 横竖屏切换的时候,view不能被销毁,需要配置configChanges ="orientation | screenSize",然后在onConfigurationChanged方法里做处理。
  3. 还有就是横竖屏切换的时候,横屏布局和竖屏布局UI位置变化了,用两套布局的话需要重新setContentView,但是用户一一绑定的SurfaceView,set的话会导致黑帧无法加载视频,所以需要保证在所有view是不变、是同一个的前提下来切换屏幕。

今天主要通过Android的约束布局ConstraintLayout来实现该功能。

在屏幕旋转之后onConfigurationChanged方法中判断当前是横屏还是竖屏,然后约束不同的位置:

  • 首先,我们通过ConstraintSet对象将xml里面的子控件(属性)先clone下来;
  • 其次,clear掉view原有的约束;
  • 然后,重新约束它的位置,通过2种方法进行约束,一种是通过LayoutParms进行约束,一种是ConstraintSet对象提供了connect方法进行约束;
  • 最后,applyTo到该根布局上。

注意:每个View必须要有ID,否则会抛出异常

以下是code展示:

        ConstraintSet constraintSet = new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值