Android动画问题

时间:2012-06-24 16:58:07

标签: java android animation translate-animation

我对Android中的动画有几个问题。这就是我所处的情况。我有3个布局(顶部,中部和底部),但只有一个是可见的(中间一个)。每隔2秒我需要为这三个布局设置动画,使底部一个成为中间,中间一个成为顶部。正在进行一种自动收报机动画(底部布局“推出”顶部,中间布局成为顶部布局)。

这是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<include 
    layout="@layout/ticker_row"
    android:id="@+id/ticker_item_top"
    android:layout_centerVertical="true"

    />
<include 
    layout="@layout/ticker_row"
    android:id="@+id/ticker_item_middle"
    />
<include 
    layout="@layout/ticker_row"
    android:id="@+id/ticker_item_bottom"
    android:layout_centerVertical="true"
    />
</RelativeLayout>

BTW:我以编程方式使用填充和重力将布局设置为正确的位置(没有找到任何其他解决方案):

itemTop.setGravity(Gravity.TOP);
itemTop.setPadding(0, -30, 0, 0);
itemMiddle.setGravity(Gravity.CENTER);      
itemBottom.setGravity(Gravity.BOTTOM);
itemBottom.setPadding(0, 60, 0, 0);

所以我在片段中有3个布局。只有一个可见(中间一个)。当我为它们制作动画并且底部变为中间时,它不会被完全绘制(仅在第一个位置可见的部分)。这是我的动画:

Animation animation = new TranslateAnimation
            (Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
            Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -0.75f);
animation.setFillAfter(true);
animation.setDuration(500);
animation.setAnimationListener(animListener);
animation.setInterpolator(new AccelerateInterpolator(1.0f));

itemTop.startAnimation(animation);
itemMiddle.startAnimation(animation);
itemBottom.startAnimation(animation);

我尝试在布局上使用refreshDrawableStateinvalidate方法,但它没有帮助。

我得到的第二个问题是如何在动画后改变布局的位置?它是我想要它的当场,但如果我再次运行动画,它将从它使用的地方动画布局,而不是它现在的那个。我尝试过使用item.layout方法,但我不确定应该放哪些参数。

我希望我能够很好地解释我的情况,但如果还有任何问题,我会很乐意回答。

干杯,

马里奥

0 个答案:

没有答案