RoboAsyncTask自定义加载动画



我已经扩展了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));
    }
}
}

启动这段代码,我看到加载动画在我的片段加载之前

RoboAsyncTask does not处理任何动画,或任何用户可见的东西。它只在后台线程中执行代码。

我认为你所说的动画是由ListFragment在调用setListAdapter()时自动播放的,正如setListShown()方法文档

中所述

遗憾的是,它似乎不能覆盖这个动画,所以你可能不得不使用一个标准的片段和管理ListView自己。您可以查看ListFragment的源代码来了解这是如何完成的


如果你只是想禁用动画,你可以尝试在设置列表适配器之前使用setListShownNoAnimation:

@Override
protected void onSuccess(List<Contact> contacts) throws Exception {
    setListShownNoAnimation(true);
    setListAdapter(new ContactArrayAdapter(ContactFragment.this.getActivity(), contacts));
}

最新更新