Android开发时我们需要使用到网络请求,大部分请求需要一个加载圈提示用户正在加载,我做了一个粗糙的请求加载供大家参考。
public class XutilsHttpPost { //加载弹框 private Dialog dialog; //弹框内的布局 private RelativeLayout view; //弹框显示页面 private Context context; public XutilsHttpPost() { context = null; } //构造方法(参数可以传null,传null时与上一个构造方法相同,代表该请求不显示加载弹框) public XutilsHttpPost(Context context) { this.context=context; } //弹框操作(弹框操作只能在主线程里进行,切记!) private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //判断是否需要创建弹框 if (dialog == null&&context!=null){ //弹框样式很粗糙可以改变 dialog = new Dialog(context,R.style.customDialog); //创建显示内容 view = new RelativeLayout(context); view.setGravity(Gravity.CENTER); ProgressBar progressBar = new ProgressBar(MyApplication.getContext()); view.addView(progressBar); dialog.setContentView(view); } //判断弹框是否需要显示以及开启或者关闭 if (context != null) { if (dialog.isShowing()) dialog.dismiss(); else dialog.show(); } } }; //判断网络是否连接:返回值 -1:没有网络 1:WIFI网络2:wap网络3:net网络 public int GetNetype() { int netType = -1; ConnectivityManager connMgr = (ConnectivityManager) MyApplication.getContext().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); if(networkInfo==null) { return netType; } int nType = networkInfo.getType(); if(nType==ConnectivityManager.TYPE_MOBILE) { if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet")) { netType = 3; } else { netType = 2; } } else if(nType==ConnectivityManager.TYPE_WIFI) { netType = 1; } return netType; } /** * 返回jsonobject的接口(这里只有成功后返回数据的参数,可以加一个成功或失败的参数) */ public interface GetJson{ void getjson(JSONObject obj); } /** * 请求方法 * @param uri 路径 * @param params 参数 (只是将RequestParams封装了一下方便查看参数内容) * public class MParams extends RequestParams { *private Map<String,String> map; * *public MParams() { *map = new HashMap<String, String>(); *} *public void add(String name, String value){ *addBodyParameter(name,value); *map.put(name,value); *} *@Override *public String toString() { *return map.toString(); *} *} * @param getJson 接收接口 */ public void Post(final String uri, final MParams params, final GetJson getJson){ if (GetNetype() == -1){ ToastUtil.show("请检查网络是否开启!"); return; } //默认传入用户Token params.add("token", UserInfo.Token);//"26245f1ae9114772b2449630ed3185f8"); //传入了超时时间 HttpUtils http = new HttpUtils(20000); http.send(HttpRequest.HttpMethod.POST, uri, params, new RequestCallBack<String>() { @Override public void onStart(){ if (context != null) handler.sendMessage(new Message()); } @Override public void onLoading(long total, long current, boolean isUploading) { if (isUploading) { } else { } } @Override public void onSuccess(ResponseInfo<String> responseInfo) { if (context != null) handler.sendMessage(new Message()); L.d("返回参数》",responseInfo.result+"《"); //判断返回数据是否为空 if (responseInfo.result.length() != 0) { try { JSONObject jsonObject = JSONObject.parseObject(responseInfo.result); if (!jsonObject.getBoolean("success")) { ToastUtil.show(jsonObject.getString("message")); } //将数据传入页面 getJson.getjson(jsonObject); } catch (JSONException e) { L.d("异常",e.getMessage()); ToastUtil.show("返回参数格式错误"); L.d("请求路径-----》" + uri); L.d("返回参数-----》" + responseInfo.result); } }else { L.d("收到参数为空"); } } @Override public void onFailure(HttpException error, String msg) { if (context != null) handler.sendMessage(new Message()); ToastUtil.show("网络请求失败"); L.d("请求路径-----》" + uri+"?"+params.toString()); L.d("————————————————————错误信息————————————",msg); L.d("————————————————————网络请求失败errorCode————————————",""+error.getExceptionCode()); } }); } }样式比较粗糙,希望能给大家提供思路。