我正在开发一个有四个可能答案的问题游戏。每个答案都是TextView。我想要的是,在用户选择答案之后,在显示下一个问题之前,与答案相关联的文本框在屏幕上留下右边的动画,但是以顺序的方式延迟很小。下面是一个如何的例子:
---------
| Answer 1 |
----------
---------
| Answer 2 |
----------
----------
| Answer 3 |
----------
为了安排每个答案视图的动画的开始,在一定的延迟之后,我使用Handler类。问题是,当运行代码时,屏幕的视图不是顺序延迟,它们同时离开屏幕而我没有达到预期的效果。显然我已经尝试增加延迟但是它没有解决问题。这是我使用的代码片段:
TextView answerViewA = (TextView) findViewById(R.id.textViewAnswerA);
TextView answerViewB = (TextView) findViewById(R.id.textViewAnswerB);
TextView answerViewC = (TextView) findViewById(R.id.textViewAnswerC);
TextView answerViewD = (TextView) findViewById(R.id.textViewAnswerD);
ArrayList<TextView> answerViewCollection = new ArrayList<TextView>(
4);
answerViewCollection.add(answerViewA);
answerViewCollection.add(answerViewB);
answerViewCollection.add(answerViewC);
answerViewCollection.add(answerViewD);
final Animation exitAnim = AnimationUtils.makeOutAnimation(
mContext, true);
final int delay = 200;
for (int i = 0; i < answerViewCollection.size(); i++) {
final View auxView = answerViewCollection.get(i);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
auxView.startAnimation(exitAnim);
}
}, delay * i);
}
我的限制是:android:minSdkVersion="10"
。我感谢任何建议:)
答案 0 :(得分:2)
问题似乎是您正在重复使用相同的Animation
实例为不同的视图设置动画。
Animation
对象不仅仅是一个动画描述,它是一个实时动画,拥有自己的动画状态。因此,如果您共享相同的Animation
实例,则共享相同的动画状态,因此在给定时间内进行相同的转换。
如果您的minSdkVersion
是10
,我认为正确的方法是使用专为
AnimationLayoutController
(...)为布局或视图组的子项设置动画。每个孩子使用相同的动画,但对于每一个孩子,动画都会在不同的时间开始。
您还可以创建许多具有不同延迟的Animation
个实例,但我不确定它是否是最佳的。
答案 1 :(得分:0)
你走了:
for (int i = 0; i < answerViewCollection.size(); i++) {
final View auxView = answerViewCollection.get(i);
final Animation exitAnim = AnimationUtils.makeOutAnimation(this,
true);
exitAnim.setDuration(1000);
exitAnim.setStartOffset(delay * i);
auxView.startAnimation(exitAnim);
auxView.setVisibility(View.INVISIBLE);
}