所以在我的Android应用程序中,我有一个可以显示图像的HorizontalScrollView。所有图像都会下载并添加到视图中,然后才能供用户使用。然而,当它发生时,我希望每个图像都能分开制作动画。我已经尝试使用此代码附加到我的布局的LayoutTransition对象来显示视图:
transition = new LayoutTransition();
transition.setStagger(LayoutTransition.APPEARING, 500);
transition.setDuration(1000);
transition.setAnimateParentHierarchy(true);
for (int i = 0; i < mGallery.getChildCount(); i++) {
mGallery.getChildAt(i).setVisibility(View.VISIBLE);
transition.showChild(mGallery, mGallery.getChildAt(i));
}
我也使用了AnimationEndListener和递归的animateView()方法尝试了这个方法
private void animateView(final int index) {
if (mGallery.getChildAt(index) == null)
return;
final View child = mGallery.getChildAt(index);
final Animation an = AnimationUtils.loadAnimation(mRootView.getContext(), R.anim.slideup);
AnimationEndListener listener = new AnimationEndListener() {
@Override
public void onAnimationEnd(Animation animation) {
animateView(index + 1);
}
};
an.setAnimationListener(listener);
child.setAnimation(an);
child.setVisibility(View.VISIBLE);
an.start();
}
第一种方法是优选的,但它总是在我的所有图像中同时动画。第二种方法有效,但它会将动画应用于第一个视图,所有后续视图将按顺序出现而不播放动画。