滚动时停止Listview项目动画

16

我正在尝试为每个ListView项显示一个简单的动画,来展示ProgressBar,但是当我滚动时,ProgressBar的动画会停止。当滚动结束后,动画又重新开始了。请参见下面的图片。

Link
(来源: axgig.com)


1
对于因不清楚 OP 在问什么而发起的关闭投票,我认为相反是非常明显的。他想知道如何在滚动发生时保持进度条动画。 - rds
3个回答

13

你必须在getView()方法中使用动画,并为convertView设置动画 例如:

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

    StructureArticles item = getItem(position);
    if (convertView == null) {
        convertView = G.inflater.inflate(R.layout.adapter_articles, parent, false);
        holder = new ViewHolder(convertView);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.fill(this, item, position);
    Animation animationListView = AnimationUtils.loadAnimation(context, R.anim.scale_fade_in);
    convertView.startAnimation(animationListView);

    return convertView;
}

10

我在适配器中使用了这个语法,问题得到解决!

public class AdapterDownload extends ArrayAdapter<StructDownload> {

public AdapterDownload(ArrayList<StructDownload> array) {
    super(G.context, R.layout.item_layout, array);
}


private static class ViewHolder {

    public ViewHolder(View view)
    {

    }


    public void fill(final ArrayAdapter<StructDownload> adapter, final StructDownload item, final int position)
    {

    }
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {

}

}

谢谢。


3

它会停止是因为当列表项可见时,getview被反复调用,从而重置视图以避免设备上的任何帧跳过/延迟。

你需要做的是创建一个带有布尔值的视图持有者,并将其设置为视图的标记。每次动画时布尔值应该为true,停止时为false。所以当getview被调用时,你的进度条动画仍在开始或停止,具体取决于布尔值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接