RoboAsyncTask自定义加载动画

时间:2013-06-09 18:57:46

标签: android roboguice

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

}

}

启动此代码,我看到在加载联系人之前在我的片段上加载动画

1 个答案:

答案 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));
}