使用android动画列表

tie*_*er1 17 animation android

我在使用动画加载微调器来处理启动页面时遇到了一些麻烦.当我尝试运行以下代码时,没有显示任何内容.有什么建议?似乎有不少人在谷歌上有这个问题,但我不明白为什么我的工作失败了.谢谢!

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>
Run Code Online (Sandbox Code Playgroud)

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();
}
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

tie*_*er1 24

解决了我自己的问题,你无法在oncreate中启动动画.它必须在onclick监听器中或在runnable内.

  • 但我的工作是oncreate,但不是onclick. (5认同)
  • 根据http://developer.android.com/guide/topics/graphics/drawable-animation.html,你永远不应该在onCreate()上调用它. (4认同)

Mik*_*ell 18

我认为最优雅和多功能的选项是从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();
             }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

loader.xml位于drawable文件夹中:

<?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>
Run Code Online (Sandbox Code Playgroud)

现在在您的视图中包含一些简单的内容:

<com.yourpackage.Loader
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)

  • 这是一个好主意.这是我在阅读之前的想法.我所做的是更进一步从src属性获取动画,这样你就可以直接从xml布局放置你想要的任何动画,而MainActivity中不需要任何代码. (4认同)

djc*_*ron 5

你可以animationonWindowFocusChanged(boolean hasFocus)方法开始/开始.