【发布时间】: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