Android VideoView в полноэкранном режиме с перекрывающимися элементами управления на панели навигации
Итак, я знаю, что об этом спрашивали несколько раз, но я не могу заставить его работать (и, похоже, ответ меняется с каждой версией Android). РЕДАКТИРОВАТЬ: я тестирую на Marshmallow, но было бы неплохо, чтобы он работал на Android 4.1+.
Я хочу просто показать полноэкранное видео, а когда пользователь коснется экрана, показать панель навигации и другие элементы управления мультимедиа / таймеры. Так же, как приложения, такие как VLC и Youtube, уже делают.
Я начал с примера "Полноэкранное действие" в Android Studio, поэтому мои флаги:
Когда полноэкранный:
private final Runnable mHidePart2Runnable = new Runnable() {
@SuppressLint("InlinedApi")
@Override
public void run() {
// Delayed removal of status and navigation bar
// Note that some of these constants are new as of API 16 (Jelly Bean)
// and API 19 (KitKat). It is safe to use them, as they are inlined
// at compile-time and do nothing on earlier devices.
rootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
};
при отображении панели навигации:
@SuppressLint("InlinedApi")
private void show() {
// Show the system bar
rootView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
mVisible = true;
// Schedule a runnable to display UI elements after a delay
mHideHandler.removeCallbacks(mHidePart2Runnable);
mHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY);
}
И вот что я хочу и что я получаю:
И вот мой макет:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff000000"
android:id="@+id/layout_play_video"
tools:context="com.nttdata.videoplaylist.PlayVideoActivity">
<VideoView
android:id="@+id/content_video"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center" />
<ProgressBar
android:id="@+id/loading_pb"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center|center"
android:progressDrawable="@drawable/loading"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<RelativeLayout
android:id="@+id/fullscreen_content_controls"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" >
<TextView
android:id="@+id/content_video_time_current"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:shadowColor="@android:color/black"
android:text="@string/content_duration"
android:textColor="#ffffffff"
android:textSize="30sp"
android:layout_marginLeft="25dp"
android:layout_marginStart="25dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/content_video_time_total"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:shadowColor="@android:color/black"
android:text="@string/content_duration"
android:textColor="#ffffffff"
android:textSize="30sp"
android:layout_marginRight="25dp"
android:layout_marginEnd="25dp"
android:layout_gravity="end|bottom"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<ProgressBar
android:id="@+id/content_video_progress"
android:layout_width="match_parent"
style="?android:attr/progressBarStyleHorizontal"
android:layout_height="50dp"
android:layout_marginLeft="60dp"
android:layout_marginStart="60dp"
android:layout_marginRight="60dp"
android:layout_marginEnd="60dp"
android:layout_toStartOf="@id/content_video_time_total"
android:layout_toLeftOf="@id/content_video_time_total"
android:layout_toEndOf="@id/content_video_time_current"
android:layout_toRightOf="@id/content_video_time_current"
android:layout_alignParentBottom="true" />
</RelativeLayout>
</RelativeLayout>
1 ответ
Мне интересно, откуда ваш rootView. Навсегда скрыть панель навигации на активность проверить это.
View decorView = getWindow().getDecorView();
пытаться decorView
вместо rootView
,