使用动画时如何避免眨眼视图?

时间:2012-10-09 11:37:25

标签: android android-animation

我使用翻译和旋转动画将View置于FrameLayout事件的onCreate内。我希望动画立即执行,因此我将它们的持续时间设置为0.但是当应用程序启动时,屏幕左上角的View会短暂闪烁,然后根据动画参数定位。我该如何避免这种眨眼?

5 个答案:

答案 0 :(得分:4)

根据您的需要使用animation.setFillAfter(true)animation.setFillBefore(true)。这应解决闪烁

答案 1 :(得分:4)

我花了一整天的时间来解决这个问题。 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);
        }

答案 2 :(得分:2)

在动画文件的父标记内添加标记会导致此问题,只需使用一个标记即可尝试,您将看到差异。我现在正在处理这个问题

答案 3 :(得分:0)

Odaym's answer is the solution for the issue actually. If you have something like that:

<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>

Change it into this:

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

答案 4 :(得分:0)

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

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