设置动画后,Imageview属性丢失

时间:2016-04-11 15:17:37

标签: android animation background-image

我正在尝试将帧动画设置为Imageview。

imageAnim =  (ImageView) rootView.findViewById(R.id.orderCards);
imageAnim.setBackgroundResource(R.drawable.image_switcher_anim);
imageAnim.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.MATCH_PARENT));
anim = (AnimationDrawable) imageAnim.getBackground();
anim.start();

所有图像视图属性(如高度宽度,比例类型)都将丢失。 我知道这是因为将动画设置为背景资源而且图像将在没有scaletype的情况下显示。

我看到两种可能性 有没有办法设置动画而不将其设置为背景以避免此问题? 要么 可以为图像背景设置高度宽度等属性。

2 个答案:

答案 0 :(得分:0)

试试这个:

imageAnim.invalidateDrawable(anim);

这将重绘图像视图。

答案 1 :(得分:0)

我在另一个链接上找到了答案 Android animation with multiple jpeg files?

我们需要在anim文件夹中设置动画文件,将其设置为imageview的源,getdrawable而不是getResourceBackground并将其分配给animationDrawable并启动动画。这样就可以保持imageview的所有布局属性。

xml代码

<ImageView android:id="@+id/orderCards
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="fitCenter"
            android:adjustViewBounds="true"
            android:src="@anim/image_switcher_anim"/>

Java代码

imageAnim = (ImageView) rootView.findViewById(R.id.orderCards);
                anim = (AnimationDrawable) imageAnim.getDrawable();
                imageAnim.post(run);

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