title: Set Animated .GIF As Background Android
body: <p>I am new to Android and I am having trouble playing an animated .gif file in the background of my layout. When I run the application the background is a single frame of the animated .gif, just like a picture. I have done research mainly in two areas:</p>
  
  <p>The link below is where I got the most help.</p>
  
  <p><a href="http://androidosbeginning.blogspot.com/2010/09/gif-animation-in-android.html" rel="noreferrer" title="GIF Animation In Android">Android OS Beginning BlogSpot</a></p>
  
  <p>The link below makes me think that the errors I am receiving have something to do with the classes being set to private, public, or protected.</p>
  
  <p><a href="http://www.java-forums.org/new-java/12014-constructor-not-visible.html" rel="noreferrer" title="Constructor Is Not Visible">Java Forums</a></p>
  
  <p>And Here's The Code -------------------------------------------------------------------------------------------------------------------</p>
  
  <p>Errors are denoted by :: ERROR # :: with full descriptions below the code.</p>
  
  <pre><code>import java.io.InputStream;
  
  import android.os.Bundle;
  import android.app.Activity;
  import android.graphics.Canvas;
  import android.graphics.Color;
  import android.graphics.Movie;
  import android.view.Menu;
  import android.view.View;
  
  public class MainActivity extends Activity {
  
      @Override
      public void onCreate(Bundle savedInstanceState){
  
          super.onCreate(savedInstanceState);
  
          setContentView(new MYGIFView());   :: ERROR 1 :: 
  }
  }
  
  private class MYGIFView extends View{  :: ERROR 2 ::
      Movie movie,movie1;
      InputStream is=null , is1=null;
      long moviestart;
      public GIFView(Context context) {   :: ERROR 3 ::
  
          super(context);                 :: ERROR 4 ::
  
          is=context.getResources().openRawResource(R.drawable.swing);
  
          movie=Movie.decodeStream(is);
  }
  
  @Override
  protected void onDraw(Canvas canvas) {
  
      canvas.drawColor(Color.WHITE);
      super.onDraw(canvas);
      long now=android.os.SystemClock.uptimeMillis();
      System.out.println("now="+now);
      if (moviestart == 0) { // first time
      moviestart = now;
  
  }
  
  System.out.println("\tmoviestart="+moviestart);
  int relTime = (int)((now - moviestart) % movie.duration()) ;
  System.out.println("time="+relTime+"\treltime="+movie.duration());
  movie.setTime(relTime);
  movie.draw(canvas,this.getWidth()/2-20,this.getHeight()/2-40);
  this.invalidate();
  
  }
  }
  </code></pre>
  
  <p>:: ERRORS LIST :: ERRORS LIST :: ERRORS LIST :: ERRORS LIST :: ERRORS LIST :: ERRORS LIST ::</p>
  
  <p>:: ERROR 1 :: The constructor MYGIFView() is not visible</p>
  
  <p>:: ERROR 2 ::  Implicit Super Constructor View() is undefined for visible constructor</p>
  
  <p>:: ERROR 3 ::  Return type for the method is missing</p>
  
  <p>:: ERROR 4 :: Constructor call must be the first statement in a constructor</p>
  
  <p>.</p>
  
  <p>.</p>
  
  <p>---------- UPDATE --------- UPDATE ------------ UPDATE --------------- UPDATE ------------- UPDATE ---------- UPDATE --------- UPDATE ------------ UPDATE --------------- UPDATE ------------- UPDATE --------- UPDATE</p>
  
  <p>.</p>
  
  <p>.</p>
  
  <p>I have created the animation list = res/drawable-hdpi/progress_animation.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="false"&gt;
  &lt;item android:drawable="@drawable/frame02" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame03" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame04" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame05" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame06" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame07" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame08" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame09" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame10" android:duration="50" /&gt;
  .........................................
  &lt;item android:drawable="@drawable/frame57" android:duration="50" /&gt;
  &lt;item android:drawable="@drawable/frame58" android:duration="50" /&gt;
  &lt;/animation-list&gt;
  </code></pre>
  
  <p>.</p>
  
  <p>.</p>
  
  <p>I have created layout file to host the Image View = res/layout/activity_main.xml</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context=".MainActivity" &gt;
  
  &lt;ImageView android:id="@+id/swing_play" android:layout_width="fill_parent"
      android:layout_height="wrap_content" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>.</p>
  
  <p>Java Class Activity to call ImageView and AnimationDrawable = com.example.apptwo/MainActivity.java</p>
  
  <p>.</p>
  
  <pre><code>package com.exampleone.apptwo;
  
  import android.os.Bundle;
  import android.app.Activity;
  import android.graphics.drawable.AnimationDrawable;
  import android.view.Menu;
  import android.widget.ImageView;
  
  public class MainActivity extends Activity {
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
  
      setContentView(R.layout.acivity_main);
      ImageView img = (ImageView)findViewById(R.id.swing_play);
      img.setBackgroundResource(R.drawable.progress_animation);
  
      AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
  
      frameAnimation.start();
  }
  
  }
  </code></pre>
  
  <p>.</p>
  
  <p>The IDE does not flag any errors in the code. However, when I run the Application my emulator displays a white background with a message "Unfortunately, AppTwo has stopped."</p>
  
  <p>The ErrorLog reads = "Unhandled Event Loop Exception"</p>
  
  <p>LOGCAT -----------------------------------------------------------------------------------------------------------------------------------</p>
  
  <p>This is the Session Filter LOGCAT</p>
  
  <pre><code>04-06 17:10:48.193: D/AndroidRuntime(989): Shutting down VM
  04-06 17:10:48.193: W/dalvikvm(989): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
  04-06 17:10:48.213: E/AndroidRuntime(989): FATAL EXCEPTION: main
  04-06 17:10:48.213: E/AndroidRuntime(989): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.apptwo/com.example.apptwo.MainActivity}: java.lang.NullPointerException
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.os.Handler.dispatchMessage(Handler.java:99)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.os.Looper.loop(Looper.java:137)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.ActivityThread.main(ActivityThread.java:5041)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at java.lang.reflect.Method.invokeNative(Native Method)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at java.lang.reflect.Method.invoke(Method.java:511)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at dalvik.system.NativeStart.main(Native Method)
  04-06 17:10:48.213: E/AndroidRuntime(989): Caused by: java.lang.NullPointerException
  04-06 17:10:48.213: E/AndroidRuntime(989):  at com.example.apptwo.MainActivity.onCreate(MainActivity.java:14)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.Activity.performCreate(Activity.java:5104)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
  04-06 17:10:48.213: E/AndroidRuntime(989):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
  04-06 17:10:48.213: E/AndroidRuntime(989):  ... 11 more
  </code></pre>
  
  <p>There are too many LogCat (all messages) to post, but this one below seems to be important around the time of the error.</p>
  
  <pre><code>04-06 17:10:48.213: E/AndroidRuntime(989): FATAL EXCEPTION: main
  </code></pre>
  
  <p>.</p>
  
  <p>UPDATE TO LOGCAT WITH CONTENT VIEW INCLUDED ! ! !</p>
  
  <pre><code> : error opening trace file: No such file or directory (2)
  
   : GC_FOR_ALLOC freed 67K, 7% free 2500K/2688K, paused 49ms, total 54ms
  
   : I/dalvikvm-heap(1813): Grow heap (frag case) to 4.022MB for 1536016-byte allocation
  
   : D/dalvikvm(1813): GC_FOR_ALLOC freed 2K, 5% free 3998K/4192K, paused 125ms, total 125ms
  
   : D/dalvikvm(1813): GC_CONCURRENT freed &lt;1K, 5% free 3998K/4192K, paused 5ms+15ms, total 105ms
  
   : D/dalvikvm(1813): GC_FOR_ALLOC freed &lt;1K, 5% free 3998K/4192K, paused 36ms, total 37ms
  
   : Grow heap (frag case) to 5.485MB for 1536016-byte allocation
  
   : GC_CONCURRENT freed &lt;1K, 4% free 5498K/5696K, paused 75ms+14ms, total 156ms
  
   : GC_FOR_ALLOC freed &lt;1K, 4% free 5499K/5696K, paused 32ms, total 33ms
  
   : Grow heap (frag case) to 6.950MB for 1536016-byte allocation
  
   : GC_CONCURRENT freed &lt;1K, 3% free 6999K/7200K, paused 74ms+17ms, total 156ms
   : D/dalvikvm(1813): GC_FOR_ALLOC freed &lt;1K, 3% free 6999K/7200K, paused 46ms, total 47ms
   : I/dalvikvm-heap(1813): Grow heap (frag case) to 8.416MB for 1536016-byte allocation
   : GC_CONCURRENT freed &lt;1K, 3% free 8499K/8704K, paused 79ms+4ms, total 173ms
   : GC_FOR_ALLOC freed &lt;1K, 3% free 10001K/10208K, paused 33ms, total 34ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 11501K/11712K, paused 35ms, total 35ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 13002K/13216K, paused 38ms, total 38ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 14503K/14720K, paused 35ms, total 36ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 16003K/16224K, paused 39ms, total 40ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 17504K/17728K, paused 41ms, total 41ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 19004K/19232K, paused 42ms, total 43ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 20505K/20736K, paused 58ms, total 58ms
   : GC_FOR_ALLOC freed &lt;1K, 2% free 22006K/22240K, paused 137ms, total 138ms
   : GC_FOR_ALLOC freed &lt;1K, 1% free 23506K/23744K, paused 47ms, total 47ms
   : GC_FOR_ALLOC freed &lt;1K, 1% free 25007K/25248K, paused 48ms, total 48ms
   : GC_FOR_ALLOC freed &lt;1K, 1% free 26507K/26752K, paused 50ms, total 51ms
   : GC_FOR_ALLOC freed &lt;1K, 1% free 28008K/28256K, paused 56ms, total 57ms
   : GC_FOR_ALLOC freed &lt;1K, 1% free 29509K/29760K, paused 58ms, total 58ms
   : Clamp target GC heap from 32.398MB to 32.000MB
   : GC_FOR_ALLOC freed &lt;1K, 1% free 31009K/31264K, paused 57ms, total 58ms
   : Clamp target GC heap from 33.863MB to 32.000MB
   : GC_FOR_ALLOC freed &lt;1K, 1% free 32510K/32768K, paused 56ms, total 56ms
   : Forcing collection of SoftReferences for 1536016-byte allocation
   :Clamp target GC heap from 33.855MB to 32.000MB
   : GC_BEFORE_OOM freed 9K, 1% free 32500K/32768K, paused 87ms, total 88ms
   : Out of memory on a 1536016-byte allocation.
   : "main" prio=5 tid=1 RUNNABLE
   :   | group="main" sCount=0 dsCount=0 obj=0x40a729a0 self=0x2a00bba8
   :   | sysTid=1813 nice=0 sched=0/0 cgrp=apps handle=1073849308
   :   | state=R schedstat=( 3245039730 1438341923 288 ) utm=275 stm=49 core=0
   :   at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
   :   at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
   :   at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
   :   at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
   :   at android.content.res.Resources.loadDrawable(Resources.java:1965)
   :   at android.content.res.Resources.getDrawable(Resources.java:660)
   :   at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
   :   at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:885)
   :   at android.graphics.drawable.Drawable.createFromXml(Drawable.java:822)
   :   at android.content.res.Resources.loadDrawable(Resources.java:1950)
   :   at android.content.res.Resources.getDrawable(Resources.java:660)
   :   at android.view.View.setBackgroundResource(View.java:14468)
   :   at com.example.appthree.MainActivity.onCreate(MainActivity.java:15)
   :   at android.app.Activity.performCreate(Activity.java:5104)
   :   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
   :   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
   :   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
   :   at android.app.ActivityThread.access$600(ActivityThread.java:141)
   :   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
   :   at android.os.Handler.dispatchMessage(Handler.java:99)
   :   at android.os.Looper.loop(Looper.java:137)
   :   at android.app.ActivityThread.main(ActivityThread.java:5041)
   :   at java.lang.reflect.Method.invokeNative(Native Method)
   :   at java.lang.reflect.Method.invoke(Method.java:511)
   :   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
   :   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
   :   at dalvik.system.NativeStart.main(Native Method)
   : --- decoder-&gt;decode returned false
   : Shutting down VM
   : threadid=1: thread exiting with uncaught exception (group=0x40a71930)
   : FATAL EXCEPTION: main
   : java.lang.OutOfMemoryError
   :  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
   :  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502)
   :  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355)
   :  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
   :  at android.content.res.Resources.loadDrawable(Resources.java:1965)
   :  at android.content.res.Resources.getDrawable(Resources.java:660)
   :  at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
   :  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:885)
   :  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:822)
   :  at android.content.res.Resources.loadDrawable(Resources.java:1950)
   :  at android.content.res.Resources.getDrawable(Resources.java:660)
   :  at android.view.View.setBackgroundResource(View.java:14468)
   :  at com.example.appthree.MainActivity.onCreate(MainActivity.java:15)
   :  at android.app.Activity.performCreate(Activity.java:5104)
   :  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
   :  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
   :  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
   :  at android.app.ActivityThread.access$600(ActivityThread.java:141)
   :  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
   :  at android.os.Handler.dispatchMessage(Handler.java:99)
   :  at android.os.Looper.loop(Looper.java:137)
   :  at android.app.ActivityThread.main(ActivityThread.java:5041)
   :  at java.lang.reflect.Method.invokeNative(Native Method)
   :  at java.lang.reflect.Method.invoke(Method.java:511)
   :  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
   :  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
   :  at dalvik.system.NativeStart.main(Native Method)
   : GC_CONCURRENT freed 30038K, 93% free 2539K/32768K, paused 73ms+97ms, total 472ms
  </code></pre>