我想为列表添加动画,它将隐藏在屏幕下,bottomMargin为负值
然后,当我单击一个按钮时,对其进行动画处理,然后在完成动画“ onAnimationEnd”后,我修改边距以使其在动画结束的位置停止。

向下动画时效果很好,-ve之后我什么都看不到

但是,要使它充满生气,它的作用远不止于此,并且修改边距会产生不好的效果,“因为它没有停止在必须的位置”
这是我在做什么

动画向下:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <!-- same animation, linear interpolator -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:toYDelta="25%p"
        android:duration="500"
     />
</set>


动画效果:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <!-- same animation, linear interpolator -->
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:toYDelta="-25%p"
        android:duration="500"
     />
</set>


该代码在onAnimationEnd中运行:

MarginLayoutParams params = (MarginLayoutParams) playerLayout.getLayoutParams();
if (params.bottomMargin == 0) {
params.setMargins(0, 0, 0, playerLayout.getHeight()* -1);
} else {
params.setMargins(0, 0, 0, 0);
}
playerLayout.setLayoutParams(params);


怎么了!!!
在动画上,动画区域开始正常显示,然后突然比正常位置快速上升,然后更改边距使其突然重新定位到正常位置。

这里是显示问题https://dl.dropbox.com/u/51616029/irrelevant/20121005323.mp4的视频的链接

最佳答案

首先尝试将要设置动画的View放置在布局的最终​​位置,并将其初始可见性设置为invisible(在xml中使用android:visibility="invisible"或在代码中使用setVisibility(INVISIBLE))。准备好为视图设置动画时,只需在启动动画时使视图可见即可。

onStartAnimation(Animation animation) {
    myView.setVisible(VISIBLE);
}


而您的动画可能只是

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fromYDelta="-100%p"
    android:toYDelta="0"
    android:duration="500"
 />


这样,您完全不必担心进行复杂的布局更改。

07-28 09:29