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.