La clase VideoView de Kotlin se usa para mostrar archivos de video en la aplicación de Android . Esta clase admite los formatos de video 3gp y MP4 . La clase VideoView es capaz de reproducir un archivo de video desde el almacenamiento local, una URL específica o desde un archivo de recursos. El inconveniente de esta clase es que no retiene el estado completo del archivo de video si la aplicación pasa a segundo plano, lo que significa que la posición de reproducción actual, el estado de reproducción o cualquier tipo de pista de subtítulos no se puede restaurar.
La jerarquía de clases de la clase VideoView en Kotlin
Atributos XML del widget VideoView
atributo XML | Descripción |
---|---|
Android: identificación | Úselo para identificar de forma única un VideoView |
Android: diseño_ancho | Para establecer el ancho de VideoView |
android:layout_height | Para establecer la altura de VideoView |
Android: diseño_margen | Para corregir el margen desde arriba, abajo, al principio y al final |
aplicación: diseño_restricción | Para fijar la posición en una actividad |
Ejemplo
Este ejemplo muestra los pasos necesarios para agregar un archivo de video en una actividad de Android desde el almacenamiento local. También se agrega un controlador de medios a la actividad para controlar la reproducción y pausar la posición del video.
Nota: Los siguientes pasos se realizan en Android Studio versión 4.0
Crear nuevo proyecto
- Haga clic en Archivo, luego en Nuevo => Nuevo proyecto.
- Seleccione el idioma como Kotlin.
- Seleccione el SDK mínimo según su necesidad.
Agregue VideoView en el archivo activity_main.xml
A continuación se muestra el código del archivo activity_main.xml para agregar un TextView y un VideoView en una actividad.
xml
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#168BC34A" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/roboto" android:isScrollContainer="false" android:text="@string/heading_of_activity" android:textAlignment="center" android:textColor="#1FBC26" android:textSize="30sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.01999998" /> <VideoView android:id="@+id/simpleVideoView" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="10dp" android:layout_marginTop="20dp" android:layout_marginEnd="10dp" android:layout_marginBottom="10dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" /> </androidx.constraintlayout.widget.ConstraintLayout>
Abra el archivo MainActivity.kt
A continuación se muestra el código del archivo MainActivity.kt para acceder al widget VideoView en el archivo Kotlin y agregarle un controlador de medios.
Nota: asegúrese de crear un directorio llamado raw en el archivo de recursos de su proyecto y agregue el archivo de video en ese directorio usando el explorador de archivos.
Java
package com.example.videoviewinkotlin import android.net.Uri import android.os.Bundle import android.view.View import android.widget.MediaController import android.widget.Toast import android.widget.VideoView import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { // declaring a null variable for VideoView var simpleVideoView: VideoView? = null // declaring a null variable for MediaController var mediaControls: MediaController? = null override fun onCreate(savedInstanceState: Bundle?){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // assigning id of VideoView from // activity_main.xml layout file simpleVideoView = findViewById<View>(R.id.simpleVideoView) as VideoView if (mediaControls == null) { // creating an object of media controller class mediaControls = MediaController(this) // set the anchor view for the video view mediaControls!!.setAnchorView(this.simpleVideoView) } // set the media controller for video view simpleVideoView!!.setMediaController(mediaControls) // set the absolute path of the video file which is going to be played simpleVideoView!!.setVideoURI(Uri.parse("android.resource://" + packageName + "/" + R.raw.gfgvideo)) simpleVideoView!!.requestFocus() // starting the video simpleVideoView!!.start() // display a toast message // after the video is completed simpleVideoView!!.setOnCompletionListener { Toast.makeText(applicationContext, "Video completed", Toast.LENGTH_LONG).show() } // display a toast message if any // error occurs while playing the video simpleVideoView!!.setOnErrorListener { mp, what, extra -> Toast.makeText(applicationContext, "An Error Occurred " + "While Playing Video !!!", Toast.LENGTH_LONG).show() false } } }
Modificar el archivo strings.xml
Todas las strings que se utilizan en la actividad se enumeran en este archivo.
Java
<resources> <string name="app_name">VideoView in Kotlin</string> <string name="heading_of_activity">Running a video file in an activity</string> </resources>
Abra el archivo AndroidManifest.xml
A continuación se muestra el código para el archivo AndroidManifest.xml
Java
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http:// schemas.android.com/apk/res/android" package="com.example.videoviewinkotlin"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" /> </application> </manifest>
Ejecutar como emulador
Publicación traducida automáticamente
Artículo escrito por RISHU_MISHRA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA