我的活动是一个空白屏幕,除了一个将其重力设置为居中的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。
最终编辑......
没关系,这似乎只发生在模拟器中。它在手机上工作正常。
感谢大家的帮助。
答案 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);
希望这有帮助