我已经扩展了RoboAsyncTask实现了所有需要的方法,但是数据加载时它显示了默认的加载动画。
我已经创建了自定义加载对话框,但默认情况下仍在显示片段上加载动画。有可能将其删除吗?或者改变动画图像?
public class ContactFragment extends RoboSherlockListFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ContactLoadingTask contactLoadingTask = new ContactLoadingTask(this.getActivity());
contactLoadingTask.execute();
}
private class ContactLoadingTask extends RoboAsyncTask<List<Contact>> {
@Inject
ContactParser contactParser;
protected ContactLoadingTask(Context context) {
super(context);
}
@Override
public List<Contact> call() throws Exception {
return contactParser.getContacts();
}
@Override
protected void onSuccess(List<Contact> contacts) throws Exception {
setListAdapter(new ContactArrayAdapter(ContactFragment.this.getActivity(), contacts));
}
}
}
启动此代码,我看到在加载联系人之前在我的片段上加载动画
答案 0 :(得分:0)
RoboAsyncTask
不处理任何动画或用户可见的任何动画。它只在后台线程中执行代码。
我认为,当您致电ListFragment
时,setListAdapter()
会自动播放您正在谈论的动画,如setListShown()
方法documentation
可悲的是,您似乎无法覆盖此动画,因此您可能必须使用标准片段并自行管理ListView。您可以查看source code of ListFragment以了解如何完成此操作
如果您只想停用动画,可以在设置列表适配器之前尝试使用setListShownNoAnimation
:
@Override
protected void onSuccess(List<Contact> contacts) throws Exception {
setListShownNoAnimation(true);
setListAdapter(new ContactArrayAdapter(ContactFragment.this.getActivity(), contacts));
}