gpt4 book ai didi

android-如何使用仅在开始时有效的偏移量重复动画

转载 作者:行者123 更新时间:2023-11-29 02:31:59 25 4
gpt4 key购买 nike

我有一系列 View ,我正在尝试使用相同的动画但在开始时使用不同的延迟来为所有 View 设置动画:

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) 但它每次都会发生(在每次重复时他们都有延迟)而且不仅仅是在动画开始时所以他们离开了同步。

我想暗示只在开始时延迟一次。

最佳答案

延迟很糟糕

如果您将 View 插入到 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);

...

这将按照您想要的方式一个接一个地为 View 设置动画

但是,如果您使用的是 RecyclerView,则可以使用 ViewHolder 来执行此操作。

而且,如果您根本不使用任何类型的列表,那将不会产生效果,您必须使用大量的 DELAYS,而 DELAYS 很糟糕

尽量避免延迟并改用列表

另外,ObjectAnimators 非常强大,所以要仔细研究它们才能在动画中达到最佳效果

关于android-如何使用仅在开始时有效的偏移量重复动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49158217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com