如果我想在ListView的每个项目上添加一些延迟的动画,我使用LayoutAnimationController
并指定延迟。但这里的动画顺序只能是NORMAL,REVERSE或RANDOM。
我正在制作动画,假设ListView的行是1,2,3,4,5。然后当我触摸第3行时,动画应该从第3行 - >第2行 - > ROW1。 在文档中,它提到我们应该覆盖
protected int getTransformedIndex (LayoutAnimationController.AnimationParameters params)
用于自定义排序但是我没有从这个函数中获得什么值以及如何在这种情况下计算自定义排序?
有没有其他方法可以实现这个动画?
答案 0 :(得分:2)
可以这样完成自定义排序。
public class CustomAnimController extends LayoutAnimationController {
private float mDelay;
int mMiddlePosition;
private View mView;
private Context mContext;
public CustomAnimController(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomAnimController(Animation animation) {
super(animation);
}
public CustomAnimController(Context context,Animation animation, float delay) {
super(animation, delay);
mDelay=delay;
mContext=context;
}
@Override
protected long getDelayForView (View view){
ViewGroup.LayoutParams params=view.getLayoutParams();
LayoutAnimationController.AnimationParameters animationParameters=params.layoutAnimationParameters;
int index=getTransformedIndex(animationParameters);
return (long)(index*mDelay*200);
//return 0;
}
@Override
protected int getTransformedIndex (LayoutAnimationController.AnimationParameters params){
int index=params.index;
if(index==mMiddlePosition){
return 0;
}
for(int i=1;i<20;i++){
if(index==mMiddlePosition-i || index==mMiddlePosition+i){
return i;
}
}
return 0;
}
}