5

我使用平移和旋转动画View在事件FrameLayout中定位。onCreate我希望动画立即执行,所以我将它们的持续时间都设置为 0。但是当应用程序启动时,我View在屏幕的左上角会短暂闪烁,然后它会根据动画参数定位。我怎样才能避免这种眨眼?

4

5 回答 5

6

我花了一整天的时间来解决这个问题。fillAfter 和 fillBefore 与此无关。在动画开始之前试试这个:

view.setVisibility(View.GONE); // view is our View we trying to animate

然后为您的动画设置动画侦听器:

    animation.setAnimationListener(new AnimationListener(){
        public void onAnimationEnd(Animation animation) {
        }

        public void onAnimationRepeat(Animation animation) {
        }

        public void onAnimationStart(Animation animation) {
            v.setVisibility(View.VISIBLE);
        }
于 2012-10-26T07:07:02.283 回答
4

使用animation.setFillAfter(true)animation.setFillBefore(true),具体取决于您的需要。这应该可以解决眨眼问题

于 2012-10-09T11:40:34.533 回答
2

在你的动画文件的父标签内有一个标签会导致这种情况,只用一个标签试试,你会看到区别。我现在正在处理这个

于 2015-05-19T18:25:17.827 回答
0

Odaym 的答案实际上是该问题的解决方案。如果你有这样的事情:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="true">
    <set
        android:duration="1000">
        <translate
            android:fromXDelta="100%"
            android:toXDelta="0"
            />
    </set>
</set>

把它改成这样:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="true" android:duration="1000">
        <translate
            android:fromXDelta="100%"
            android:toXDelta="0"
            />
</set>
于 2016-10-20T13:14:17.823 回答
0

设置动画执行代码后的可见性但不在“onAnimationEnd”中,也尝试设置持续时间

view.setVisibility(View.VISIBLE); // view is our View we trying to animate
于 2017-11-30T09:51:59.277 回答