2010-12-10 22 views
7

Usando un ImageView, puedo establecer un alto y ancho cuadrados (digamos 100dip x 100dip). Luego, al usar android:scaleType="centerCrop", obtengo una imagen que se recorta en cuadrado independientemente de la relación de aspecto.Recorte de VideoView al cuadrado

¿Podemos hacer esto con un VideoView?

He intentado simplemente configurar una altura y un ancho cuadrados, pero simplemente vuelve a los tamaños para llenar el cuadrado lo mejor que puede, manteniendo la relación de aspecto, lo que supongo que es completamente esperado.

No parece tener propiedades de escala o de cultivos/métodos diferencia ImageView, pero esto en la documentación VideoView me hace pensar que estoy perdiendo algo:

[VideoView] ... Permite realizar varias opciones de visualización , como escalado y tintado.

Cualquier idea sería muy apreciada.

Respuesta

1

Source implica que no se admite de forma nativa en la vista VideoView. Podrías copiar la fuente y hacerla funcionar sin embargo. :) Lo más probable es mediante la adición de un demás en la línea 255, modificando onMeasure para evitar que la expansión para satisfacer el tamaño, etc.

Editar: No se sorprenda de que la documentación de referencia es ligeramente fuera o simplemente incorrecto.

+0

Dulce, gracias, es una pena. ¡Terminé este proyecto hace un tiempo! :) – Andy

+0

@Andy ¿trataste de lograr el video cuadrado? – Naz141

+0

@ Naz141 no estoy seguro de haberlo hecho. Creo que podría haber recortado el video fuente ya que era para propósitos de demostración. – Andy

4

Se logra el efecto de recorte de video usando TextureView que requieren Android API 14 y aceleración de hardware. Lo describí en mi artículo here.

También puede usar mi TextureVideoView - vista personalizada basada en android TextureView que le da la capacidad de reproducir y recortar videos fácilmente. Esta muy similar a ImageView#setScaleType

Disposición

<com.dd.crop.TextureVideoView 
     android:id="@+id/cropTextureView" 
     android:layout_width="fill_parent" 
     android:layout_height="100dp"/> 

Código

TextureVideoView cropTextureView = (TextureVideoView) findViewById(R.id.cropTextureView); 
// Use `setScaleType` method to crop video 
cropTextureView.setScaleType(TextureVideoView.ScaleType.TOP); 
// Use `setDataSource` method to set data source, this could be url, assets folder or path 
cropTextureView.setDataSource("http://www.w3schools.com/html/mov_bbb.mp4"); 
cropTextureView.play(); 

Esperamos que esto ayude a alguien!

+0

https://github.com/malmstein/fenster –