【发布时间】:2014-07-14 15:12:04
【问题描述】:
我正在尝试为每个 ListView 项目显示 ProgressBar 一个简单的动画,但是
当我滚动时,ProgressBar 动画停止。滚动结束后,动画再次开始。
见下图。
(来源:axgig.com)
【问题讨论】:
-
对于接近投票,因为不清楚 OP 在问什么,我认为相反很明显。他想知道滚动发生时如何保持进度条动画。
我正在尝试为每个 ListView 项目显示 ProgressBar 一个简单的动画,但是
当我滚动时,ProgressBar 动画停止。滚动结束后,动画再次开始。
见下图。
(来源:axgig.com)
【问题讨论】:
您必须在 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;
}
【讨论】:
我在我的适配器中使用了这个语法并且问题解决了!
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) {
}
}
谢谢。
【讨论】:
它正在停止,因为当列表项可见时会一次又一次地调用 getview,从而重置视图以避免设备上的任何帧跳过/滞后..
您需要做的是创建一个带有布尔值的视图持有者并将其设置为视图的标签。每次动画停止时布尔值应该为真和假。所以当调用 getview 时,您的进度条动画仍然根据布尔值开始或停止..
【讨论】: