我是Android新手,我有9个ImageView
我希望透明。我使用AlphaAnimation
让它们褪色。它们确实褪色,但我想让它们一个接一个地消失。不幸的是,它们都在一起消失,我不知道为什么。
我尝试使用各种方法(包括CountDownTimer
,Thread.sleep()
,new Handler().postDelayed()
),但没有任何变化。所有的ImageViews都会同时淡出,而不是逐个淡出。我知道他们能够做到这一点,因为一个人的动画可以工作,但是这些视图的列表中的迭代最终会同时被动画化。
重要方法(我猜):
private void fadeImageTiles(List<ImageView> ivs) {
Collections.shuffle(ivs);
for (ImageView iv : ivs) {
//maybe there's problem with iteration?
gradientFade(iv);
}
}
private void gradientFade(ImageView iv){
AlphaAnimation animation = new AlphaAnimation(1f,0f);
animation.setDuration(2000);
iv.startAnimation(animation);
iv.setVisibility(View.INVISIBLE);
}
最后的效果是让它们随机褪色显露背后的图像
答案 0 :(得分:0)
您可以使用void setStartOffset (long startOffset)
指定视图应设置动画的时间长度。
例如:
private void fadeImageTiles(List<ImageView> ivs) {
Collections.shuffle(ivs);
for (int i = 0; i < ivs.size(); i++) {
//maybe there's problem with iteration?
gradientFade(ivs.get(i), i);
}
}
private void gradientFade(ImageView iv, int index){
AlphaAnimation animation = new AlphaAnimation(1f,0f);
animation.setDuration(2000);
animation.setStartOffset(index * 500);
iv.startAnimation(animation);
iv.setVisibility(View.INVISIBLE);
}
或者您可以使用ViewPropertyAnimator而无需编写太多代码。使用以下代码替换gradientFade
方法中的代码:
iv.animate().alpha(0).setDuration(2000).setStartDelay(index * 500);