Set Animated .GIF As Background Android -


i new android , having trouble playing animated .gif file in background of layout. when run application background single frame of animated .gif, picture. have done research in 2 areas:

the link below got help.

android os beginning blogspot

the link below makes me think errors receiving have classes being set private, public, or protected.

java forums

and here's code -------------------------------------------------------------------------------------------------------------------

errors denoted :: error # :: full descriptions below 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();  } } 

:: errors list :: errors list :: errors list :: errors list :: errors list :: errors list ::

:: error 1 :: constructor mygifview() not visible

:: error 2 :: implicit super constructor view() undefined visible constructor

:: error 3 :: return type method missing

:: error 4 :: constructor call must first statement in constructor

.

.

---------- update --------- update ------------ update --------------- update ------------- update ---------- update --------- update ------------ update --------------- update ------------- update --------- update

.

.

i have created animation list = res/drawable-hdpi/progress_animation.xml

<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="false"> <item android:drawable="@drawable/frame02" android:duration="50" /> <item android:drawable="@drawable/frame03" android:duration="50" /> <item android:drawable="@drawable/frame04" android:duration="50" /> <item android:drawable="@drawable/frame05" android:duration="50" /> <item android:drawable="@drawable/frame06" android:duration="50" /> <item android:drawable="@drawable/frame07" android:duration="50" /> <item android:drawable="@drawable/frame08" android:duration="50" /> <item android:drawable="@drawable/frame09" android:duration="50" /> <item android:drawable="@drawable/frame10" android:duration="50" /> ......................................... <item android:drawable="@drawable/frame57" android:duration="50" /> <item android:drawable="@drawable/frame58" android:duration="50" /> </animation-list> 

.

.

i have created layout file host image view = res/layout/activity_main.xml

<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" >  <imageview android:id="@+id/swing_play" android:layout_width="fill_parent"     android:layout_height="wrap_content" />  </relativelayout> 

.

java class activity call imageview , animationdrawable = com.example.apptwo/mainactivity.java

.

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(); }  } 

.

the ide not flag errors in code. however, when run application emulator displays white background message "unfortunately, apptwo has stopped."

the errorlog reads = "unhandled event loop exception"

logcat -----------------------------------------------------------------------------------------------------------------------------------

this session filter logcat

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 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 start activity componentinfo{com.example.apptwo/com.example.apptwo.mainactivity}: java.lang.nullpointerexception 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activitythread.performlaunchactivity(activitythread.java:2180) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activitythread.handlelaunchactivity(activitythread.java:2230) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activitythread.access$600(activitythread.java:141) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activitythread$h.handlemessage(activitythread.java:1234) 04-06 17:10:48.213: e/androidruntime(989):  @ android.os.handler.dispatchmessage(handler.java:99) 04-06 17:10:48.213: e/androidruntime(989):  @ android.os.looper.loop(looper.java:137) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activitythread.main(activitythread.java:5041) 04-06 17:10:48.213: e/androidruntime(989):  @ java.lang.reflect.method.invokenative(native method) 04-06 17:10:48.213: e/androidruntime(989):  @ java.lang.reflect.method.invoke(method.java:511) 04-06 17:10:48.213: e/androidruntime(989):  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793) 04-06 17:10:48.213: e/androidruntime(989):  @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560) 04-06 17:10:48.213: e/androidruntime(989):  @ 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):  @ com.example.apptwo.mainactivity.oncreate(mainactivity.java:14) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activity.performcreate(activity.java:5104) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080) 04-06 17:10:48.213: e/androidruntime(989):  @ android.app.activitythread.performlaunchactivity(activitythread.java:2144) 04-06 17:10:48.213: e/androidruntime(989):  ... 11 more 

there many logcat (all messages) post, 1 below seems important around time of error.

04-06 17:10:48.213: e/androidruntime(989): fatal exception: main 

.

update logcat content view included ! ! !

 : 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) 4.022mb 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 <1k, 5% free 3998k/4192k, paused 5ms+15ms, total 105ms   : d/dalvikvm(1813): gc_for_alloc freed <1k, 5% free 3998k/4192k, paused 36ms, total 37ms   : grow heap (frag case) 5.485mb 1536016-byte allocation   : gc_concurrent freed <1k, 4% free 5498k/5696k, paused 75ms+14ms, total 156ms   : gc_for_alloc freed <1k, 4% free 5499k/5696k, paused 32ms, total 33ms   : grow heap (frag case) 6.950mb 1536016-byte allocation   : gc_concurrent freed <1k, 3% free 6999k/7200k, paused 74ms+17ms, total 156ms  : d/dalvikvm(1813): gc_for_alloc freed <1k, 3% free 6999k/7200k, paused 46ms, total 47ms  : i/dalvikvm-heap(1813): grow heap (frag case) 8.416mb 1536016-byte allocation  : gc_concurrent freed <1k, 3% free 8499k/8704k, paused 79ms+4ms, total 173ms  : gc_for_alloc freed <1k, 3% free 10001k/10208k, paused 33ms, total 34ms  : gc_for_alloc freed <1k, 2% free 11501k/11712k, paused 35ms, total 35ms  : gc_for_alloc freed <1k, 2% free 13002k/13216k, paused 38ms, total 38ms  : gc_for_alloc freed <1k, 2% free 14503k/14720k, paused 35ms, total 36ms  : gc_for_alloc freed <1k, 2% free 16003k/16224k, paused 39ms, total 40ms  : gc_for_alloc freed <1k, 2% free 17504k/17728k, paused 41ms, total 41ms  : gc_for_alloc freed <1k, 2% free 19004k/19232k, paused 42ms, total 43ms  : gc_for_alloc freed <1k, 2% free 20505k/20736k, paused 58ms, total 58ms  : gc_for_alloc freed <1k, 2% free 22006k/22240k, paused 137ms, total 138ms  : gc_for_alloc freed <1k, 1% free 23506k/23744k, paused 47ms, total 47ms  : gc_for_alloc freed <1k, 1% free 25007k/25248k, paused 48ms, total 48ms  : gc_for_alloc freed <1k, 1% free 26507k/26752k, paused 50ms, total 51ms  : gc_for_alloc freed <1k, 1% free 28008k/28256k, paused 56ms, total 57ms  : gc_for_alloc freed <1k, 1% free 29509k/29760k, paused 58ms, total 58ms  : clamp target gc heap 32.398mb 32.000mb  : gc_for_alloc freed <1k, 1% free 31009k/31264k, paused 57ms, total 58ms  : clamp target gc heap 33.863mb 32.000mb  : gc_for_alloc freed <1k, 1% free 32510k/32768k, paused 56ms, total 56ms  : forcing collection of softreferences 1536016-byte allocation  :clamp target gc heap 33.855mb 32.000mb  : gc_before_oom freed 9k, 1% free 32500k/32768k, paused 87ms, total 88ms  : out of memory on 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  :   @ android.graphics.bitmapfactory.nativedecodeasset(native method)  :   @ android.graphics.bitmapfactory.decodestream(bitmapfactory.java:502)  :   @ android.graphics.bitmapfactory.decoderesourcestream(bitmapfactory.java:355)  :   @ android.graphics.drawable.drawable.createfromresourcestream(drawable.java:785)  :   @ android.content.res.resources.loaddrawable(resources.java:1965)  :   @ android.content.res.resources.getdrawable(resources.java:660)  :   @ android.graphics.drawable.animationdrawable.inflate(animationdrawable.java:282)  :   @ android.graphics.drawable.drawable.createfromxmlinner(drawable.java:885)  :   @ android.graphics.drawable.drawable.createfromxml(drawable.java:822)  :   @ android.content.res.resources.loaddrawable(resources.java:1950)  :   @ android.content.res.resources.getdrawable(resources.java:660)  :   @ android.view.view.setbackgroundresource(view.java:14468)  :   @ com.example.appthree.mainactivity.oncreate(mainactivity.java:15)  :   @ android.app.activity.performcreate(activity.java:5104)  :   @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080)  :   @ android.app.activitythread.performlaunchactivity(activitythread.java:2144)  :   @ android.app.activitythread.handlelaunchactivity(activitythread.java:2230)  :   @ android.app.activitythread.access$600(activitythread.java:141)  :   @ android.app.activitythread$h.handlemessage(activitythread.java:1234)  :   @ android.os.handler.dispatchmessage(handler.java:99)  :   @ android.os.looper.loop(looper.java:137)  :   @ android.app.activitythread.main(activitythread.java:5041)  :   @ java.lang.reflect.method.invokenative(native method)  :   @ java.lang.reflect.method.invoke(method.java:511)  :   @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793)  :   @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560)  :   @ dalvik.system.nativestart.main(native method)  : --- decoder->decode returned false  : shutting down vm  : threadid=1: thread exiting uncaught exception (group=0x40a71930)  : fatal exception: main  : java.lang.outofmemoryerror  :  @ android.graphics.bitmapfactory.nativedecodeasset(native method)  :  @ android.graphics.bitmapfactory.decodestream(bitmapfactory.java:502)  :  @ android.graphics.bitmapfactory.decoderesourcestream(bitmapfactory.java:355)  :  @ android.graphics.drawable.drawable.createfromresourcestream(drawable.java:785)  :  @ android.content.res.resources.loaddrawable(resources.java:1965)  :  @ android.content.res.resources.getdrawable(resources.java:660)  :  @ android.graphics.drawable.animationdrawable.inflate(animationdrawable.java:282)  :  @ android.graphics.drawable.drawable.createfromxmlinner(drawable.java:885)  :  @ android.graphics.drawable.drawable.createfromxml(drawable.java:822)  :  @ android.content.res.resources.loaddrawable(resources.java:1950)  :  @ android.content.res.resources.getdrawable(resources.java:660)  :  @ android.view.view.setbackgroundresource(view.java:14468)  :  @ com.example.appthree.mainactivity.oncreate(mainactivity.java:15)  :  @ android.app.activity.performcreate(activity.java:5104)  :  @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080)  :  @ android.app.activitythread.performlaunchactivity(activitythread.java:2144)  :  @ android.app.activitythread.handlelaunchactivity(activitythread.java:2230)  :  @ android.app.activitythread.access$600(activitythread.java:141)  :  @ android.app.activitythread$h.handlemessage(activitythread.java:1234)  :  @ android.os.handler.dispatchmessage(handler.java:99)  :  @ android.os.looper.loop(looper.java:137)  :  @ android.app.activitythread.main(activitythread.java:5041)  :  @ java.lang.reflect.method.invokenative(native method)  :  @ java.lang.reflect.method.invoke(method.java:511)  :  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793)  :  @ com.android.internal.os.zygoteinit.main(zygoteinit.java:560)  :  @ dalvik.system.nativestart.main(native method)  : gc_concurrent freed 30038k, 93% free 2539k/32768k, paused 73ms+97ms, total 472ms 

as martin says, android not support gifs. workaround, android offers animation list/animationdrawable. need convert gif individual frames [.png files]. use gimp conversion

original gif image

this gif can broken down frames:

gif frames in gimp

save them frame01.png, frame02.png, , on, , create animation-list xml file, say, progress_animation.xml

<animation-list android:id="@+id/selected" android:oneshot="false"> <item android:drawable="@drawable/frame01" android:duration="50" /> <item android:drawable="@drawable/frame02" android:duration="50" /> <item android:drawable="@drawable/frame03" android:duration="50" /> .... <item android:drawable="@drawable/framen" android:duration="50" /> 

to begin animation, need cast image animationdrawable, , call start() on it

animationdrawable progressanimation = (animationdrawable) yourimageview.getbackground(); progressanimation.start(); 

Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -