Search code examples
androidandroid-videoviewaspect-ratio

Stretch to fill VideoView, aspect ratio of VideoView


I try to stretch video in aim to fill videoview. The target is to create view that in device look like the first pic (like it look in layout preview).

Most of the answers to this questions refer to this link.

I tried this but I still didn't fill video view.

This my layout code :

<?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:orientation="vertical" 
    android:background="@drawable/search_gren_screen">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/go_back"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:onClick="onclick"
            android:text="Try again" />

        <Button
            android:id="@+id/back_to_pick_song"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="Select another song" 
            android:onClick="onclick" />

        <Button
            android:id="@+id/btn_continue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:onClick="onclick"
            android:text="Amazing, continue!" />
    </LinearLayout>

    <FrameLayout 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
    <VideoView 
        android:id="@+id/videoView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_gravity="center" />
    </FrameLayout>
</LinearLayout>

Here you have a preview of my declared layout:

enter image description here

However, the result on the device is different:

enter image description here


Solution

  • Try to make your outer layout a relative layout and put the VideoView inside that.

    Something like:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/trim_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
    
         <LinearLayout
              android:id="@+id/buttonContainer"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="horizontal" >
    
         <Button
              android:id="@+id/go_back"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_gravity="center"  
              android:layout_weight="1"
              android:onClick="onclick"
              android:text="Try again" />
    
         <Button
              android:id="@+id/back_to_pick_song"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:layout_weight="1"
              android:text="Select another song" 
              android:onClick="onclick" />
    
        <Button
              android:id="@+id/btn_continue"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_gravity="center"
              android:layout_weight="1"
              android:onClick="onclick"
              android:text="Amazing, continue!" />
      </LinearLayout>
    
      <VideoView
         android:id="@+id/VideoView"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_alignParentLeft="true"
         android:layout_alignParentRight="true"
         android:layout_alignParentBottom="true"
         android:layout_below="@id/buttonContainer"/>
    </RelativeLayout>