【问题标题】:I have a loader animation but , sometimes it doesn't start the animation我有一个加载器动画,但有时它不会启动动画
【发布时间】:2014-08-14 13:04:51
【问题描述】:

我有这个 ImageView 用作加载器:

    <ImageView
    android:id="@+id/loader_container"
    android:layout_width="@dimen/loader_size"
    android:layout_height="@dimen/loader_size"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="@dimen/loader_bottom_offset"
    android:visibility="invisible" />

我的 Utils 类中有一个静态方法可以执行此操作:

public static void setLoaderVisible(ImageView loader){

    loader.setVisibility(View.VISIBLE);
    loader.setBackgroundResource(R.drawable.loading_animation);
    loader.bringToFront();
    AnimationDrawable anim = (AnimationDrawable) loader.getBackground();
    anim.setOneShot(false);
    anim.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/bus1" android:duration="200" />
    <item android:drawable="@drawable/bus2" android:duration="200" />
    <item android:drawable="@drawable/bus3" android:duration="200" />
    <item android:drawable="@drawable/bus4" android:duration="200" />
</animation-list>

编辑:我确实尝试过使用帖子,如下所示:

public static void setLoaderVisible(ImageView loader)
{ 
loader.setImageResource(R.drawable.loading_animation);
loader.setVisibility(View.VISIBLE);
loader.bringToFront();

final AnimationDrawable anim = (AnimationDrawable) loader.getDrawable();
loader.post(new Runnable() {

    @Override 
    public void run() { 
        anim.start();
    } 
}); 
} 

还尝试使用此处找到的 AnimatedImageView 类:AnimationDrawable not playing 但仍然是同样的问题。

我注意到动画几乎适用于我所有的课程。我有一个包含片段的活动,并且加载程序没有动画。尝试将加载器放在片段内和活动内,但结果是一样的。有什么想法吗?

【问题讨论】:

    标签: android animation android-animation loading android-drawable


    【解决方案1】:

    如果可行,请尝试以下方法,

    public static void setLoaderVisible(ImageView loader)
    {
        loader.setImageResource(R.drawable.loading_animation);
        loader.setVisibility(View.VISIBLE);
        loader.bringToFront();
    
        final AnimationDrawable anim = (AnimationDrawable) loader.getDrawable();
        loader.post(new Runnable() {
    
            @Override
            public void run() {
                anim.start();
            }
        });
    }
    

    【讨论】:

    • 试过了,还是同样的问题,在另一篇文章中发现了一个修改后的 ImageView,叫做 AnimatedImageView ,现在正在尝试那个,但问题仍然存在。可能是因为应用在主线程上做了很多事情?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2022-08-11
    • 2021-10-31
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多