1

我想为一个列表设置动画,它将隐藏在屏幕下方,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);

怎么了!!!在animation up中,动画区域开始正常出现,然后突然比正常位置快速上升,然后修改margin使其突然重新定位到正常位置。

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

4

1 回答 1

0

尝试将View要设置动画的对象放在布局中的最终位置,然后将其初始可见性设置为不可见(在带有 的 xmlandroid: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"   
 />

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

于 2012-10-03T04:44:01.070 回答