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.
the link below makes me think errors receiving have classes being set private, public, or protected.
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

this gif can broken down frames:

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
Post a Comment