package com.emn.emf.android.basecommands.loading; import org.json.JSONException; import org.json.JSONObject; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import com.emn.emf.android.AndroidBaseActivity; import com.emn.emf.android.CommandObject; import com.emn.emf.android.R; public class Loading extends AndroidBaseActivity implements CommandObject { private ProgressDialog myDialog2 = null; private ProgressDialog myDialogTime = null; private long time = 0,time2 = 0,time3 = 0; private CustomDialog cd; private Dialog cd2; public AlertDialog alertDialog; private String showCenterTipTitle = "",showCenterTipTitle2 = "",showCenterTipTitle3 = "",showCenterTipTitle4 = ""; private String showCenterTipTime = "",showCenterTipTime2 = "",showCenterCallback3 = null,showCenterTipContent3 = ""; private String showCenterTipContent = "",showCenterTipContent2 = "" ,showCenterTipTimeTitle = "";; private String showCenterCallback4 = null,showCenterTipContent4 = ""; private String showCenterTipTimeTime = "",showCenterTipTiemContent = "",showCenterCallback = ""; private Handler mHandler = new Handler(); @Override public Boolean checkValidation(String checkCommand, Object parameters) { // TODO Auto-generated method stub return Boolean.TRUE; } /* * (non-Javadoc) * @see com.emn.emf.android.CommandObject#handleIt(java.lang.String, java.lang.Object) */ @Override public Object handleIt(String checkCommand, Object parameters) { String jsonstartLoad = ""; if (checkCommand.equals("startLoad")) { jsonstartLoad = getStartLoad(parameters); } else if (checkCommand.equals("finishLoad")) { jsonstartLoad = getFinishLoading(); } else if (checkCommand.equals("showCenterTipMyTwoButton")) { jsonstartLoad = getshowCenterTipMyTwoButton(parameters); } else if (checkCommand.equals("showCenterTipMyTime")) { jsonstartLoad = getshowCenterTipMyTime(parameters); } else if (checkCommand.equals("showCenterTipButtonTwo")) { jsonstartLoad = getshowCenterTipButtonTwo(parameters); } else if (checkCommand.equals("showCenterTipButtonOne")) { jsonstartLoad = getshowCenterTipBttonOne(parameters); }else if (checkCommand.equals("showCenterTipTimeSystem")) { jsonstartLoad = getshowCenterTipTimeSystem(parameters); } return jsonstartLoad; } /* * 启动对话框,带有系统默认旋转图片,可以自定义标题,和内容提示部分。 */ private String getStartLoad(Object parameters) { String loadingTitle = ""; String loadingContent = ""; String strJSONParam = parameters.toString(); JSONObject jsonObject; try { jsonObject = new JSONObject(strJSONParam); loadingTitle = jsonObject.getString("title"); loadingContent = jsonObject.getString("content"); } catch (JSONException e1) { e1.printStackTrace(); } CharSequence strDialogTitle = (CharSequence) loadingTitle; CharSequence strDialogBody = (CharSequence) loadingContent; // 显示Progress对话框 myDialog2 = ProgressDialog.show(AndroidBaseActivity.self, strDialogTitle, strDialogBody, true); return "{states:success}"; } /* * 加载Loading效果,你可以自定义指定标题,内容。但没有自动取消。 * 如果需要取消需要调用JS方法finishLoading()进行取消。 */ private String getshowCenterTipTimeSystem(Object parameters) { String strJSONParam = parameters.toString(); JSONObject jsonObject; try { jsonObject = new JSONObject(strJSONParam); showCenterTipTimeTitle = jsonObject.getString("title"); showCenterTipTimeTime = jsonObject.getString("time"); showCenterTipTiemContent = jsonObject.getString("content"); time2 = Long.parseLong(showCenterTipTimeTime); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } CharSequence strDialogTitle = (CharSequence) showCenterTipTimeTitle; CharSequence strDialogBody = (CharSequence) showCenterTipTiemContent; // 显示Progress对话框 myDialogTime = ProgressDialog.show(AndroidBaseActivity.self, strDialogTitle, strDialogBody, true); new Thread() { public void run() { try { sleep(time2); } catch (Exception e) { e.printStackTrace(); } finally { // 卸载所创建的myDialog对象。 myDialogTime.dismiss(); } } }.start(); // 开始运行运行线程 return "{states:success}"; } /* * 取消Loading效果,和getshowCenterTipTime(Object parameters)配对使用。 */ private String getFinishLoading() { if(myDialog2 == null) { return "{states:success}"; } myDialog2.dismiss(); return "{states:success}"; } /* * 自定义dialog,按确定,可以指定执行JS方法,可以指定标题,内容。 * 暂时不支持指定时间,需要的话可以随时添加; */ private String getshowCenterTipMyTwoButton(Object parameters) { String strJSONParam = parameters.toString(); JSONObject jsonObject; try { jsonObject = new JSONObject(strJSONParam); showCenterTipTitle = jsonObject.getString("title"); showCenterTipTime = jsonObject.getString("time"); showCenterTipContent = jsonObject.getString("content"); showCenterCallback = jsonObject.getString("callback"); time = Long.parseLong(showCenterTipTime); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } cd = new CustomDialog(AndroidBaseActivity.self); cd.show(); return "{states:success}"; } /* * 自定义对话框 */ class CustomDialog extends Dialog { public CustomDialog(Context context) { super(context); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_dialog); setTitle(showCenterTipTitle); TextView text = (TextView) findViewById(R.id.text); text.setText(showCenterTipContent); ImageView image = (ImageView) findViewById(R.id.image); image.setImageResource(R.drawable.icon); Button buttonYes = (Button) findViewById(R.id.button_yes); buttonYes.setHeight(5); buttonYes.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { dismiss(); mHandler.post(new Runnable() { public void run() { getWebView().loadUrl( "javascript:" + showCenterCallback); } }); } }); Button buttonNo = (Button) findViewById(R.id.button_no); buttonNo.setSingleLine(true); buttonNo.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { dismiss(); } }); } } /* * 自定义dialog,可以指定执行时间长度,标题,内容部分支持最大48*48像素PNG图片。 * */ private String getshowCenterTipMyTime(Object parameters) { String strJSONParam = parameters.toString(); JSONObject jsonObject; try { jsonObject = new JSONObject(strJSONParam); showCenterTipTitle2 = jsonObject.getString("title"); showCenterTipTime2 = jsonObject.getString("time"); showCenterTipContent2 = jsonObject.getString("content"); // showCenterCallback = jsonObject.getString("callback"); time3 = Long.parseLong(showCenterTipTime2); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } cd2 = new CustomDialog2(AndroidBaseActivity.self); cd2.setContentView(R.layout.custom_dialog2); cd2.setTitle(showCenterTipTitle2); cd2.show(); new Thread() { public void run() { try { sleep(time3); } catch (Exception e) { e.printStackTrace(); } finally { // 卸载所创建的myDialog对象。 cd2.dismiss(); } } }.start(); // 开始运行运行线程 return "{states:success}"; } class CustomDialog2 extends Dialog { public CustomDialog2(Context context) { super(context); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_dialog2); TextView text = (TextView) findViewById(R.id.text); text.setText(showCenterTipContent2); ImageView image = (ImageView) findViewById(R.id.image); image.setImageResource(R.drawable.icon); } } /* * 系统dialog的封装,可以指定执行时间,标题,内容。 * 有确定按钮,和取消按钮,点击确定时执行一个JS方法,取消不执行。 * */ private String getshowCenterTipButtonTwo(Object parameters) { String strJSONParam = parameters.toString(); JSONObject jsonObject; try { jsonObject = new JSONObject(strJSONParam); showCenterTipTitle3 = jsonObject.getString("title"); //showCenterTipTime3 = jsonObject.getString("time"); showCenterTipContent3 = jsonObject.getString("content"); showCenterCallback3 = jsonObject.getString("callback"); //time4 = Long.parseLong(showCenterTipTime3); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } new AlertDialog.Builder(AndroidBaseActivity.self) .setTitle(showCenterTipTitle3)//.setView(view) .setMessage(showCenterTipContent3) .setPositiveButton("确定", new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialoginterface, int i){ getWebView().loadUrl( "javascript:" + showCenterCallback3); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialoginterface, int i){ } }) .show(); return "{states:success}"; } /* * 系统dialog的封装,可以指定执行时间,标题,内容。 * 只有确定按钮,,点击确定时执行一个JS方法。 * */ private String getshowCenterTipBttonOne(Object parameters) { String strJSONParam = parameters.toString(); JSONObject jsonObject; try { jsonObject = new JSONObject(strJSONParam); showCenterTipTitle4 = jsonObject.getString("title"); //showCenterTipTime3 = jsonObject.getString("time"); showCenterTipContent4 = jsonObject.getString("content"); showCenterCallback4 = jsonObject.getString("callback"); //time4 = Long.parseLong(showCenterTipTime3); } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } new AlertDialog.Builder(AndroidBaseActivity.self) .setTitle(showCenterTipTitle4)//.setView(view) .setMessage(showCenterTipContent4) .setPositiveButton("确定", new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialoginterface, int i){ getWebView().loadUrl( "javascript:" + showCenterCallback4); } }) .show(); return "{states:success}"; } }
2.custom_dialog.xml的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/bg3" android:padding="10dp" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="2px" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFF" android:paddingTop="12dp" /> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:padding="5px" > <Button android:id="@+id/button_yes" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 确定 " /> <Button android:id="@+id/button_no" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" 取消 " /> </LinearLayout> </LinearLayout>
3.custom_dialog2.xml的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dp" android:background="@drawable/bg3" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2" android:padding="2px" > <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="2dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="18px" android:gravity="center_horizontal" /> </LinearLayout> </LinearLayout>
4.main.js代码
//加载效果,你可以自定义指定标题,内容。但没有自动取消。如果需要取消需要调用JS方法finishLoading() function getStartLoading(){ return emf.makeCall('startLoading.startLoad', "{title:'联系人',content:'请您稍等正在加载联系人...'}"); } //与上面方法一对,负责关闭上面的方法。 function finishLoading(){ return emf.makeCall('startLoading.finishLoad', "{}"); } //自定义dialog,可以指定执行JS方法,可以指定标题,内容。暂时不支持指定时间,需要的话可以随时添加 function showCenterTipMyTwoButton(){ return emf.makeCall('startLoading.showCenterTipMyTwoButton', "{title:'操作成功',content:'操作成功信息部分',time:'5000',callback:'showCenterTipMyTime()'}"); } //自定义dialog,可以指定执行时间,标题,内容。内容部分支持最大48*48像素PNG图片 function showCenterTipMyTime(){ return emf.makeCall('startLoading.showCenterTipMyTime', "{title:'操作成功时间',content:'时间操作成功信息部分',time:'5000'}"); } //系统dialog的封装,可以指定执行时间,标题,内容。有确定,执行一个JS方法,取消不执行。 function showCenterTipButtonTwo(){ return emf.makeCall('startLoading.showCenterTipButtonTwo', "{title:'操作标题',content:'时间操作成功信息部分呵呵!',callback:'showCenterTipButtonOne()'}"); } function showCenterTipButtonOne(){ return emf.makeCall('startLoading.showCenterTipButtonOne', "{title:'操作标题',content:'时间操作成功信息部分呵呵!',callback:'showCenterTipButtonTwo()'}"); } //系统自带的Dialog,但可以指定执行时间,标题,内容。 function showCenterTipTimeSystem(){ return emf.makeCall('startLoading.showCenterTipTimeSystem', "{title:'恭喜操作成功',content:'操作成功信息部分',time:'5000'}"); }
5.index.html页面代码