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