停止动画从屏幕android取出我的视图

时间:2017-03-29 10:14:23

标签: android animation

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <Button
        android:id="@+id/bounceBallButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="Bounce Ball" />

    <ImageView
        android:id="@+id/bounceBallImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/bounceBallButton"
        android:src="@drawable/ball" />

</RelativeLayout>

这是我的动画代码来反弹我的imageview:

Button bounceBallButton = (Button) findViewById(R.id.bounceBallButton);
final ImageView bounceBallImage = (ImageView) findViewById(R.id.bounceBallImage);
bounceBallImage.clearAnimation();
TranslateAnimation transAnim = new TranslateAnimation(0, 0, 0, getDisplayHeight());
transAnim.setStartOffset(500);
transAnim.setDuration(3000);
transAnim.setFillAfter(true);
transAnim.setInterpolator(new BounceInterpolator());                
bounceBallImage.startAnimation(transAnim);

我的问题是动画将我的imageview带到了我的屏幕下方。我希望它能够点击我的屏幕底部并反弹而不是低于它。

1 个答案:

答案 0 :(得分:0)

您将Y位置设为getDisplayHeight()。这意味着,你告诉框架:

  

将此视图的最高Y位置设置为屏幕底部的动画。

框架正是你所说的。

您要做的是动画为getDisplayHeight() - bounceBallImage.getHeight()。但是一旦你这样做,你就会发现它会给你相同的结果。这是因为getHeight()返回0,因为你的视图没有被绘制,因此它没有高度。

请参阅here如何在测量后立即了解视图的高度。您正在使用getMeasuredHeight()而不是getHeight()