在动画运行之后,如何才能显示ImageView?

时间:2011-04-13 01:37:34

标签: android animation

我的活动是一个空白屏幕,除了一个将其重力设置为居中的ImageView对象。然后在我的res \ anim目录中,我为该图像设置动画,基本上将其从屏幕底部移动到中心(上升),使用。我想弄清楚的是如何使用空白屏幕加载活动,直到动画完成并且图像居中后才显示ImageView。现在发生的是屏幕显示图像已经在中心,然后动画接管并从下到上移动它。在显示ImageView之前,如何让动画首先发生?

编辑...请参阅以下新的/相关问题:

好的,.setVisibilty正常工作(感谢您的帮助),但它引发了我另一个问题。在我的此活动的xml布局文件中,我只有2个对象,屏幕顶部的TextView(使用LinearLayout),然后是设置为的ImageView:

    <LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center">

    <ImageView android:id="@+id/Image01"
        android:src="@drawable/image_01"
        android:layout_height="150dp"
        android:layout_width="200dp"
        android:paddingTop="10px"
        >
    </ImageView>

    </LinearLayout>

这会使图像死于屏幕中心。我想让动画做的是让图像从屏幕底部上升到中心。问题是,即使我在onCreate中有.setVisibility to INVISIBLE,然后在我开始动画后设置为VISIBLE,它仍然会在屏幕的死点闪烁图像(大约半秒钟),然后立即掉落到底部并上升到中心。这看起来很草率。如何让图像永远显示,直到出现在底部然后上升到中心?我恳求具体细节,因为我刚刚开始使用java和xml。

最终编辑......

没关系,这似乎只发生在模拟器中。它在手机上工作正常。

感谢大家的帮助。

2 个答案:

答案 0 :(得分:3)

通过将android:visibility属性设置为invisible,或使用setVisibility()中的onCreate(),确保您的图片在活动开始时不可见。

然后启动动画并一次调用setVisibility(View.VISIBLE):

image.startAnimation(...);
image.setVisibility(View.VISIBLE);

答案 1 :(得分:2)

我想你想看看theImageView.setVisibility(View.INVISIBLE)

您可以使用AnimationListener获取有关动画正在做什么的信息(如果已完成)。

AnimationListener将具有以下内容:

AnimationListener a_to_b = new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {
                // Do something 
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // Do something         
            }
        };

你设置它:

Animation ani = AnimationUtils.loadAnimation(this, R.anim.ani);

ani.setAnimationListener(a_to_b);

希望这有帮助