设置动画。GIF作为背景的Android [英] Set Animated .GIF As Background Android
问题描述
我是新来的Android,我无法播放动画的.gif文件在我的布局的背景。当我运行该应用程序的背景是动画.gif注意的单帧,就像一张照片。我已经做的研究主要在两个方面:
下面的链接是在那里我得到了最大的帮助。
下面的链接让我觉得,我收到有事情做与类的错误被设置为私有,公有或保护。
和这里的code -------------------------------------------------------------------------------------------------------------------
错误是::错误#::表示与下面的code完整描述。
进口的java.io.InputStream;
进口android.os.Bundle;
进口android.app.Activity;
进口android.graphics.Canvas;
进口android.graphics.Color;
进口android.graphics.Movie;
进口android.view.Menu;
进口android.view.View;
公共类MainActivity延伸活动{
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(新MYGIFView()); ::错误1 ::
}
}
私有类MYGIFView扩展视图{::错误2 ::
电影的电影,MOVIE1;
InputStream的是= NULL,IS1 = NULL;
长moviestart;
公共GIFView(上下文的背景下){::错误3 ::
超(上下文); ::错误4 ::
,是= context.getResources()openRawResource(R.drawable.swing);
电影= Movie.de codeStream(是);
}
@覆盖
保护无效的OnDraw(帆布油画){
canvas.drawColor(Color.WHITE);
super.onDraw(画布);
长今= android.os.SystemClock.uptimeMillis();
的System.out.println(今=+现);
如果(moviestart == 0){//第一次
moviestart =现在;
}
的System.out.println(\ tmoviestart =+ moviestart);
INT reltime指示=(INT)((现 - moviestart)%movie.duration());
的System.out.println(时间=加入+ reltime +\ treltime =+ movie.duration());
movie.setTime(reltime指示);
movie.draw(帆布,this.getWidth()/ 2-20,this.getHeight()/ 2-40);
this.invalidate();
}
}
::错误列表::错误列表::错误列表::错误列表::错误列表::错误列表::
::错误1 ::构造MYGIFView()是不可见的。
::错误2 ::隐超级构造视图()是未定义可见构造
::错误3 ::返回类型的方法是缺少
::错误4 ::构造函数的调用必须在构造函数的第一条语句
---------- ---------更新更新------------ UPDATE ------------- - 更新-------------更新---------- ---------更新更新------------ UPDATE --------------- UPDATE -------------更新---------更新
我已经创建了动画列表= RES /绘制,华电国际/ progress_animation.xml
< XML版本=1.0编码=UTF-8&GT?;
<动画列表的xmlns:机器人=http://schemas.android.com/apk/res/android机器人:ID =@ + ID /选择机器人:单稳=假>
<项目机器人:可绘制=@可绘制/ frame02机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame03机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame04机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame05机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame06机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame07机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame08机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame09机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame10机器人:时间=50/>
.........................................
<项目机器人:可绘制=@可绘制/ frame57机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame58机器人:时间=50/>
< /动画列表>
我创建的布局文件来承载图像视图= RES /布局/ activity_main.xml
< RelativeLayout的的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:以下属性来=@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
工具:上下文=MainActivity。>
< ImageView的机器人:ID =@ + ID / swing_play机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT/>
< / RelativeLayout的>
Java的类活动来调用的ImageView和AnimationDrawable = com.example.apptwo / MainActivity.java
包com.exampleone.apptwo;
进口android.os.Bundle;
进口android.app.Activity;
进口android.graphics.drawable.AnimationDrawable;
进口android.view.Menu;
进口android.widget.ImageView;
公共类MainActivity延伸活动{
@覆盖
保护无效的onCreate(包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();
}
}
IDE将不会标记任何错误在code。然而,当我运行应用程序我的仿真器将显示一个白色的背景信息不幸的是,AppTwo已经停止了。
错误日志读取=未处理的事件循环异常
logcat的-----------------------------------------------------------------------------------------------------------------------------------
这是会话过滤器的logcat
04-06 17:10:48.193:D / AndroidRuntime(989):关闭虚拟机
04-06 17:10:48.193:W / dalvikvm(989):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40a71930)
04-06 17:10:48.213:E / AndroidRuntime(989):致命异常:主要
04-06 17:10:48.213:E / AndroidRuntime(989):java.lang.RuntimeException的:无法启动的活动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(本机方法)
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(本机方法)
04-06 17:10:48.213:E / AndroidRuntime(989):由:显示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 ...更多
有太多的LogCat中(所有消息)发布,但是这一次下面似乎是围绕错误的时间很重要。
04-06 17:10:48.213:E / AndroidRuntime(989):致命异常:主要
更新到logcat的与内容视图包含! ! !
:错误打开跟踪文件:没有这样的文件或目录(2)
:GC_FOR_ALLOC释放67K,7%免费2500K / 2688K,暂停49ms,共54ms
:I / dalvikvm堆(1813):成长堆(破片的情况下),以4.022MB为1536016字节分配
:D / dalvikvm(1813):GC_FOR_ALLOC释放2K,5%的游离3998K / 4192K,暂停125ms的,共有125毫秒
:D / dalvikvm(1813):GC_CONCURRENT释放< 1K,5%的游离3998K / 4192K,暂停为5ms + 15毫秒,总105ms
:D / dalvikvm(1813):GC_FOR_ALLOC释放< 1K,5%的游离3998K / 4192K,暂停36ms,共37ms
:成长堆(破片的情况下),以5.485MB为1536016字节分配
:GC_CONCURRENT释放< 1K,4%的自由5498K / 5696K,暂停75ms + 14毫秒,总156ms
:GC_FOR_ALLOC释放< 1K,4%的自由5499K / 5696K,暂停为32ms,共为33ms
:成长堆(破片的情况下),以6.950MB为1536016字节分配
:GC_CONCURRENT释放< 1K,3%的自由6999K / 7200K,暂停74ms + 17MS,总156ms
:D / dalvikvm(1813):GC_FOR_ALLOC释放< 1K,3%的自由6999K / 7200K,暂停46ms,共47ms
:I / dalvikvm堆(1813):成长堆(破片的情况下),以8.416MB为1536016字节分配
:GC_CONCURRENT释放< 1K,3%的自由8499K / 8704K,暂停79ms + 4ms的,总173ms
:GC_FOR_ALLOC释放< 1K,免费10001K / 10208K 3%,暂停为33ms,共34ms
:GC_FOR_ALLOC释放< 1K,免费11501K / 11712K 2%,暂停为35ms,共为35ms
:GC_FOR_ALLOC释放< 1K,免费13002K / 13216K 2%,暂停38ms,共38ms
:GC_FOR_ALLOC释放< 1K,免费14503K / 14720K 2%,暂停为35ms,共36ms
:GC_FOR_ALLOC释放< 1K,免费16003K / 16224K 2%,暂停39MS,共有40毫秒
:GC_FOR_ALLOC释放< 1K,免费17504K / 17728K 2%,暂停41ms,共41ms
:GC_FOR_ALLOC释放< 1K,免费19004K / 19232K 2%,暂停42ms,共43ms
:GC_FOR_ALLOC释放< 1K,免费20505K / 20736K 2%,暂停58ms,共58ms
:GC_FOR_ALLOC释放< 1K,免费22006K / 22240K 2%,暂停137ms,总138ms
:GC_FOR_ALLOC释放< 1K,免费23506K / 23744K 1%,暂停47ms,共47ms
:GC_FOR_ALLOC释放< 1K,免费25007K / 25248K 1%,暂停过48ms,总过48ms
:GC_FOR_ALLOC释放< 1K,免费26507K / 26752K 1%,暂停50毫秒,总51ms
:GC_FOR_ALLOC释放< 1K,免费28008K / 28256K 1%,暂停56MS,总57ms
:GC_FOR_ALLOC释放< 1K,免费29509K / 29760K 1%,暂停58ms,共58ms
:钳目标GC堆从32.398MB为32.000MB
:GC_FOR_ALLOC释放< 1K,免费31009K / 31264K 1%,暂停57ms,共58ms
:钳目标GC堆从33.863MB为32.000MB
:GC_FOR_ALLOC释放< 1K,免费32510K / 32768K 1%,暂停56MS,总56MS
:强制征收SoftReferences为1536016字节分配
:钳目标GC堆从33.855MB为32.000MB
:GC_BEFORE_OOM释放9K,1%的自由32500K / 32768K,暂停87ms,共88ms
:内存在1536016字节分配。
:主PRIO = 5 TID = 1 RUNNABLE
:|组=主SCOUNT = 0 dsCount = 0的obj = 0x40a729a0自我= 0x2a00bba8
:| sysTid = 1813漂亮= 0 sched的= 0/0 CGRP =应用程序处理= 1073849308
:|状态= R schedstat =(3245039730 1438341923 288)UTM = 275 STM = 49核心= 0
:在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
:在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:502)
:在android.graphics.BitmapFactory.de codeResourceStream(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(本机方法)
:在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(本机方法)
:---德codeR->德code返回false
:关闭虚拟机
:主题ID = 1:螺纹退出与未捕获的异常(组= 0x40a71930)
:致命异常:主要
:java.lang.OutOfMemoryError
:在android.graphics.BitmapFactory.nativeDe $ C $检测板(本机方法)
:在android.graphics.BitmapFactory.de codeStream(BitmapFactory.java:502)
:在android.graphics.BitmapFactory.de codeResourceStream(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(本机方法)
:在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(本机方法)
:GC_CONCURRENT释放30038K,93%免费2539K / 32768K,暂停73ms + 97ms,总472ms
正如马丁说,Android不支持GIF格式。作为一种变通方法,Android提供了<一href="http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html">Animation列表/ AnimationDrawable 。您需要将GIF转换成单独的帧[.png文件。我用GIMP进行转换
这GIF可以被分解成框架:
保存它们作为frame01.png,frame02.png等,并创建一个动画列表的XML文件,比方说,progress_animation.xml
&LT;动画列表机器人:ID =@ + ID /选择机器人:单稳=假&GT;
&LT;项目机器人:可绘制=@可绘制/ frame01机器人:时间=50/&GT;
&LT;项目机器人:可绘制=@可绘制/ frame02机器人:时间=50/&GT;
&LT;项目机器人:可绘制=@可绘制/ frame03机器人:时间=50/&GT;
....
&LT;项目机器人:可绘制=@可绘制/ frameN机器人:时间=50/&GT;
要开始动画,你需要将图像转换为一个AnimationDrawable,并调用start()就可以了。
AnimationDrawable progressAnimation =(AnimationDrawable)yourImageView.getBackground();
progressAnimation.start();
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:
The link below is where I got the most help.
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.
And Here's The Code -------------------------------------------------------------------------------------------------------------------
Errors are denoted by :: ERROR # :: with full descriptions below the 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 :: The constructor MYGIFView() is not visible
:: ERROR 2 :: Implicit Super Constructor View() is undefined for visible constructor
:: ERROR 3 :: Return type for the method is missing
:: ERROR 4 :: Constructor call must be the first statement in a constructor
.
.
---------- UPDATE --------- UPDATE ------------ UPDATE --------------- UPDATE ------------- UPDATE ---------- UPDATE --------- UPDATE ------------ UPDATE --------------- UPDATE ------------- UPDATE --------- UPDATE
.
.
I have created the 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 to host the 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 to call ImageView and 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 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."
The ErrorLog reads = "Unhandled Event Loop Exception"
LOGCAT -----------------------------------------------------------------------------------------------------------------------------------
This is the 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 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
There are too many LogCat (all messages) to post, but this one below seems to be important around the time of the error.
04-06 17:10:48.213: E/AndroidRuntime(989): FATAL EXCEPTION: main
.
UPDATE TO LOGCAT WITH 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) 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 <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) to 5.485MB for 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) to 6.950MB for 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) to 8.416MB for 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 from 32.398MB to 32.000MB
: GC_FOR_ALLOC freed <1K, 1% free 31009K/31264K, paused 57ms, total 58ms
: Clamp target GC heap from 33.863MB to 32.000MB
: GC_FOR_ALLOC freed <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->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
As Martin says, Android does not support GIFs. As a workaround, Android offers Animation List/AnimationDrawable. You will need to convert the GIF into individual frames [.png files]. I use GIMP for the conversion
This GIF can be broken down into its frames:
Save them as frame01.png, frame02.png, and so on, and create an 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 the animation, you need to cast the image to an AnimationDrawable, and call start() on it
AnimationDrawable progressAnimation = (AnimationDrawable) yourImageView.getBackground();
progressAnimation.start();
这篇关于设置动画。GIF作为背景的Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!