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