android-封装一个加载处理的handler类

来源:互联网 发布:传智大数据百度云 编辑:程序博客网 时间:2024/06/06 00:58
public class LoadHandler extends Handler {    private LoadListener listener;    public LoadHandler(Looper looper) {        super(looper);    }    public LoadHandler(LoadListener listener) {        this.listener = listener;    }    public LoadHandler(Looper looper,LoadListener listener) {        super(looper);        this.listener = listener;    }    public LoadHandler() {    }    @Override    public void handleMessage(Message msg) {        super.handleMessage(msg);        Bundle bundle = msg.getData();        switch (msg.what) {        case Constants.LOAD_START:// 开始加载            if (listener != null) {                listener.onStart();            }            break;        case Constants.LOAD_SUCCESS:// 加载成功            if (listener != null) {                Object result = null;                if(bundle!=null){                    result = bundle.get("result");                }                listener.onSuccess(result);            }            break;        case Constants.LOAD_FAIL:// 加载失败            if (listener != null) {                Object result = null;                if(bundle!=null){                    result = bundle.get("result");                }                listener.onFail();                listener.onFail(result);            }            break;        case Constants.LOAD_Littile_DATA:// 数据量少            if (listener != null) {                Object result = null;                if(bundle!=null){                    result = bundle.get("result");                }                listener.onLittleData(result);            }            break;        case Constants.LOAD_HALF:// 加载一半            if (listener != null) {                Object result = null;                if(bundle!=null){                    result = bundle.get("result");                }                listener.onHalfLoad(result);            }            break;        default:            break;        }    }}
/** * 一个抽象的加载监听接口 * @author xiaoqian.hu * */public interface LoadListener {    void onStart();    void onLoading();    void onFail();    void onFail(Object result);    void onSuccess(Object result);    /**     * 数据没有加载完成,但是足够程序使用时的回调     * @param result     */    void onHalfLoad(Object result);    void onLittleData(Object result);}
public class LoadListenerImpl implements LoadListener {    private Context context;    private Dialog mProgressDialog;    public LoadListenerImpl() {    }    public LoadListenerImpl(Context context) {        this.context = context;        if (context != null) {            initProgressDialog(null);        }    }    public LoadListenerImpl(Context context, String Message) {        this.context = context;        if (context != null) {            initProgressDialog(Message);        }    }    @Override    public void onFail() {        dimiss();    }    @Override    public void onFail(Object result) {        dimiss();    }    @Override    public void onStart() {        show();    }    @Override    public void onLoading() {    }    private void dimiss() {        try {            if (null != mProgressDialog && mProgressDialog.isShowing()) {                mProgressDialog.dismiss();            }        } catch (Exception e) {            e.printStackTrace();        }    }    private void show() {        if (null != mProgressDialog && !mProgressDialog.isShowing()) {            mProgressDialog.show();            mProgressDialog.setContentView(R.layout.custom_progress_dlg);        }    }    private void initProgressDialog(String msg) {        if (null == this.mProgressDialog) {            // HHL modified @0819 to optimize loading effect            ProgressDialog progressDialog = new ProgressDialog(context);            progressDialog.setCanceledOnTouchOutside(false);            progressDialog.setCancelable(false);            this.mProgressDialog = progressDialog;        }    }    @Override    public void onSuccess(Object result) {        dimiss();    }    @Override    public void onHalfLoad(Object result) {        dimiss();    }    @Override    public void onLittleData(Object result) {        dimiss();    }}
1 0
原创粉丝点击