简体   繁体   中英

How to avoid blink of View when using animation?

I use translate and rotate animations to position View inside FrameLayout in onCreate event. I want animations to perform instantly so I set duration for both of them to 0. But when application starts there is a short blink of my View in top left corner of screen and then it becomes positioned according to animation parameters. How can I avoid this blink?

I spent whole day with that problem. fillAfter and fillBefore has nothing to do with that. Try this before animation start:

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

Then set animation listener for your animation:

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

        public void onAnimationRepeat(Animation animation) {
        }

        public void onAnimationStart(Animation animation) {
            v.setVisibility(View.VISIBLE);
        }

use animation.setFillAfter(true) or animation.setFillBefore(true) , depending on your needs. This should resolve the blink

Having a tag inside the parent tag of your animation file will cause this, try it with only one tag and you will see the difference. I am working with this right now

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>

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM