2012-03-14 82 views
5

我的目标是动画某些ListView项目,而不必担心getView会将动画替换为自定义ArrayAdapter中新膨胀项目的列表项目。为某些ListView项目设置动画

如果我使用convertView来避免膨胀新项目,动画的顺序随机更改。

缓存视图手动工作正常,但我怀疑这是一个很好的解决方案。更好的想法?

回答

4

我所做的是在convertview中设置动画,然后停止每个convertview上的动画。这样,如果convertview是新的,动画将停止并播放,如果在结束之前未循环,则继续播放直到结束。

编辑我似乎无法找到一个例子,所以它将部分伪代码。

在适配器的时候就会有类似以下内容:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    final ViewHolder holder; 

    if(convertView == null) { 
     // setup holder 
     holder = new ViewHolder(); 

     LayoutInflater Inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = Inflater.inflate(mResourceId, null); 

     holder.image = (ImageView) convertView.findViewById(R.id.row_image); 
     holder.headline = (TextView) convertView.findViewById(R.id.row_headline); 

     convertView.setTag(holder); 
    } else { 
     // get existing row view 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    // GetView is only called on new items 
    // so now we stop the previous animation and start a new 
    holder.animation.stop(); // First you stop the animation 
    holder.animation = new animation(); // then you create new 
    holder.animation.start(); // then you start the animation. 
+0

你能提供的示例代码的东西? – 2012-10-10 22:47:41

+0

@ AshrafSayied-Ahmad我添加了一个小例子,它不完美,但你可以开玩笑。 – Warpzit 2012-10-11 08:11:54

相关问题