У меня есть контейнер активности и структуры кадра для замены фрагментов внутри действия. Как ниже
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rootCo_Ordinator_Layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#efefef"
android:orientation="vertical"
android:fitsSystemWindows="false"
tools:context=".DetailsActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include layout="@layout/app_bar" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/scroll_view_horizontal" />
<HorizontalScrollView
android:id="@+id/scroll_view_horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:layout_above="@id/second_row">
<TextView
android:id="@+id/tv_path"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="none"
android:padding="8dp"
android:scrollbars="horizontal"
android:singleLine="true"
android:textColor="@android:color/black"
android:textStyle="italic|bold"
tools:text="Sample Text" />
</HorizontalScrollView>
<LinearLayout
android:id="@+id/second_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#000000"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:weightSum="5">
<Button
android:id="@+id/btn_content"
style="@style/DetailButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="@string/btn_desc"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_sub_cat"
style="@style/DetailButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="@string/btn_cat"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_text"
style="@style/DetailButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="@string/btn_cmntry"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_video"
style="@style/DetailButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="@string/btn_videos"
android:textAllCaps="false" />
<Button
android:id="@+id/btn_image"
style="@style/DetailButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:text="@string/btn_images"
android:textAllCaps="false" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/details_loading"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@android:color/transparent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
И у меня есть еще один фрагмент, который динамически создает youtubeplayerview ,
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:fitsSystemWindows="false"
android:scrollbars="vertical">
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_element"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:scrollbars="vertical"
android:fitsSystemWindows="false"
tools:context=".fragments.IntroFragment">
<include
layout="@layout/empty_view"
android:visibility="gone" />
</LinearLayout>
</ScrollView>
У меня есть класс FullScreen Util, как показано ниже
public class FullScreenHelper {
private Activity context;
private View[] views;
public FullScreenHelper(Activity context, View ... views) {
this.context = context;
this.views = views;
}
public void enterFullScreen(View selectedView, View[] allViews) {
View decorView = context.getWindow().getDecorView();
hideSystemUi(decorView);
for(View view : views) {
if (!(view instanceof FrameLayout) && (view != selectedView) ) {
view.setVisibility(View.GONE);
view.invalidate();
}
}
for (View view:allViews){
if (view != null && (view != selectedView) ){
view.setVisibility(View.GONE);
view.invalidate();
}
}
}
public void exitFullScreen(View selectedView, View[] allViews) {
View decorView = context.getWindow().getDecorView();
showSystemUi(decorView);
for(View view : views) {
view.setVisibility(View.VISIBLE);
view.invalidate();
}
for (View view:allViews){
if (view != null && (view != selectedView) ){
view.setVisibility(View.VISIBLE);
view.invalidate();
}
}
}
private void hideSystemUi(View mDecorView) {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
private void showSystemUi(View mDecorView) {
mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
}
И я фиксирую переключатель и делаю изменения в Деятельности, как показано ниже,
FullScreenHelper fsHelper =
new FullScreenHelper(this,mAppBar,mPathTextView,mHorizontalScrollView,mSecondRow);
@Override
public void toLandScape(View selectedView, View... allViews) {
isLandscape = true;
this.selectedView = selectedView;
this.allViews = new View[allViews.length];
this.allViews = allViews;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getSupportActionBar().hide();
fsHelper.enterFullScreen(selectedView,allViews);
}
@Override
public void toPortrait(View selectedView, View... allViews) {
isLandscape = false;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
getSupportActionBar().show();
fsHelper.exitFullScreen(selectedView,allViews);
}
Может быть много youtubeplayerviews , созданный динамически во фрагменте. Я добавил соответствующего слушателя при нажатии на экран переключения.Когда пользователь нажимает на переключатель в текущем представлении, проигрыватель YouTube должен заполнить экран и скрыть все остальные виды, а при повторном нажатии переключателя должен вернуть скрытые виды. Но я не могудостичь этого.В настоящее время все виды скрываются при изменении альбомной ориентации и отображают все виды на портретной ориентации.Любая помощь в том, как я это делаю, будет высоко оценена. !!!