So, I know this has been asked several times, but I cannot get it to work (and the answer seems to change with every Android version). EDIT: I'm testing on Marshmallow, but it would be nice to get it working on Android 4.1+.
What I want is to simply show a fullscreen video, and when the user taps the screen, to show the navigation bar and other media controls/timers. Just like apps like VLC and Youtube are already doing.
I started with the Fullscreen Activity example in Android Studio, so my flags are:
When fullscreen:
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);
}
};
when showing the navigation bar:
@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);
}
And here is what I want and what I get:
And here is my layout:
<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>