我正在使用AnimationSet来做很多翻译动画。在这个例子中,我想将ImageView从0移动到700(屏幕外),从-700移动到0(视图移动到最右边,从最左边重新进入)。我使用这段代码:
AnimationSet set = new AnimationSet(true);
set.setInterpolator(new AccelerateDecelerateInterpolator());
set.setFillEnabled(true);
if(traject!=null){
TranslateAnimation tmpAnim = null;
set.setDuration(duration);
int d = traject.size()!=0 ? duration/traject.size() : duration;
for(int i =0; i<traject.size();i++){
tmpAnim = new TranslateAnimation( traject.get(i).getStartX(),
traject.get(i).getEndX(),
traject.get(i).getStartY(),
traject.get(i).getEndY() );
tmpAnim.setDuration(d);
tmpAnim.setFillAfter(true);
tmpAnim.setStartOffset(d*i);
set.addAnimation(tmpAnim);
}
}
但是在我的测试示例中,动画从-700到700.我尝试使用setStartTime()而不是setStartOffset()来切换TranslateAnimations的顺序,跳过对setStartOffset()的调用,结果是相同的。你对我失踪了吗?