Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


VideoView Pantalla completa en la aplicación Android

Tengo una videovista en mi aplicación. El código es así.

<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@drawable/opsbuds"> <TextView android:text="TextView" android:id="@+id/adtxt1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> <VideoView android:layout_width="300dip" android:layout_height="250dip" android:id="@+id/videoView11" android:layout_marginLeft="30dip"></VideoView> <LinearLayout android:layout_width="match_parent" android:id="@+id/llv11" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> <Button android:text=" Continue " android:id="@+id/button1211" android:layout_width="wrap_content" android:textStyle="bold" android:layout_marginTop="10dp" android:layout_height="wrap_content" android:textSize="20dp" android:layout_marginLeft="5dp" android:textColor="#800080" android:background="@drawable/button"></Button> </LinearLayout> 

El ancho de la vista de vídeo y hieght se menciona en el archivo xml. Lo que quiero es, una vez que pulse un botón de la videoview debe aparecer en pantalla completa y una vez que presione el botón volver la videovista debe volver a su tamaño mencionado. ¿por favor ayuda?

  • Señal fatal 11 (SIGSEGV) en 0x00000000 (código = 1) - PhoneGap
  • El anuncio intersticial de Admob no se mostrará
  • ¿Cómo puedo usar IDs duplicados en diferentes diseños?
  • ¿Cómo guardar la alarma programada después de que la aplicación fue asesinada por Android o asesino de tareas?
  • ImageView volverá al estado original después de girar?
  • ¿Cómo obtener la vista de contenido de Activity?
  • Android Studio: opción de VM no reconocida 'MaxPermSize = 256m'
  • Utilidad de mapas de Android: imágenes de la URL
  • Cómo obtener un objeto de Google Maps dentro de un fragmento
  • Cómo dibujar figuras sin llenar en Android?
  • Cómo cerrar la aplicación de Android completamente
  • Freehand Image Crop dibujar dentro de la región de mapa de bits
  • 9 Solutions collect form web for “VideoView Pantalla completa en la aplicación Android”

    Fije la pantalla completa de esta manera,

      DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams(); params.width = metrics.widthPixels; params.height = metrics.heightPixels; params.leftMargin = 0; videoView.setLayoutParams(params); 

    Y volver al tamaño original, de esta manera.

      DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams(); params.width = (int) (300*metrics.density); params.height = (int) (250*metrics.density); params.leftMargin = 30; videoView.setLayoutParams(params); 

    Tuve que hacer mi VideoView sentarse en un RelativeLayout con el fin de hacer que la respuesta elegida trabajo.

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <VideoView android:id="@+id/videoViewRelative" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_width="fill_parent" android:layout_height="fill_parent"> </VideoView> </RelativeLayout> 

    Como se muestra aquí: Android – Cómo estirar el video para rellenar el área VideoView Alternar entre los tamaños de la pantalla sería tan simple como cambiar los parámetros de diseño como se da en la respuesta elegida.

    En el botón haga clic en iniciar el native video player que se abrirá en full screen :

     Intent intent = new Intent(Intent.ACTION_VIEW ); intent.setDataAndType(Uri.parse(path), "video/*"); startActivity(intent); 

    Primer método

    Cuando quiera abrir un video en pantalla completa para esa Actividad, debe establecer el atributo de tema en el Manifiesto. Establezca este valor que es

     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 

    Cambiar tema de forma programática aquí

    Segundo método

    Cree otro fullscreen.xml como a continuación y setContentView(R.layout.fullscreen) al hacer clic en el botón

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <VideoView android:id="@+id/myvideoview" android:layout_width="fill_parent" android:layout_alignParentRight="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_height="fill_parent"> </VideoView> </RelativeLayout> 

    He hecho de esta manera:

    Compruebe estas capturas de pantalla de referencia.

    Introduzca aquí la descripción de la imagen

    Añadir clase FullScreenVideoView.java :

     import android.content.Context; import android.util.AttributeSet; import android.widget.VideoView; public class FullScreenVideoView extends VideoView { public FullScreenVideoView(Context context) { super(context); } public FullScreenVideoView(Context context, AttributeSet attrs) { super(context, attrs); } public FullScreenVideoView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ super.onMeasure(widthMeasureSpec, heightMeasureSpec); setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); } } 

    Cómo vincular con xml :

     <FrameLayout android:id="@+id/secondMedia" android:layout_width="match_parent" android:layout_height="match_parent"> <com.my.package.customview.FullScreenVideoView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/fullScreenVideoView"/> </FrameLayout> 

    Espero que esto te ayudará.

    Usted puede lograrlo creando dos actividades separadas. Supongamos que la primera actividad es la actividad de media pantalla. En esta actividad, la vista de vídeo tiene un tamaño pequeño. Al hacer clic en el botón de vídeo de pantalla completa, inicie otra actividad "Actividad de pantalla completa". En la segunda actividad la vista de video debe ser el padre del partido al layout.you padre puede también comenzar el vídeo en la pantalla completa de donde está pausado en la mitad de la pantalla. En mi código he implementado that.Also usted puede reasumir el vídeo en la mitad de pantalla encendido La prensa trasera de la actividad de pantalla completa. Esto es trabajo para mí. Esperanza trabajará para usted también.

     Here is the code half.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#aa99cc" android:orientation="vertical" > <VideoView android:id="@+id/VideoViewhalf" android:layout_width="match_parent" android:layout_height="300dp" > </VideoView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/btnfullScreen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fullscreen" /> <ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> HalfScreen activity public class HalfScreen extends Activity { Button btn; VideoView videoView = null; final int REQUEST_CODE = 5000; final String videoToPlay = "http://bffmedia.com/bigbunny.mp4"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.half); videoView = (VideoView) findViewById(R.id.VideoViewhalf); final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); btn = (Button) findViewById(R.id.btnfullScreen); Uri video = Uri.parse(videoToPlay); videoView.setVideoURI(video); videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mp) { progressBar.setVisibility(View.GONE); videoView.requestFocus(); videoView.start(); } }); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent videointent = new Intent(HalfScreen.this, FullScreen.class); videointent.putExtra("currenttime", videoView.getCurrentPosition()); videointent.putExtra("Url", videoToPlay); startActivityForResult(videointent, REQUEST_CODE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { if (data.hasExtra("currenttime")) { int result = data.getExtras().getInt("currenttime", 0); if (result > 0) { if (null != videoView) { videoView.start(); videoView.seekTo(result); ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); progressBar.setVisibility(View.VISIBLE); } } } } } } full.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ff99cc" android:orientation="vertical" > <VideoView android:id="@+id/VideoViewfull" android:layout_width="match_parent" android:layout_height="match_parent" > </VideoView> </LinearLayout> FullScreen Activity public class FullScreen extends Activity { Button btn; VideoView videoView = null; int currenttime = 0; String Url = ""; private static ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); Bundle extras = getIntent().getExtras(); if (null != extras) { currenttime = extras.getInt("currenttime", 0); Url = extras.getString("Url"); } setContentView(R.layout.full); progressDialog = ProgressDialog.show(this, "", "Loading...", true); videoView = (VideoView) findViewById(R.id.VideoViewfull); MediaController mediaController = new MediaController(this); mediaController.setAnchorView(videoView); Uri video = Uri.parse(Url); videoView.setMediaController(mediaController); videoView.setVideoURI(video); videoView.setOnPreparedListener(new OnPreparedListener() { public void onPrepared(MediaPlayer arg0) { progressDialog.dismiss(); videoView.start(); videoView.seekTo(currenttime); } }); } @Override public void finish() { Intent data = new Intent(); data.putExtra("currenttime", videoView.getCurrentPosition()); setResult(RESULT_OK, data); super.finish(); } } 

    Lo logré cambiando a la orientación horizontal y configurando los parámetros de diseño a MATCH_PARENT . Justo antes de cambiar al modo de pantalla completa, necesitamos almacenar el modo de orientación actual y los VideoView de defaultScreenOrientationMode defaultVideoViewParams variables defaultScreenOrientationMode y defaultScreenOrientationMode correspondiente. Para que podamos usarlos cuando salgamos del modo de pantalla completa de vídeo. Por lo tanto, cuando desee abrir el vídeo en modo de pantalla completa, utilice el método makeVideoFullScreen() para salir – exitVideoFullScreen() .

    Por favor, tenga en cuenta que usé RelativeLayout para mi VideoView , en su caso puede ser otro tipo de diseño.

     private RelativeLayout.LayoutParams defaultVideoViewParams; private int defaultScreenOrientationMode; // play video in fullscreen mode private void makeVideoFullScreen() { defaultScreenOrientationMode = getResources().getConfiguration().orientation; defaultVideoViewParams = (LayoutParams) videoView.getLayoutParams(); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); videoView.postDelayed(new Runnable() { @Override public void run() { RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT); videoView.setLayoutParams(params); videoView.layout(10, 10, 10, 10); } }, 700); } // close fullscreen mode private void exitVideoFullScreen() { setRequestedOrientation(defaultScreenOrientationMode); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); videoView.postDelayed(new Runnable() { @Override public void run() { videoView.setLayoutParams(defaultVideoViewParams); videoView.layout(10, 10, 10, 10); } }, 700); } 

    Intente el código abajo aquí.

     if (!isFullScreen()) { Log.v("Full screen", "-----------is full screen------------"); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels; android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams(); params.width = width; params.height=height; params.setMargins(0, 0, 0, 0); } else{ Log.v("Full screen", "-----------small screen------------"); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels; android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams(); params.width = width; params.height=height / 3; params.setMargins(0, 0, 0, 0); } 

    Si desea mantener la relación de aspecto de un video o estirarlo para llenar su área principal, utilizando el administrador de diseño adecuado puede realizar el trabajo.

    Mantenga la relación de aspecto:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent"> <VideoView android:id="@+id/videoView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center"/> </LinearLayout> 

    !!! Para rellenar el campo:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <VideoView android:id="@+id/videoViewRelative" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_width="fill_parent" android:layout_height="fill_parent"> </VideoView> </RelativeLayout> 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.