设置动画。GIF作为背景的​​Andr​​oid背景、动画、oid、GIF

2023-09-04 04:21:06 作者:梦里梦不出梦里的梦°

我是新来的Andr​​oid,我无法播放动画的.gif文件在我的布局的背景。当我运行该应用程序的背景是动画.gif注意的单帧,就像一张照片。我已经做的研究主要在两个方面:

下面的链接是在那里我得到了最大的帮助。

Android操作系统开始的BlogSpot

下面的链接让我觉得,我收到有事情做与类的错误被设置为私有,公有或保护。

的Java论坛

和这里的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:机器人=htt​​p://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:机器人=htt​​p://schemas.android.com/apk/res/android
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:paddingBottom会=@扪/ activity_vertical_margin
机器人:以下属性来=@扪/ activity_horizo​​ntal_margin
机器人:paddingRight =@扪/ activity_horizo​​ntal_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提供了Animation列表/ AnimationDrawable 。您需要将GIF转换成单独的帧[.png文件。我用GIMP进行转换

这GIF可以被分解成框架:

保存它们作为frame01.png,frame02.png等,并创建一个动画列表的XML文件,比方说,progress_animation.xml

 <动画列表机器人:ID =@ + ID /选择机器人:单稳=假>
<项目机器人:可绘制=@可绘制/ frame01机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame02机器人:时间=50/>
<项目机器人:可绘制=@可绘制/ frame03机器人:时间=50/>
....
<项目机器人:可绘制=@可绘制/ frameN机器人:时间=50/>
 

要开始动画,你需要将图像转换为一个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.

Android OS Beginning BlogSpot

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.

Java Forums

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