您的位置:首页 > 移动开发 > Android开发

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

2017-04-18 10:19 260 查看
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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class android-handler