框架动画有透明背景

时间:2014-08-04 11:36:27

标签: android animation

我想像进度条一样使用动画。

我有xml文件prog_drawable.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/progress01"
    android:duration="100"/>
<item
    android:drawable="@drawable/progress02"
    android:duration="100"/>
<item
    android:drawable="@drawable/progress03"
    android:duration="100"/>
<item
    android:drawable="@drawable/progress04"
    android:duration="100"/>
<item
    android:drawable="@drawable/progress05"
    android:duration="100"/>
</animation-list>

文件progress0x.png看起来像这样(例如)

png with transparent background

此文件中的背景是透明的。

在活动的布局xml我有imageview

<RelativeLayout
    android:id="@+id/loadingPanel"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/tv_logo2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <ImageView
        android:id="@+id/iv_pb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tv_logo2"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:background="@android:color/transparent"
        android:contentDescription="@string/app_name" />
</RelativeLayout>

然后在java文件中

AnimationDrawable ad;
ImageView iv_pb;
...
iv_pb = (ImageView)findViewById(R.id.iv_pb);
iv_pb.setBackgroundResource(R.drawable.prog_drawable);

ad = (AnimationDrawable)iv_pb.getBackground();
ad.start();

当我启动我的应用程序时,我看到了这个动画,但是背景为黑色。我怎样才能获得透明的背景?

1 个答案:

答案 0 :(得分:3)

即使您将android:background="@android:color/transparent"设置为ImageView透明背景,但调用iv_pb.setBackgroundResource(R.drawable.prog_drawable);会覆盖此设置,导致您的动画可绘制设置为新背景。

因此,最终您需要在图像文件中实现透明度。确保所有文件都在.png中,背景设置为透明。