为了总结和简化我的问题,我尝试设置根视图的动画,然后设置子视图的动画。 第一个动画效果很好,但是大部分时间都保持不变。
布局:
<FrameLayout
android:id="@+id/container"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
示例代码:
TranslateAnimation translateAnimation=new TranslateAnimation(0, 0, 0, 300);
translateAnimation.setDuration(2000);
translateAnimation.setFillAfter(true);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotateAnimation.setInterpolator(new LinearInterpolator());
rotateAnimation.setDuration(750);
rotateAnimation.setRepeatCount(Animation.INFINITE);
rotateAnimation.setRepeatMode(Animation.RESTART);
imageView.startAnimation(rotateAnimation);
}
@Override
public void onAnimationRepeat(Animation animation) { }
});
container.startAnimation(translateAnimation);
有时候我会看到imageview倾斜。或旋转,但只是一个部分。 有人知道发生了什么?
我也尝试使用setFilterAfter(false)并在onAnimationEnd上使用setTranslationY()移动我的容器,但是有些帧是可见的。
感谢。
修改
在实际情况中,TranslateAnimation在ViewPager的片段内的ViewPager(到QuickReturn模式)和RotateAnimation(到PullToRefresh模式)上。 因此,动画不一定像我上面所做的那样顺序,并且强烈分离(ViewPager / Fragment)。
EDIT2
我只是看到触摸区域不随视图移动。
答案 0 :(得分:0)
我不是说它会去上班,但让我们试一试:
让我们分开动画,而不是用animationListener链接它们;所以相反,让我们使用ObjectAnimator和AnimationSet帮助我们为我们排序动画。
ObjectAnimator translateContainer = ObjectAnimator.ofFloat(container, "translationY", 300);
translateContainer.setDuration(2000);
ObjectAnimator rotateImage = ObjectAnimator.ofFloat(imageView, "rotation", 0f, 360f);
rotateImage.setDuration(750);
AnimatorSet animSet = new AnimatorSet();
animSet.playSequentially(translateContainer, rotateImage);
animSet.start();