我试图为每个ProgressBar
项目显示ListView
一个简单的动画,但是
当我滚动时,ProgressBar
动画停止。滚动结束后,动画再次开始。
见下图。
答案 0 :(得分: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;
}
答案 1 :(得分: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) {
}
}
谢谢。
答案 2 :(得分:3)
它正在停止,因为当列表项可见时,会一次又一次地调用getview,从而重置视图以避免设备上的任何帧跳过/滞后。
你需要做的是创建一个带有boolean的视图持有者并将其设置为视图的标记..每次是动画布尔值应该是true而false当它停止时..所以当getview被调用时你的进度条动画仍在开始或停止,具体取决于布尔值..