使用androidanimation列表

我有一个小麻烦让一个animation加载微调工作的飞溅页面。 当我尝试运行下面的代码时什么也没有显示。 有什么build议么? 似乎有不less人在谷歌上有这个问题,但我不明白为什么我的工作没有成功。 谢谢!

animationloader.xml

<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/loadingspinner1" android:duration="200" /> <item android:drawable="@drawable/loadingspinner2" android:duration="200" /> <item android:drawable="@drawable/loadingspinner3" android:duration="200" /> <item android:drawable="@drawable/loadingspinner4" android:duration="200" /> <item android:drawable="@drawable/loadingspinner5" android:duration="200" /> <item android:drawable="@drawable/loadingspinner6" android:duration="200" /> <item android:drawable="@drawable/loadingspinner7" android:duration="200" /> <item android:drawable="@drawable/loadingspinner8" android:duration="200" /> <item android:drawable="@drawable/loadingspinner9" android:duration="200" /> <item android:drawable="@drawable/loadingspinner01" android:duration="200" /> <item android:drawable="@drawable/loadingspinner11" android:duration="200" /> <item android:drawable="@drawable/loadingspinner12" android:duration="200" /> </animation-list> 

SplashScreen.java

 package com.secure.inmatecanteen; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.widget.ImageView; public class SplashScreen extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splashscreen); //Beginning the loading animation as we attempt to verify registration with SIP ImageView ivLoader = (ImageView) findViewById(R.id.IVloadinganimation); ivLoader.setBackgroundResource(R.anim.animationloader); AnimationDrawable frameAnimation = (AnimationDrawable) ivLoader.getBackground(); frameAnimation.start(); } } 

splashscreen.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:background="@android:color/white" > <ImageView android:id="@+id/iclogo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/iclogo" android:adjustViewBounds="true" /> <ImageView android:id="@+id/IVloadinganimation" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:adjustViewBounds="true" /> </LinearLayout> 

Solutions Collecting From Web of "使用androidanimation列表"

解决了我自己的问题,你不能在创buildanimation。 它必须位于onclick监听器或可运行的内部。

我认为最优雅和多function的select是从ImageView类扩展:

 public class Loader extends ImageView { public Loader(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public Loader(Context context, AttributeSet attrs) { super(context, attrs); init(); } public Loader(Context context) { super(context); init(); } private void init() { setBackgroundResource(R.drawable.loader); final AnimationDrawable frameAnimation = (AnimationDrawable) getBackground(); post(new Runnable(){ public void run(){ frameAnimation.start(); } }); } } 

位于可绘制文件夹中的loader.xml:

 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/loader_1" android:duration="50" /> <item android:drawable="@drawable/loader_2" android:duration="50" /> <item android:drawable="@drawable/loader_3" android:duration="50" /> <item android:drawable="@drawable/loader_4" android:duration="50" /> ..... </animation-list> 

现在在你的观点中包括这样简单的东西:

 <com.yourpackage.Loader android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

您可以从onWindowFocusChanged(boolean hasFocus)方法播放/启动animation

在这个处理程序中animation没有完全附加到窗口,所以animation无法启动; 相反,这通常是由于用户操作(例如按下button)或onWindowFocusChangedhandler

请参考: 专业的android 4应用程序开发

不要在xml代码中设置图像资源。

我的XML是:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:gravity="center" android:keepScreenOn="true" android:id="@+id/splashLayout" android:background="@color/colorPrimary" android:layout_height="match_parent"> <ImageView android:layout_width="230dp" android:layout_height="230dp" android:id="@+id/iv_splash" android:layout_marginTop="-80dp" android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> </RelativeLayout> 

在活动我做

 public class SplashActivity extends Activity { ImageView iv_splash; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); iv_splash=(ImageView)findViewById(R.id.iv_splash); iv_splash.setBackgroundResource(R.drawable.splash); final AnimationDrawable progressAnimation =(AnimationDrawable)iv_splash.getBackground(); progressAnimation.start(); } } 

可绘制的文件

 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/logo" android:duration="400"/> <item android:drawable="@drawable/logo1" android:duration="400"/> </animation-list> 

这是工作好:)