videos studio soportado reproducir play para mediaplayer contenido con como cargar android navigation-drawer android-tablayout android-videoview

studio - Cajón de navegación y VideoView en Android



reproducir video con mediaplayer android studio (4)

¿Intentaste usar TextureView lugar de VideoView?
ViedoView es bien conocido como la vista propensa a errores.

Escribí frame-video-view que (entre otras cosas) simplifica el uso de TextureView como reproductor de video.

Estoy usando un cajón de navegación más un tablayout. Tengo un video en mi pestaña que no estaba visible al principio, pero puedo escuchar el sonido. Una vez me puse

video_view.setZOrderOnTop(true);

y también puedo ver el video, pero esto causa un problema con el cajón de navegación.

Cuando lo deslizo, el video no se oculta detrás del cajón de navegación como lo hacen todos los demás elementos.

Si no uso

video_view.setZOrderOnTop(true);

entonces mi cajón funciona bien.

main_activity.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Framelayout to display Fragments --> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/menuwhite2" android:id="@+id/custom_home" android:gravity="center" android:layout_gravity="right" android:layout_marginRight="10dp"/> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabMode="fixed" app:tabGravity="fill" /> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> </android.support.design.widget.CoordinatorLayout> <!-- Listview to display slider menu --> <ListView android:id="@+id/list_slidermenu" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="end" android:choiceMode="singleChoice" android:divider="@color/list_divider" android:dividerHeight="1dp" android:listSelector="@drawable/list_selector" android:background="@color/list_background"/>

tab_fragment.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <android.support.v7.widget.CardView android:id="@+id/cardview" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello"/> </android.support.v7.widget.CardView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:id="@+id/layoutTop" android:layout_width="match_parent" android:layout_height="match_parent"> <VideoView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/video_player_view" android:layout_height="200dp" android:layout_width="fill_parent"/> </RelativeLayout> <RelativeLayout android:id="@+id/layoutBottom" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/layoutTop"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="hello"/> </RelativeLayout> <ImageView android:id="@+id/overlapImage" android:layout_width="wrap_content" android:layout_height="40dp" android:layout_above="@id/layoutBottom" android:adjustViewBounds="true" android:src="@mipmap/ic_launcher" /> </RelativeLayout> </LinearLayout>

TabFragment.java

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment final View view = inflater.inflate(R.layout.tab_fragment, container, false); VideoView video_player_view = (VideoView) view.findViewById(R.id.video_player_view); video_player_view.setVideoURI("videourl"); video_player_view.setZOrderOnTop(true); video_player_view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { video_player_view.start(); } }); return view; }

Entonces, ¿alguien puede guiarme con una alternativa para eso?


@ Atula te sugiero una solución simple para esto ... Esto es trabajo Perfecto

Adjunto la captura de pantalla funcionando correctamente ....

Prueba esto

Usé esto

video_player_view.setZOrderMediaOverlay(true);

En lugar de

video_view.setZOrderOnTop(true);


Cuando establezca ZOrderOnTop (verdadero) estará encima de otro diseño. De hecho, controla si la superficie de la vista de superficie se coloca en la parte superior de la ventana [ver más] .

Tengo un video en mi pestaña que no estaba visible al principio pero puedo escuchar el sonido.

De acuerdo con su comentario, coloca otro diseño en VideoView para que no pueda ver VideoView, pero oye el sonido.

Girando el Layout bound en el teléfono:

Setting-> developer option -> show Layout bound

Puedes ver lo que está pasando en tus Layouts . Supongo que no puede ver VideoView debido a esos match_parents en su layout_height (p. Ej .: ponga 50dp para cada uno de ellos) y su problema se solucionará.

También haga que el diseño de la raíz sea match_parent lugar de wrap_content No se resuelve el problema pero está mucho mejor.


Después de algunos comentarios, el OP quería ver algo de código.

Ok, vamos a intentar algo como esto:

private DrawerLayout drawer; private ActionBarDrawerToggle toggle; protected void onResume() { drawer.addDrawerListener(toggle); toggle.syncState(); } protected void onPause() { drawer.removeDrawerListener(toggle); toggle.syncState(); } protected void onCreate(Bundle saveInstanceState) { toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { public void onDrawerClosed(View view) { Log.d(TAG, "--> ActionBarDrawerToggle::onDrawerClosed (view=" + view + ")"); syncActionBarArrowState(); //call videoView.setZOrderOnTop(true) so it''s over everything } public void onDrawerOpened(View drawerView) { Log.d(TAG, "--> ActionBarDrawerToggle::onDrawerOpened (drawerView=" + drawerView + ")"); toggle.setDrawerIndicatorEnabled(true); //call videoView.setZOrderOnTop(false) so it''s NOT over the drawer } @Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, 0); //call videoView.setZOrderOnTop(false) //so it''s not over the drawer being pulled out } }; }