我正在ConstraintLayout
的布局中播放视频并覆盖onConfigurationChanged
而不是重新启动活动,以防止视频停止并开始更改方向。我正在尝试确定将布局调整为全屏的最佳方法,因为在旋转期间不会刷新布局。布局使用以下约束:
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_width="0dp"
android:layout_height="0dp"
旋转后,我希望布局使用相同的约束,但宽度和高度会改变以适应景观而不是纵向,反之亦然。我目前使用DisplayMetrics
将视频播放器布局设置为屏幕的宽度和高度,但想知道是否有更好的解决方案。 RequestLayout
似乎没有这样做。有人有更好的解决方案吗?
答案 0 :(得分:0)
使用 onConfigurationChanged 方法并在同一布局上为 constrain set 设置动画...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Context context = this;
mConstraintSet2.clone(context, R.layout.state2); // get constraints from layout
setContentView(R.layout.state1);
mConstraintLayout = (ConstraintLayout) findViewById(R.id.activity_main);
mConstraintSet1.clone(mConstraintLayout); // get constraints from ConstraintSet
}
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
// Checks the orientation of the screen
if (newConfig.orientation === Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show()
TransitionManager.beginDelayedTransition(mConstraintLayout);
mConstraintSet1.applyTo(mConstraintLayout); // set new constraints
} else if (newConfig.orientation === Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show()
TransitionManager.beginDelayedTransition(mConstraintLayout);
mConstraintSet2.applyTo(mConstraintLayout); // set new constraints
}
}