我有一系列视图,我尝试使用相同的动画制作所有视图但在开头有不同的延迟:
View[] arr;
for(int i=0;i<arr.length;i++)
{
Animation anim=new TranslateAnimation(0,0,0,-200);
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(300);
anim.setRepeatMode(2);
anim.setStartTime(startTime+i*1000);
arr[i].startAnimation(anim);
}
我也曾尝试使用setStartOffSet(i*100)
,但每次都会发生(每次重复都有延迟),而不仅仅是动画的开头,所以它们不同步。
我想在开始时只暗示一次延迟。
答案 0 :(得分:0)
延迟很糟糕
如果您将视图插入ListView,您只需要这样:
...
ListView list = (ListView) findViewById(...);
ArrayAdapter mAdapter = new ArrayAdapter < Item > (getContext(), R.layout.ITEM_LAYOUT, Your_itemArray) {
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View myView;
...
if (convertView == null) {
LayoutInflater inflater = getLayoutInflater();
myView = inflater.inflate(R.layout.ITEM_LAYOUT, parent, false);
...
} else {
myView = convertView;
}
// -----YOUR ANIMATION TIME--------------------------------------
ObjectAnimator anim = ObjectAnimator.ofFloat(myView, View.TRANSLATION_X, You_Desired_Distance, 0);
anim.setInterpolator(WHATEVER_INTERPOLATION_YOU_WANT);
anim.setDuration(300).start();
//---------------------------------------------------------------
return myView;
}
}
list.setAdapter(mAdapter);
...
&#13;
这将一个接一个地动画视图,就像你想要的那样
但是,如果您正在使用RecyclerView,则可以使用ViewHolder执行此操作。
如果你根本不使用任何类型的列表,那么这不会很有效率,你必须使用大量的DELAYS
和延迟是不好的
尝试避免延迟并使用列表
此外,ObjectAnimators是如此强大,所以仔细研究它们以获得最佳的动画效果