VideoWall For App Inventor 2
VideoWall For App Inventor 2
The VideoWall app tutorial demonstrates how you can control the size of a video playing in an app by
using the Video Player component's Width, Height, and FullScreen features. The VideoWall uses
media assets (videos stored in the app itself), but you can use the app to display videos from the internet
as well.
This tutorial assumes you are familiar with the basics of App Inventor-- using the Component Designer
to build a user interface and using the Blocks Editor to specify the app's behavior. If you are not familiar
with the basics, try stepping through some of the basic tutorials before continuing.
Getting Started
Connect to the App Inventor web site and start a new project. Name the new project VideoWall and set
the screen's Orientation to Landscape.
Download the following video files* for use later on (right click and choose "Save Link As..."):
BigBuckBunny (bigbuckbunny.3gp)
NASA (nasa.3gp)
Sintel (sintel.3gp)
*Attributions for these videos are included at the end of this tutorial.
Introduction
The finished VideoWall app will display a wall of three videos that can be expanded to their true size
and then shrunk back down again. The app will also allow you to display the videos in fullscreen. This
tutorial assumes you have followed earlier tutorials to learn how the following blocks work:
Variables
Procedures
Button.Click blocks
Control (if-else) blocks
This tutorial introduces the following:
Resizing the VideoPlayer
Showing the VideoPlayer video in fullscreen mode
Use the component designer to create the interface for the VideoWall. When completed, the designer
should look similar to the snapshot below.
First, you need to upload the video files. Click on the Upload File... button and select a video file downloaded
earlier. Repeat this step to add the other two video files.
In the properties of Screen1, set the BackgroundColor to Black, the ScreenOrientation to Landscape, and the
Title to VideoWall. Now create the interface by dragging and dropping the components from the Palette to the
Viewer.
Componen Palette
t Type Group What you'll name it Purpose of Component Action
User Shows the VideoPlayer1 video in Set Text to "Show Full Screen" and set
Button Interface FullScreenButton1 fullscreen Width to Fill parent...
User Shows the VideoPlayer2 video in Set Text to "Show Full Screen" and set
Button Interface FullScreenButton2 fullscreen Width to Fill parent...
User Shows the VideoPlayer3 video in Set Text to "Show Full Screen" and set
Button Interface FullScreenButton3 fullscreen Width to Fill parent...
Add Behaviors to the Components
The interface is complete, but the buttons don't resize the videos yet. Open the Blocks Editor to add
the behavior to the buttons. First, you'll define three variable blocks to keep track of the size of the
VideoPlayers:
initialize global name to Variables Defines the vid1_zoomed variable (rename it)
initialize global name to Variables Defines the vid2_zoomed variable (rename it)
initialize global name to Variables Defines the vid3_zoomed variable (rename it)
Create the resizeVideoPlayer Procedure block. There are three VideoPlayers in the app, but you'll use
one Procedure block to resize all three. To accomplish this simplicity, you will use the Any Component
blocks component Any VideoPlayer blocks. To find the Any VideoPlayer drawer, scroll to the bottom
of the block drawers on the left of your screen. Next to Any Component, click on the + sign and scroll
down further to find the Any VideoPlayer drawer. Create the resizeVideoPlayer Procedure block using
the following blocks:
Block Type Drawer Purpose
set
VideoPlayer.Width (x2) Any VideoPlayer Sets the VideoPlayer Width to a number
set
VideoPlayer.Height (x2) Any VideoPlayer Sets the VideoPlayer Height to a number
0 (x2), change to 36
and 144 Math Height to set VideoPlayer to
The blocks you will create respond to clicks on the ResizeButton buttons. To build the three blocks, you
will need the following blocks:
set global vid1_zoomed Variables Sets the vid1_zoomed block to a different value
set global vid2_zoomed Variables Sets the vid2_zoomed block to a different value
set global vid3_zoomed Variables Sets the vid3_zoomed block to a different value
get global
vid1_zoomed (x2) Variables Used to change the vid1_zoomed value.
get global
vid2_zoomed (x2) Variables Used to change the vid2_zoomed value.
get global
vid3_zoomed (x2) Variables Used to change the vid3_zoomed value.
Setting the Width and Height property for a VideoPlayer works exactly the same way as setting the
Width and Height of a Button. For whatever positive number is set, the video playing will resize its
appearance to fit that value. There are two values that are exceptions to the using positive values rule:
-1 and -2. Setting VideoPlayer.Width or VideoPlayer.Height to -1 is like setting the Width or Height
to Fill parent in the designer. Setting VideoPlayer.Width or VideoPlayer.Height to -2 is like setting the
Width or Height to Automatic in the designer.
Warning: You can set the VideoPlayer Width and Height to any positive number you want. The
VideoPlayer will change its size to match the values you set; but on some devices, the VideoPlayer does
not change its size correctly. The behavior on such devices is usually unpredictable.
Test this behavior. Click on the Grow button below the BigBuckBunny video. The video's size should
expand, and the text of the button should change to "Shrink". Click on the Shrink button below the
BigBuckBunny video. The video's size should shrink back to its original size and the text should change
back to "Grow".
You will now add the blocks for showing the videos in fullscreen mode. Use the following blocks:
Package the final version of the app by choosing Build | App (provide QR code for .apk) from the
Component Designer menu. When the barcode appears, use the barcode scanner on your phone to
download and install the app. For more information on sharing and packaging apps, click here.
Variations
Now that you have finished the first VideoWall app, you might want to build some variations. For
example:
Get more video files and add a second row to create a real VideoWall
Use videos from an online server.
Expand the resizeVideoPlayer procedure to resize VideoPlayers by small increments to create an
animation effect. You could use multiple Clocks to start the resizeVideoPlayer procedure and animate
multiple VideoPlayers at once.
If you distribute your app to others, make sure you respect any license requirements for the
videos you use.
Below are the attributions to the video files included in this demo app. The creators of the source videos
that these clips are from do not endorse App Inventor.
A clip from the full length (c) copyright 2008, Blender Foundation
bigbuckbunny.3gp film / http://www.bigbuckbunny.org
Scan the following barcode onto your phone to install and run the sample app.
If you'd like to work with this sample in App Inventor, download the source code to your computer, then
open App Inventor, click Projects, choose Import project (.aia) from my computer..., and select the
source code you just downloaded.